0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

OSC开源社区 来源:OSC开源社区 作者:OSC开源社区 2022-11-24 11:56 次阅读

微服务架构的兴起,使得 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 在保证性能的同时,也在积极扩展周边生态,利用自身开源项目的优势去拥抱更多优秀的产品与项目。

总结

fcda4a70-546b-11ed-a3b6-dac502259ad0.png

从以上两个产品大版本的更新细节汇总与分析中,我们可以看到:

Kong Gateway 3.0 版本的更新功能开始逐渐倾向于企业版,侧重政府、金融业以及对安全合规更关注的大型企业。整体涉及在合规、易用性、功能与性能等方面进行了拓展。

Apache APISIX 3.0 版本推出的所有功能都是开源的,在架构层面进行创新与迭代的同时,也在积极关注生态和新技术的探索,致力让所有用户都能利用 APISIX 发挥更优秀的价值。

作为 API 网关产品的佼佼者,未来 Kong 和 Apache APISIX 会如何迭代和发展,让我们拭目以待。

审核编辑:汤梓红

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

    关注

    2

    文章

    1384

    浏览量

    60994
  • Apache
    +关注

    关注

    0

    文章

    64

    浏览量

    12316
  • 云原生
    +关注

    关注

    0

    文章

    222

    浏览量

    7843

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

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    芯片后仿之SDF 3.0解析(三)

    本文接着解析SDF3.0的Timing Checks Entries、Timing Environment Entries两个部分。
    的头像 发表于 04-16 11:08 467次阅读
    芯片后仿之SDF <b class='flag-5'>3.0</b>解析(三)

    请问USB3014的3.0收发引脚可以悬空吗?

    上图三个芯片在同一块PCB上,只用3014的USB 2.0的功能,USB 3.0端口不用,那么USB 3.0的两对差分收发端口可以悬空吗?
    发表于 02-29 06:24

    请问FX3有USB3.0 OTG HOST功能吗?

    您好,请问FX3 有USB3.0 OTG HOST功能吗? 我司需要用MCU(STM32F4)高速采集AD数据,MCU把数据传给FX3 (CYUSB3014),FX3再通过USB3.0(速度需要大于
    发表于 02-28 07:19

    如何构建APISIX基于DeepFlow的统一可观测性能力呢?

    随着应用组件的可观测性逐渐受到重视,Apache APISIX 引入插件机制丰富了可观测数据源。
    的头像 发表于 01-18 10:11 398次阅读
    如何构建<b class='flag-5'>APISIX</b>基于DeepFlow的统一可观测性能力呢?

    USB 3.0扩展卡的主要特点介绍

    USB 3.0扩展卡的主要特点介绍  USB 3.0扩展卡是一种用于提供额外USB 3.0接口的硬件设备。USB 3.0是一种高速数据传输接口,具有快速的数据传输速度和更高的带宽。本文
    的头像 发表于 12-15 09:50 450次阅读

    电脑USB 3.0根集线器驱动无法使用的原因

    电脑USB 3.0根集线器驱动无法使用的原因
    的头像 发表于 12-01 11:28 1974次阅读
    电脑USB <b class='flag-5'>3.0</b>根集线器驱动无法使用的原因

    3.0 L直列4缸柴油机双平衡轴的设计与优化

    3.0 L直列4缸柴油机双平衡轴的设计与优化
    的头像 发表于 11-22 17:38 333次阅读
    <b class='flag-5'>3.0</b> L直列4缸柴油机双平衡轴的设计与优化

    USB3.0如何辨别

    泛的还是USB3.0,本篇也是主要介绍USB3.0。它是超高速传输接口,可以提供最高5.0Gbit/s的传输速率,并且相比与USB2.0,增加了新的电源管理功能,支持待机,睡眠等,更加省电。并且也从半双工
    的头像 发表于 11-07 11:01 785次阅读
    USB<b class='flag-5'>3.0</b>如何辨别

    什么是USB3.0?usb3.0与usb2.0有什么区别?

    什么是USB3.0?usb3.0与usb2.0有什么区别 USB3.0是指“超级速度USB”,它是一种高速数据传输技术,是USB2.0的升级版本。与USB2.0相比,USB3.0具有更
    的头像 发表于 10-27 14:31 4522次阅读

    一款国产USB3.0HUB集线器芯片

    3.0HUB拥有自主知识产权功能为USB3.0接口扩展广泛应用于电脑、嵌入式主板、集线器等领域,目前已经批量供货。 附件资源包涵 规格书、原理图、demo测试板PCB、BOM等全套资料。 概述 SL6340
    发表于 10-20 18:20

    Arm OpenGL ES 3.0开发者指南

    OpenGL ES 3.0是对OpenGL ES 2.0标准的增强。 OpenGL ES 3.0添加了OpenGL 3.x中已有的功能。其他OpenGL ES 3.0
    发表于 08-08 06:03

    k8s生态链包含哪些技术

    1. Apache APISIX Ingress 定义   在 K8s 生态中,Ingress 作为表示 K8s 流量入口的一种资源,想要让其生效,就需要有一个 Ingress Controller
    的头像 发表于 08-07 10:56 672次阅读
    k8s生态链包含哪些技术

    100W USB PD 3.0电源

    。USBPD3.0相对于USBPD2.0的变化主要有三方面:增加了对设备内置电池特性更为详细的描述;增加了通过PD通信进行设备软硬件版本识别和软件更新的功能,以及增加了数
    的头像 发表于 07-31 22:27 751次阅读
    100W USB PD <b class='flag-5'>3.0</b>电源

    参考设计 | 100 W USB PD 3.0电源

    快充时代。 USB PD3.0相对于USB PD2.0的变化主要有三方面:增加了对设备内置电池特性更为详细的描述;增加了通过PD通信进行设备软硬件版本识别和软件更新的功能,以及增加了数字证书及数字签名
    的头像 发表于 07-19 07:35 690次阅读
    参考设计 | 100 W USB PD <b class='flag-5'>3.0</b>电源

    云原生 API 网关 APISIX入门

    APISIX 基于 Nginx 和 etcd,与传统 API 网关相比,APISIX 具有动态路由和热加载插件功能,避免了配置之后的 reload 操作,同时 APISIX 支持 HT
    的头像 发表于 05-04 17:35 1646次阅读
    云原生 API 网关 <b class='flag-5'>APISIX</b>入门