rest api默认访问端口(电脑的API是什么,是不是就是端口)
本文目录
- 电脑的API是什么,是不是就是端口
- rest系统前台访问是接口调用性能慢有什么优化思路和经验分享
- Cuckoo_v2.0.6 REST API使用
- 如何使用 Oauth 实现一个安全的 REST API 服务
- Spark Metrics
- API 入门 (18) 认识 REST
电脑的API是什么,是不是就是端口
API不是端口,API是面向程序设计人员的编程接口。API的本质是某个软件或系统提供给编程人员的一些预定义好的函数。有了这些函数,编程人员通过函数的使用规范来使用它们就可以实现这个程序的相应功能,这样,程序员只需要专注于自己程序的开发即可,而不需要关注提供API的这个程序内部究竟是如何实现功能的。因此,API相当于一个黑箱,只留一个外部操作接口给编程人员,而无需关注内部具体的实现细节。\x0d\x0a端口是计算机内部的程序用来连接网络的出口,是一个虚拟概念。计算机内的每个程序向外连接网络都要通过特定的端口,这样很容易将数据包归类整理而避免无法区分产生混乱。外网和计算机上的某个程序通信时,只需要知道该程序所用的端口号,通过这个端口收发信息即可,而不需要知道具体是哪个程序,它有什么样的属性。每个端口都有其特定作用,有些端口号是固定的,如80端口提供HTTP服务让你可以浏览网页,23端口提供远程登录和控制功能,53号端口提供DNS解析服务,让你通过输入网址就可以访问某个网址而不必输入该网站的IP地址。\x0d\x0a在计算机的命令提示符(CMD)中输入netstat -ano,可以查看当前所有被占用的端口的工作情况。在IP地址的冒号后面的部分就是端口号。\x0d\x0a修改端口是比较复杂的工作,要区分系统端口、应用端口和保留端口。有些可以修改,有些不能修改,而修改的方法也随不同的程序而异。
rest系统前台访问是接口调用性能慢有什么优化思路和经验分享
rest系统前台访问是接口调用性能慢有什么优化思路和经验分享访问REST资源对于REST模块提供的接口可以参考用户手册的 REST API 章节,有着详细的介绍(包括URL和参数含义)。2.1 身份认证REST接口的大部分功能都需要验证,默认使用 Basic Access Authentication(基本连接认证) ,所以在访问资源时要在header中添加验证信息,当然为了安全期间把用户名和密码进行base 64位加密。可以在用户登陆之后把用户名和密码进行加密并设置到session中,这样在前端就可以直接通过Ajax方式获取资源了:import jodd.util.Base64;String base64Code = "Basic " + Base64.encodeToString(user.getId() + ":" + user.getPassword());session.setAttribute("BASE_64_CODE", base64Code);
Cuckoo_v2.0.6 REST API使用
$ sudo apt-get install uwsgi uwsgi-plugin-python nginx 在venv中运行 $ cuckoo api --uwsgi ,将结果保存到 /etc/uwsgi/apps-available/cuckoo-api.ini 文件里 创建链接 $ sudo ln -s /etc/uwsgi/apps-available/cuckoo-api.ini /etc/uwsgi/apps-enabled/ 启动uwsgi $ sudo service uwsgi start cuckoo-api 在venv中运行 $ cuckoo api --nginx ,将结果保存到 /etc/nginx/sites-available/cuckoo-api 文件里 创建链接 $ sudo ln -s /etc/nginx/sites-available/cuckoo-api /etc/nginx/sites-enabled/ 启动nginx $ sudo service nginx start 启动cuckoo api $ cuckoo api -H 0.0.0.0 -p 8090 8090是默认端口,可以更改,但之前的配置都要与之一致。 初次环境配置完成后,以后的启动过程只需三条命令。 具体python调用法见官方文档:***隐藏网址***
如何使用 Oauth 实现一个安全的 REST API 服务
一个服务器和客户端知道一个公钥和一个私钥;只有服务器和客户端知道私钥,但每个人都知道公钥。。。但不关心别人所知道的。 一个客户端生成一个唯一的HMAC(哈希)表示它到服务器的请求。通过把请求数据(参数和值或XML/JSON或任何它计划发送的数据)以及请求数据的散列blob和私钥结合来实现。 客户端随后将这个HASH以及所有它将要发送的参数和值一并发给服务器。 服务器接到请求,并使用与客户端相同的方式重新生成自己独有的基于提交值的HMAC(哈希)。 然后,服务器比较这两个HMAC,如果相同,服务器就信任这个客户端并执行请求。 这似乎很直截了当。最初让你困惑的是,你以为原始请求是经过加密传送的,但实际上,HMAC方法所做的一切只是使用只有客户端和服务器才知道的私钥将参数生成为一些独特的校验和(哈希)。 随后,客户端将这个校验和及原始参数和值发给服务器,然后服务器复核校验和(哈希)以确定它接受客户端所发的请求。 因为根据假设,只有在客户端和服务器知道私钥,我们假设如果他们的哈希匹配,那么它们会互相信任,以至服务器随即正常处理这个请求。 你知道在现实中,这就相当于某人过来对你说:“Jimmy让我告诉你把钱给Johnny”,但你不知道这个人是谁,所以你要伸出手去试探他,看看他是否知道这个秘密握手。 如果三次握手证明无误,则通讯继续进行,否则中断通讯。.
Spark Metrics
服务运行时将服务信息展示出来方便用户查看时服务易用性的重要组成部分。特别时对于分布式集群服务。 spark服务本身有提供获取应用信息对方法,方便用户查看应用信息。Spark服务提供对master,worker,driver,executor,Historyserver进程对运行展示。对于应用(driver/executor)进程,主要提供metric和restapi对访问方式以展示运行状态。 服务/进程通过Metric将自身运行信息展示出来。spark基于Coda Hale Metrics Library库展示。需要展示的信息通过配置source类,在运行时通过反射实例化并启动source进行收集。然后通过配置sink类,将信息sink到对应的平台。 以driver为例:driver进程启动metricSystem的流程: SparkContext在初始化时调用 : MetricsSystem.createMetricsSystem("driver", conf, securityManager) 然后等待ui启动后启动并绑定webui(executor则是初始化后直接启动) metricsSystem.start() metricsSystem.getServletHandlers.foreach(handler =》 ui.foreach(_.attachHandler(handler))) 创建MetricConfig, val metricsConfig = new MetricsConfig(conf) 初始化MetricConfig,首先设置默认的属性信息: prop.setProperty("*.sink.servlet.class","org.apache.spark.metrics.sink.MetricsServlet") prop.setProperty("*.sink.servlet.path","/metrics/json") prop.setProperty("master.sink.servlet.path","/metrics/master/json") prop.setProperty("applications.sink.servlet.path","/metrics/applications/json") 加载conf/metric.properties文件或者通过spark.metrics.conf制定的文件。读取相关配置,metricsConfig.initialize() 在启动metricSystem时,则会注册并启动source和sink registerSources() registerSinks() sinks.foreach(_.start) 默认启动对source如下: 可配置的source如下: 配置方法:修改$SPARK_HOME/conf目录下的metrics.properties文件: 默认相关source已经统计在列。可添加source为jvmsource。添加之后则相关进程的jvm信息会被收集。配置方法 添加如下行: driver.source.jvm.class=org.apache.spark.metrics.source.JvmSource executor.source.jvm.class=org.apache.spark.metrics.source.JvmSource 或者*.source.jvm.class=org.apache.spark.metrics.source.JvmSource source信息的获取比较简单,以DAGSchedulerSource的runningStages为例,直接计算dagscheduler的runningStages大小即可。override def getValue: Int = dagScheduler.runningStages.size 通过这些收集的信息可以看到,主要是方便查看运行状态,并非提供用来监控和管理应用 Metric信息展示方法: 收集的目的是方便展示,展示的方法是sink。 常用的sink如下: a) metricserverlet spark默认的sink为metricsserverlet,通过driver服务启动的webui绑定,然后展示出来。ip:4040/metrics/json(ip位driver节点的ip)展示:由于executor服务没有相关ui,无法展示metricsource的信息。 下图是配置过JVMsource后,通过driver节点的看到的metric信息。 b) CSV方式(将进程的source信息,写入到csv文件,各进程打印至进程节点的相关目录下,每分钟打印一次): *.sink.csv.class=org.apache.spark.metrics.sink.CsvSink *.sink.csv.period=1 *.sink.csv.directory=/tmp/ c) console方式(将进程的source信息写入到console/stdout ,输出到进程的stdout): *.sink.console.class=org.apache.spark.metrics.sink.ConsoleSink *.sink.console.period=20 *.sink.console.unit=seconds d) slf4j方式(直接在运行日志中查看): *.sink.slf4j.class=org.apache.spark.metrics.sink.Slf4jSink *.sink.slf4j.period=10 *.sink.slf4j.unit=seconds e) JMX方式(此情况下,相关端口要经过规划,不同的pap使用不同的端口,对于一个app来说,只能在一个节点启动一个executor,否则会有端口冲突): executor.sink.jmx.class=org.apache.spark.metrics.sink.JmxSink JMX方式在配置后,需要在driver/executor启动jmx服务。 可通过启动应用时添加如下操作实现--conf "spark.driver.extraJavaOptions=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8090 -Dcom.sun.management.jmxremote.rmi.port=8001 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false --conf "spark.executor.extraJavaOptions=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8002 -Dcom.sun.management.jmxremote.rmi.port=8003 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false" 可通过jconsole工具链接至对应driver进程所在ip和端口查看jmx信息。 ***隐藏网址*** 运行中的应用:通过driver进程查看: ip:port/api/v1/.... 其中Ip为driver所在节点ip,端口为4040. 如果一个节点运行多个driver,端口会以此累加至4040,4041,4042 . 如:10.1.236.65:4041/api/v1/applications/application_1512542119073_0229/storage/rdd/23(on yarn 模式会自动跳转至如下页面) 对于运行完的应用,可通过jobhistory服务查看 此场景下,需要提交应用时打开eventlog记录功能 打开方法在应用的spark-defaults.conf中添加如下配置spark.eventLog.enabled为true,spark.eventLog.dir为hdfs:///spark-history 。 其中/spark-history可配置,需要和jobhistory进程的路径配置一致 ,该路径可通过historyserver页面查看。 ip:port/api/v1/....(其中Ip为spark服务的jobhistory进程所在节点ip,默认端口为18080). 可通过如下方式访问: Spark作为计算引擎,对于大数据集群来说,作为客户端向Yarn提交应用来完成数据的分析。所使用的资源一般在yarn控制之下。其应用场景并非作为服务端为其他组件提供服务。其所提供的信息通常是针对app级别,如job,stage,task等信息。一般的信息监控需求均可通过其ui页面查看。对于一些应用的运行情况,可通过restapi获取和分析。
API 入门 (18) 认识 REST
API 设计是有风格的, RPC 、 REST 、 GraphQL 是当前比较流行的三种设计风格。在后面的文章中,我们会采用 REST 风格,对 API 进行设计和实现,所以本文就和大家一起认识一下 REST . REST 是 Representational State Transfer 的缩略词表示,直译过来就是表征状态传输,具象状态传输,表述性状态转移,表现状态传输等,这也是网络上常见等译法。这种直译,让人有种知道每个词的意思,但不知道这些词组合起来在说什么的感觉。 所以,我们先来了解一下 REST 的产生,再尝试解释一下这个术语。 2000年,Roy Thomas Fielding 在他的博士学位论文—— 《Architectural Styles and the Design of Network-based Software Architectures》 ——中提出了 REST 架构风格,并在论文的第五章, CHAPTER 5 Representational State Transfer (REST) ,详细阐述了 REST 架构风格。与此同时,论文的作者正在进行 HTTP 1.1 协议的开发工作。正是这项工作,促成了 REST 架构风格的产生。 REST 架构风格的目标就是帮助构建高效的、可扩展的、可靠的分布式系统。分布式系统也是一个比较抽象的词,在这里,我们可以理解为由许多位于不同计算机上的软件组成,相互之间靠网络连接和通信,协同完成工作的系统。 论文作者提出,REST 架构风格的设计要满足下面六个约束(constraint)要求: REST(Representational State Transfer) 译成中文的关键是对 Representational 这个词的理解。 文章开头已经给出了一些网络常见翻译,现在我们从论文里找找线索。在论文的第五章里, Representational 出现了 4 次,都是以 Representational State Transfer 的组合方式使用的。他的名词形式 Representation 出现了 53 次。下面是一些相关的摘抄。 representation 是一串有序字节及其描述它的元数据。 为了帮助大家理解这个词语,作者还列举了几个相似的词语:文档(document),文件(file),HTTP 消息体(HTTP message entity),实例(instance),或变量(variant)。 representation 包括数据,元数据(描述数据的数据),描述元数据的数据 。 representation 的数据格式是大家所熟知的媒体类型。 大家可以把认为合理的词放入句子里,讲的通,能明白就行。当然,也可以去原文中研读更多的语境。 这里,比较合适的词可以是表示,描述,相应的 REST 可以翻译为: 甚至是把 Representational 这个词忽略掉,到更让人容易理解。 Representational 这个词强调的应该是资源的状态是可以通过某种形式让客户端识别的。不管怎样,到底是 僧敲月下门 ,还是 僧推月下门 ,请大家见仁见智吧。
更多文章:
十大经典赛车游戏(你玩过几款2010-2019年10大赛车游戏 (上))
2024年7月23日 09:28
リアルプレイ(リアルプレイ这个游戏安装后运行不了是什么问题)
2024年5月15日 23:54
变声器微信语音聊天免费(微信在语音聊天的时候有什么方式可以变声啊)
2024年7月22日 05:39
iRead(爱读书)电子书阅读器如何在线读书,我的意思是如何在网上搜索小说,只能本地打开吗?ireader是什么文件夹可以删除吗
2024年3月10日 18:10
11 0 1(二进制数的表示方法: 0 1 10 11 100 101 110 111 1000 1001,它为什么回回这样表示为什么)
2024年6月24日 06:16
联想官网摄像头驱动下载(联想T410笔记本摄像头驱动在哪下,官方的)
2024年5月13日 00:50
拍拍助理可以批量替换描述里的首部内容么?拍拍助理显示本地图片不存在是什么意思
2024年6月24日 07:41
输姓名查身份证号码(有人名和身份证号码怎么查询身份证号是否真实)
2024年5月22日 09:29