首页 > 编程知识 正文

kong网关性能,天翼网关如何安装插件

时间:2023-05-04 05:44:21 阅读:143969 作者:2827

转载甜蜜战机大佬文章: https://www.lyafei.com/今天的重点之一是加强对kong API网关的研究。 之前写了两篇关于Kong网关的文章,今天重点是Kong网关插件的支持能力。

如上图所示,Kong网关基于OpenResty APP应用服务器,openre sty是一个基于Nginx和Lua的高性能Web平台,其中包含许多精简的Lua库、第三方用于轻松构建支持超高并发且可扩展的动态Web APP应用程序、web服务和动态网关。 Kong核心基于OpenResty构建,具有强大的插件扩展功能。

Http请求到达Kong网关后,转发到后端APP应用之前,可以使用网关的各种插件来完成请求的流量控制、安全性、日志等各方面的处理能力。 Kong插件目前分为开源版和社区版,社区版有更多的定制功能,但社区版收费。

目前Kong的开源版本共开放28个插件,主要分为5类:认证、安全、流量控制、分析监控分析演示插件类似于AOP开发中的拦截功能,可以通过灵活的配置进行拦截控制。

附件:

Kong官网: https://konghq.com/

Kong GitHub地址: https://github.com/kong/kong

为了简单说明,选择几个重要的插件。

可见,“黑白列表控制能力”(IP-restriction kong )提供的IP黑白列表控制能力相当强,主要针对两个维进行配置。 是针对所有API接口,还是针对特定的API接口,一个是针对所有消费者,还是针对特定的消费者? IP配置可以是段或特定的IP地址。 但是,不能同时构成黑白名单。 其次,没有为一个系统提供的所有服务启用黑名单或白名单功能的功能。

日志记录能力(syslog、file-log、http-log ) )这里主要记录日志的插件很多。 一种是,syslog可以在配置后将Kong生成的日志直接写入到APP应用服务器的系统日志文件中。 如果设置了file-log,则单独写入指定的file文件。 在http-log的情况下,对于http服务请求,能够详细地记录请求的输入输出消息信息,但具体记录在哪里,需要通过config.http_endpoint设定。 具体的配置参数信息如下。

consumer_id:可选参数,config.http_endpoint:日志接收服务器,包括消费者id (消费者身份验证已启用,并根据id标识提出请求的消费者)使用的协议, http or https ) config.method : config.time out :可选参数,默认值10000毫秒,请求超时时间config.keepalive:可选参数关机前可生存时间熔断插件(请求时间熔断插件)此插件用于指定请求或服务不执行更高级别的服务;用于熔断指定请求或指定的服务。 Kong的熔断插件感觉好像暂时禁用了服务。 请注意,并不是在达到某个监视阈值时自动开始熔断,或者还不知道相关内容。 从官方文档的应用场景中也可以看出这一点。

临时分布式服务(e.g.itisundermaintenance )。

temporarilydisablearoute (e.g.therestoftheserviceisupandrunning,butaparticularendpointmustbedisabled )。

临时分布式电子咨询(e.g.excessive consumption )。

光靠这种方式的熔断,实际上意义不大。 但是,可用的是,在发布部署某个业务系统时,可以熔断该业务系统或该业务系统提供的所有服务。

流限制插件(rate-limiting ) Kong目前提供的流限制相对较弱。 也就是说,主要控制某个API接口服务在单位时间最多只能调用几次,超过后网关拒绝直接访问,返回错误消息。 流限制实际上有根据业务呼叫的次数和业务呼叫的数据量,需要在这两个方面进行流限制。 其中更重要的是数据量的限制,因为大数据量的消息往往容易引起存储器溢出异常。

安全认证插件目前,Kong网关提供六种认证插件:基本自动、密钥自动、自动2、hmac自动、jwt和LDAP自动。

根据基本auth基本身份验证插件(即用户名和密码)生成b

ase64 编码,同时将该编码和目标服务绑定,这样在消费目标服务的时候就需要在报文头填写这个 Base64 编码信息。

Key Auth 认证插件则是利用提前预设好的关键字名称,如下面设置的 keynote = apices,然后为 consumer 设置一个 key-auth 密钥,假如 key-auth = test@keyauth。在请求 api 的时候,将 apikey=test@keyauth,作为一个参数附加到请求 url 后,或者放置到 headers 中。

Hmac Auth 插件是设置绑定的 service 和 routte,以启动 hmac 验证。然后在 Consumers 页面中 Hmac credentials of Consumer 设置中添加一个 username 和 secret。

请求报文容量限制(request-size-limiting)

该插件用于限制请求报文的数据量大小,可以限制单个服务,也可以限制所有的 API 接口服务。

支持Oauth2.0身份认证(oauth2)

Kong 网关支持 Oauth2.0身份认证,Oauth2.0 协议根据使用不同的适用场景,定义了用于四种授权模式。

Authorization code(授权码模式):标准的 Server 授权模式,非常适合 Server 端的 Web 应用。一旦资源的拥有者授权访问他们的数据之后,他们将会被重定向到 Web 应用并在 URL 的查询参数中附带一个授权码(code)。在客户端里,该 code 用于请求访问令牌(access_token)。并且该令牌交换的过程是两个服务端之前完成的,防止其他人甚至是资源拥有者本人得到该令牌。另外,在该授权模式下可以通过 refresh_token 来刷新令牌以延长访问授权时间,也是最为复杂的一种方式。

Implicit Grant(隐式模式):该模式是所有授权模式中最简单的一种,并为运行于浏览器中的脚本应用做了优化。当用户访问该应用时,服务端会立即生成一个新的访问令牌(access_token)并通过 URL 的 #hash 段传回客户端。这时,客户端就可以利用 JavaScript 等将其取出然后请求 API 接口。该模式不需要授权码(code),当然也不会提供 refresh token 以获得长期访问的入口。

Resource Owner Password Credentials(密码模式):自己有一套用户体系,这种模式要求用户提供用户名和密码来交换访问令牌(access_token)。该模式仅用于非常值得信任的用户,例如 API 提供者本人所写的移动应用。虽然用户也要求提供密码,但并不需要存储在设备上。因为初始验证之后,只需将 OAuth 的令牌记录下来即可。如果用户希望取消授权,因为其真实密码并没有被记录,因此无需修改密码就可以立即取消授权。token 本身也只是得到有限的授权,因此相比最传统的 username/password 授权,该模式依然更为安全。

Client Credentials(客户端模式):没有用户的概念,一种基于 APP 的密钥直接进行授权,因此 APP 的权限非常大。它适合像数据库或存储服务器这种对 API 的访问需求。

简单转换能力(request-transformer、response transformer)

Kong 网关提供对输入和输出报文简单转换的能力,这部分内容后续再详细展开介绍。从当前配置来看,主要是对消息报文提供了Add,Replace,Rename,Append 等各种简单操作能力。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。