庖丁解牛:Apache APISIX 3.0与Kong 3.0功能背后的趋势

描述

微服务架构的兴起,使得 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 会如何迭代和发展,让我们拭目以待。

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分