Kong
Kong是一款基于Nginx_Lua模块写的高可用,易扩展由Mashape公司开源的API Gateway项目。由于Kong是基于Nginx的,所以可以水平扩展多个Kong服务器,通过前置的负载均衡配置把请求均匀地分发到各个Server,来应对大批量的网络请求。
Principles
- 高性能:亚毫秒级处理延迟,可支持关键任务用例和高吞吐量。
- 可扩展性:可插拔的体系结构,可通过Kong的Plugin SDK扩展 Kong。
- 可移植性:Kong 可以部署在任何平台、或者云。
Feature
概念/功能 | 描述 |
---|---|
服务 | 服务对象是Kong Gateway用来引用其管理的上游API和微服务的ID。 |
路由 | 路由指定在请求到达API网关后如何(以及是否)将请求发送到其服务。单个服务可以具有多个路由。 |
消费者 | 使用者代表您的API的最终用户。您可以控制谁可以访问您的API。他们还允许您使用日志记录插件和Kong Vitals报告流量。 |
Kong Manager | Kong Manager是基于浏览器的可视化工具,用于监视和管理Kong Gateway(Enterprise)。 |
Admin API | 为了管理的目的,Kong Gateway带有内部RESTful API。API命令可以在集群中的任何节点上运行,并且配置将一致地应用于所有节点。 |
插件 | 插件提供了用于修改和控制Kong Gateway功能的模块化系统。插件提供了广泛的功能,包括访问控制,缓存,速率限制,日志记录等等。 |
限流插件 | 使用此插件,您可以限制客户端在给定时间内可以发出的HTTP请求数量。 |
限流高级插件 | 该插件的高级版本还提供了滑动窗口支持,并可以通过标题和服务进行限制。 |
代理缓存插件 | 该插件提供了反向代理缓存实现。它在给定的时间段内根据响应代码,内容类型和请求方法缓存响应实体。 |
代理缓存高级插件 | 此插件的高级版本支持Redis和Redis Sentinel部署。 |
密钥验证插件 | 此插件可让您向服务或路由添加密钥身份验证(也称为API密钥)。 |
密钥验证-加密插件 | 此插件的高级版本将API密钥以加密格式存储在Kong Gateway数据存储区中。 |
负载均衡 | Kong Gateway提供了两种负载平衡方法:基于DNS的直接方法或使用环形均衡器的方法。在本指南中,您将使用环形均衡器,该环形平衡器需要配置上游和目标实体。使用此方法,后端服务的添加和删除由Kong Gateway处理,并且不需要DNS更新。 |
用户授权(RBAC) | Kong Gateway通过基于角色的访问控制(RBAC)处理用户授权。启用后,RBAC允许您创建团队和管理员,并在工作空间内或跨工作空间为他们分配精细权限。 |
开发者门户 | 开发人员门户网站为所有开发人员提供了一个单一的真实来源,以查找,访问和使用服务。 |
Kong gateway中的流量
默认情况下,Kong Gateway在其配置的代理端口8000和8443上监听流量。它评估传入的客户端API请求,并将其路由到适当的后端API。在路由请求和提供响应时,可以根据需要通过插件应用策略。
例如,在路由请求之前,可能需要客户端进行身份验证。这带来了许多好处,包括:
-
由于Kong Gateway正在处理身份验证,因此该服务不需要自己的身份验证逻辑。
-
该服务仅接收有效请求,因此不会浪费周期来处理无效请求。
-
记录所有请求以集中查看流量。