微服务架构的兴起,使得 API 的数量呈现爆炸式的增长。为了能高效地管理这些规模庞大的 API,API 网关开始在技术领域大展拳手。
云原生时代下,企业逐渐向云上迁移,越来越多的应用和服务都在进行容器化改造,服务之间的流量也开始爆发性的增长,用户除了需要 API 网关提供请求代理、熔断限流、审计监控等常规能力外,更多开始关注云原生兼容性、支撑场景的多样性,以及更好的性能及稳定性。在这样的背景下,以 Apache APISIX 和 Kong 等为代表的云原生 API 网关项目得到了越来越多开发者的青睐。
2022 年 9 月 28 日 Kong 发布了 3.0 GA 版本,新版本中新增了一些功能及性能上的提升。9 月 21 日,Apache 软件基金会的顶级项目 APISIX 也发布了 3.0 版本预览版,介绍了生态和功能方面的 10 大亮点。
本文就让我们来详细分析下这两个流行的开源 API 网关项目的全新版本,看看这些更新细节的背后透露出哪些值得大家关注的趋势。
亮点汇总
Kong Gateway 3.0 亮点 | ||||||
亮点 | 适用版本 | 类别 | 目标用户 | 解决的问题 | APISIX 是否支持 | 备注 |
FIPS 140-2 安全标准 | 企业版 | 合规 | 北美金融企业和政府 | 合规性 | 不支持 | 不适用 |
密钥管理 | 开源版、企业版 | 合规 | 金融企业 | 合规性及安全性 | 支持 |
APISIX (2021.12) :feat(vault): vault lua module, integration with jwt-auth authentication plugin Kong (2022.2):feat(vaults) adds vaults beta support to kong |
插件功能排序 | 企业版 | 易用 | 有复杂场景的大中型企业 | 让企业使用插件时更灵活 | 支持 |
APISIX(2022.6):feat: allows users to specify plugin execution priority Kong (2022.7):feat(plugins) add support for ordering |
Kong Manager 3.0 管理面板 | 企业版 | 易用 | 没有太多技术团队的大中型企业 | 帮助企业用户更好地管理 API | 支持 | 不适用 |
深度支持Websocket | 企业版 | 功能 | 深度使用Websocket 的企业用户 | 校验 Websocket scheme,限制Websocket frame 大小 | 部分支持 |
Kong(2016.12):feat(proxy) supports websockets by subnetmarco · Pull Request #1827 · Kong/kong APISIX(2020.1):feature: upstream support websocket enable |
支持 OpenTelemetry | 开源版、企业版 | 功能 | 业务调用链复杂的大中型企业 | 可观测性 | 支持 |
APISIX (2022.1):feat: add opentelemetry plugin Kong(2022.6):feat(plugins) opentelemetry plugin |
性能改进 | 开源版、企业版 | 性能 | 云厂商,快速增长的 SaaS 厂商 | 降低服务器成本 | 支持 | Apache APISIX 从 2019 年开源以来,一直在性能上优于其他的 API 网关 |
新的路由引擎 | 开源版、企业版 | 性能 | 云厂商,快速增长的 SaaS 厂商 | 大量 API 场景下的性能问题,降低服务器成本 | 支持 |
APISIX(2019.8):feature: supported to use router lua-resty-radixtree Kong(2022.7):feat(router) new DSL based router support and tests fix |
Apache APISIX 3.0 亮点 | ||||
亮点 | 类别 | 目标用户 | 解决的问题 | Kong 是否支持 |
全面支持 ARM64 架构 | 生态 | 大规模上云的公司 | 降低成本 | 部分支持 |
新增 gRPC 客户端 | 性能 | APISIX 自身优化需求 | APISIX 自身优化需求 | 不支持 |
更完善的服务发现支持 | 生态、功能 | 微服务化的企业需要 | 不支持 | |
新增 xRPC 框架 | 生态、功能 | 互联网公司 | 降低服务器成本 | 不支持 |
支持更多四层可观测性 | 功能 | 业务调用链复杂的大中型企业 | 可观测性 | 不支持 |
全面支持 Gateway API | 生态 | 互联网公司 | 企业用户更好的管理 API | 支持 |
集成更多生态(如 OpenFunction, ClickHouse, Elasticsearch, CAS) | 生态、功能 | 互联网公司 | OSS、AWS Secrets Manager 和 Hashi Corp Vault(商业版)的环境变量 | 不支持 |
新增 AI 平面 | 智能 | 互联网公司 | 大量 API 下的性能问题,并且降低服务器成本 | 不支持 |
亮点与趋势解析
Kong Gateway
在上文汇总的 Kong Gateway 3.0 亮点中(结合 APISIX 的一些功能支持),主要体现了以下几个趋势。
首先是 Kong 在金融领域的安全和合规性上的投入比较大。这点可以从其对 FIPS 140-2 的支持和密钥管理两个方面看出来。
符合 FIPS 140-2:FIPS 140-2 是北美金融企业和政府用于批准加密模块的计算机安全标准。Kong Gateway 3.0 企业版基于 BoringSSL 进行构建,后续 Kong 的插件还会基于此标准进行兼容,从而使Kong 的核心能基本满足 FIPS 140-2 的要求。Kong 对 FIPS 140-2 的支持,体现了公司战略层面的发展阶段:历经七年的变化更迭,Kong 逐渐放眼于付费型企业,倾向于满足金融企业和政府的需求。
密钥管理:该功能目标群体同样是金融企业,Kong Gateway 3.0 允许用户将敏感信息安全地存储在 AWS Secrets Manager 和 HarshiCorp Vault 中,同时 Kong 在运行时能访问这些外部机密管理器,这样一来,针对一些有高要求的安全需求群体,实现了更高级别的安全保护。
其次 Kong Gateway 3.0 开始进行更针对性能层面的提升,这主要得益于以下两点。
在路由层面增加了一层哈希缓存,这在性能评测的场景下,会得到较大的提升。但当 UR 地址每次都变换时,这个缓存就失效了。详情可参考相关代码链接 atc.lua。
用 Rust 实现了一个全新的路由引擎,使用 DSL 来增加路由层面的表达力。在接收和发送 HTTP 请求时,可以编写如下表达式 net.protocol == "https" && (http.method == "GET" || http.method == "POST")。而在请求路由与特定主机匹配的场景下,可以通过编写如下表达式进行(http.host == "example.com" && http.headers.x_example_version == "v2" ) || (http.host == "store.example.com" && http.headers.x_store_version == "v1") 。
作为对比,Apache APISIX 在 2019 年 8 月使用Lua-resty-radixtree也实现了类似的路由表达式功能。APISIX 的表达式功能支持任意 NGINX 变量,同时运算符更加丰富。除了常见的数值、字符串比较,还支持正则、数组、IP 地址匹配等。
从这里也可以看到,APISIX 对于一些功能的规划会更有前瞻性。从各亮点的 PR 链接中可以看出,除 Kong Manager 3.0 以外,大部分是 Apache APISIX 先实现的。
Apache APISIX
在 Kong Gateway 3.0 发布的前一周,开源项目 Apache APISIX 发布了 3.0 预览版,其中涉及多项功能亮点,在上文中仅选取了最主要的八个要点进行列举(这八大亮点在开源版本中均有所呈现,主要侧重于生态和功能方面的改进)。
从汇总的亮点可以看到,Apache APISIX 3.0 版本主要针对生态和功能层面进行了优化。从 Apache APISIX 本身的演进规划来看,主要涉及以下两个重点:
增加 AI 平面。在数据平面和控制平面之外,Apache APISIX 新增了 AI 平面,通过对于 API 流量和配置的学习与分析,减轻开发者和维护者的使用和运维压力。比如以下两个场景就可以通过 AI 平面进行自动优化:
发现没有身份认证的 API,并给出风险提示;
对于只配置了身份认证等 Access 阶段插件的 API,自动跳过 log 等不必要的阶段,加快处理速度。
AI 平面给流量处理带来了新的可能性,在后续使用过程中,类似上游服务自动热身、安全威胁发现等都可以通过 AI 平面来进行处理。
全面支持 ARM64:ARM64 已经成为云厂商非常主流的服务器架构选择。从 AWS Graviton 到 GCP Tau T2A,各个云厂商已经开始推出基于 Arm 架构的服务器。Apache APISIX 对 ARM64 做了全面的 CI 回归测试,确保用户在 Arm 架构下运行 Apache APISIX 仍能流畅运行各种功能。对此,用户非常关注,关于 ARM 架构与 GCP、AWS 性能对比的文章在 Hacker
News 上收到了近百条评论。
可以看到,APISIX 在保证性能的同时,也在积极扩展周边生态,利用自身开源项目的优势去拥抱更多优秀的产品与项目。
总结
从以上两个产品大版本的更新细节汇总与分析中,我们可以看到:
Kong Gateway 3.0 版本的更新功能开始逐渐倾向于企业版,侧重政府、金融业以及对安全合规更关注的大型企业。整体涉及在合规、易用性、功能与性能等方面进行了拓展。
Apache APISIX 3.0 版本推出的所有功能都是开源的,在架构层面进行创新与迭代的同时,也在积极关注生态和新技术的探索,致力让所有用户都能利用 APISIX 发挥更优秀的价值。
作为 API 网关产品的佼佼者,未来 Kong 和 Apache APISIX 会如何迭代和发展,让我们拭目以待。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !