开源的API Gateway项目- Kong基于OpenResty(Nginx + Lua模块)

Kong 是一个在 Nginx 内运行的开源 API 网关和微服务抽象层。它是用于处理 API 流量的灵活、可扩展、可插入的工具。

Kong 提供了以下功能:

  1. 用户登录:Kong 提供了多种认证插件,像 JWT、OAuth 2.0 等,可以满足用户登录需求。
  2. Token 管理:使用上述认证插件,Kong 可以有效地管理和处理 Token。
  3. 流量计数:通过插件,例如"流量控制"插件,Kong 可以对 API 的流量做限制,并进行实时的统计。
  4. 除此之外,Kong 还提供了负载均衡、服务发现、健康检查、Kong 的集群和节点状态的相关功能。

你可以在官方网站下载并获取安装指南:Kong Gateway: Most Trusted Open Source API Gateway | Kong Inc.

Kong是一款基于OpenResty(Nginx + Lua模块)编写的高可用、易扩展的,由Mashape公司开源的API Gateway项目。Kong是基于NGINX和Apache Cassandra或PostgreSQL构建的,能提供易于使用的RESTful API来操作和配置API管理系统,所以它可以水平扩展多个Kong服务器,通过前置的负载均衡配置把请求均匀地分发到各个Server,来应对大批量的网络请求。 Kong是一个在 Nginx 中运行的Lua应用程序,并且可以通过lua-nginx模块实现,Kong不是用这个模块编译Nginx,而是 OpenResty 一起发布,OpenResty已经包含了 lua-nginx-module, OpenResty 不是 Nginx的分支,而是一组扩展其功能的模块。它的核心是实现数据库抽象,路由和插件管理,插件可以存在于单独的代码库中,并且可以在几行代码中注入到请求生命周期的任何位置。

Kong主要有三个组件:

  • Kong Server :基于nginx的服务器,用来接收API请求。
  • Apache Cassandra/PostgreSQL :用来存储操作数据。
  • Kong dashboard:官方推荐UI管理工具,当然,也可以使用 restfull 方式 管理admin api。

Kong的主要功能包括:

  • 高级路由、负载平衡、健康检查------所有这些都可以通过管理 API 或声明性配置进行配置。
  • 使用 JWT、基本身份验证、ACL 等方法对API 进行身份验证和授权。
  • 代理、SSL/TLS 终止以及对 L4 或 L7 流量的连接支持。
  • 用于实施流量控制、req/res转换、日志记录、监控和包括插件开发人员中心的插件。
  • 复杂的部署模型,如声明式无数据库部署和混合部署(控制平面/数据平面分离),没有任何供应商锁定。
  • 本机入口控制器支持服务Kubernetes。

插件提供了扩展网关使用的高级功能。许多 Kong Inc. 和社区开发的插件(如 AWS Lambda、Correlation ID 和 Response Transformer)都在插件中心展示。

官网: docs.konghq.com/

另外,要注意的是,虽然 Kong 本身是免费的,但是部分插件例如开发者门户、高级认证等只在企业版中提供,企业版是收费的。如果你需要这些功能,可能要考虑其它平台,或者探索其它开源工具来辅助实现。

在使用开源工具时,一定要考虑到一个重要的问题:你是否有资源和能力来维护和升级这些工具。一些开源工具可能需要一定水平的技术知识和时间投入来保证其功能性和安全性。对于商业用途,你也需要考虑这个工具是否可靠,并能否适应你的业务的发展和更改。

相关推荐
q***7482 天前
SpringColoud GateWay 核心组件
gateway
q***16082 天前
IP地址、子网掩码(NETMASK)和网关(Gateway)
tcp/ip·gateway·智能路由器
q***49452 天前
SpringGateway网关(Spring Gateway是Spring自己编写的,也是SpringCloud中的组件)
spring·spring cloud·gateway
阿拉斯攀登2 天前
Spring Cloud Gateway 的内置路由过滤器使用
spring cloud·微服务·gateway
q***06292 天前
springcloud-eureka与gateway简易搭建
spring cloud·eureka·gateway
百***61873 天前
SpringCloud Gateway 集成 Sentinel 详解 及实现动态监听Nacos规则配置实时更新流控规则
spring cloud·gateway·sentinel
f***68604 天前
springcloud-eureka与gateway简易搭建
spring cloud·eureka·gateway
q***61504 天前
当遇到 502 错误(Bad Gateway)怎么办
gateway
q***38514 天前
IP地址、子网掩码(NETMASK)和网关(Gateway)
tcp/ip·gateway·智能路由器
pengzhuofan6 天前
Gateway微服务网关
微服务·架构·gateway