• 最新出炉!开源 API 网关的性能对比:APISIX 3.0 和 Kong 3.0


    背景

    云原生时代下,企业逐渐向云上迁移,越来越多的应用和服务都在进行容器化改造,服务之间的流量也开始爆发性的增长。为了能高效地管理这些规模庞大的 API,API 网关开始在技术领域大展身手。

    用户除了需要 API 网关提供请求代理、熔断限流、审计监控等常规能力外,更多开始关注云原生兼容性、支撑场景的多样性,以及更好的性能及稳定性。在这样的背景下,以 Apache APISIX 和 Kong 等为代表的云原生 API 网关项目得到了越来越多开发者的青睐。

    Apache APISIX 是一个云原生、高性能、可扩展的 API 网关,由深圳支流科技捐赠给 Apache 基金会,并于 2020 年 7 月从 Apache 孵化器毕业, 成为 Apache 软件基金会顶级项目。APISIX 基于 NGINX 和 etcd 来实现,和传统 API 网关相比,APISIX 具备动态路由和插件热加载,特别适合云原生架构下的 API 管理。

    在这里插入图片描述

    Kong 也是一款高可用、易扩展的开源 API 网关项目。通过提供代理、路由、负载均衡、身份验证等功能,在微服务与传统 API
    领域提供网关层面的支持。

    2022 年秋季,Kong 与 Apache APISIX 相继发布了最新的 3.0 版本。其中,Apache APISIX 3.0 重点在生态和架构层面进行了创新与迭代,致力让所有用户都能利用 APISIX 发挥更优秀的价值。Kong 3.0 则在新版本中更加侧重政府、金融业以及对安全合规更关注的大型企业,整体涉及在合规、易用性、功能与性能等方面进行了拓展。

    作为开源微服务网关领域的优秀作品,在二者几乎同一时间发布 3.0 版本之际,我们对两个产品进行了一次性能测试,方便读者在选择和使用这两个网关产品时,对其最新版本的性能表现上有更加清晰的认知。

    测试环境与方式

    以下为本次进行测试的方式及环境数据,测试结果仅针对以下环境、机器及特定版本等。
    同时本次测试使用 Docker 部署 APISIX 和 Kong 时,将使用 Docker 的 host 网络模式,避免网络原因影响测试结果。以下为其他相关测试配置信息。

    请求拓扑图

    以下是测试链路的拓扑图,压力测试工具使用 wrk2,上游服务使用 OpenResty。

    在这里插入图片描述

    相关服务器与软件信息

    本次测试将在云服务器上进行,服务器配置为 Standard D8s v3 (8 核心虚拟 CPU,32 GiB 内存) 。所有测试相关组件均部署在这台服务器上,具体服务器环境信息如下表所示。

    服务器环境信息
    名称 配置
    os version Debian 10 Buster
    ulimit -n 65535

    测试中所涉及到的软件版本信息如下表所示。

    软件名称 版本信息
    Docker 20.10.18, build b40c2f6
    APISIX 3.0.0
    Kong 3.0.0
    Upstream OpenResty 1.21.4.1
    Test tool wrk2

    部署细节

    我们选择 wrk2 作为性能测试工具,选择 OpenResty 作为模拟上游。用 Docker 来部署 APISIX 与 Kong,并且都启用二者的声明式配置。

    在测试时,只开启一个 1 个 worker 进程,这样测试结果会比较直观。正常来说,在实际使用中多个 worker 的负载能力相比 1 个 worker 来说,其性能接近线性增长。部署脚本与测试脚本可参考 https://github.com/api7/apisix-benchmark。

    注意:在测试过程中,APISIX 关闭了 proxy-cacheproxy-mirror 插件。这是因为这两个插件的启用将会影响 APISIX 4% 左右的性能(benchmark 相关文档中有提及),因此在本次测试中进行了关闭。

    多场景测试与性能对比

    场景一:1 条路由,不启用任何插件

    场景一旨在测试纯代理场景。因此只设置 1 条路由,不启用任何插件,测试 APISIX 与 Kong 在该场景下的性能差异。

    APISIX 配置如下:

    routes:
      -
        uri
    • 1
    • 2
  • 相关阅读:
    关于使用STM32CubeMx配置串口出现的一些问题
    【知识点】图与图论入门
    CAD与GIS集成说明(在线CAD结合GIS,webCAD)
    地表温度LST计算教程
    [2022-11-26]神经网络与深度学习第5章 - 循环神经网络(part 2)
    python开发环境搭建问题汇总
    Codeforces Round #829 (Div. 2)(A-C)
    P1347 排序(拓扑 + spfa判断环 or 拓扑[内判断环])
    算法刷题2(C++)链表遍历算法
    鸿鹄工程项目管理系统em Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统
  • 原文地址:https://blog.csdn.net/ApacheAPISIX/article/details/127904020