对 NGINX、Kong 和 Amazon 的 API 管理解决方案进行基准测试:它们能否交付实时 API?

news2024/11/26 23:21:08

原文作者:Alessandro Fael Garcia of F5

原文链接:对 NGINX、Kong 和 Amazon 的 API 管理解决方案进行基准测试:它们能否交付实时 API?

转载来源:NGINX 开源社区


NGINX 唯一中文官方社区 ,尽在 nginx.org.cn

速度 — 这在当今数字环境中尤为重要,如果您的应用性能太慢,消费者会毫不犹豫地选择您的竞争对手。应用速度最终取决于 API 的响应能力、运行状况和适应性,而影响 API 响应能力的关键因素之一就是 API 网关引入的延迟。但是,并非所有 API 网关的性能都是相同水平。

这点让我想起去年秋天,一位 NGINX 客户(消费信贷行业的一家知名公司)告诉我们,随着越来越多的应用和其他组件需要彼此通信以提供用户期望的数字体验,“实时” API 性能的重要性正日益提高。我们很高兴得知 NGINX Plus 是唯一能实现客户所需的超短 API 延迟(低至 10 毫秒)的 API 网关。其他许多客户,例如 Capital One,也与我们分享了如何通过使用 NGINX 开源版或 NGINX Plus 作为 API 网关来缩短延迟和提高吞吐量。

我们决定对 API 生态系统进行更深入的研究,并尝试弄清 API “实时”意味着什么。基于大量的考虑因素,我们最终确定了实时 API 处理端到端 API 调用的时间,前 99 百分位必须在 30 毫秒内(这意味着平均只有百分之一的调用用时超过 30 毫秒)。

比较 API 管理解决方案

我们的内部测试一致表明,当您定义、发布 API 并进行全生命周期管理和监控时,通过我们的 API 管理解决方案可以轻松实现实时 API 性能,该解决方案将 NGINX Plus 用作处理 API 调用的 API 网关,并使用 NGINX Controller API 管理模块(现已并入 NGINX Management Suite)来管理两个 NGINX Plus 实例以及您的 API。

但是我们知道,仅凭我们的一面之词,可能很难取信于您。因此,我们委托独立技术研究和分析公司 GigaOm 对我们的 API 管理解决方案和市场上的其他流行解决方案进行了客观透明的基准测试,这包括两款类似 NGINX 的可部署在本地或云中的解决方案 Apigee 和 Kong Enterprise,以及两款完全托管的云产品 Amazon API Gateway 和 Kong Cloud。

在本文中,我们概述了 GigaOm 的测试结果(最佳表现者:NGINX Plus 在每种测试条件下均能实时提供 API,而其他解决方案则不能)。有关解决方案、测试方法和结果的全部详情,请联系我们的团队成员。

注:Apigee 最终用户许可协议 (EULA) 禁止未经 Google 明确许可发布测试结果,因此很遗憾,该报告和本文中均未包含有关 Apigee 的信息。

基准测试概述

GigaOm 使用 Vegeta HTTP 负载测试工具生成请求(API 调用),并测量了在各种吞吐率 (RPS) 下 API 网关引入的延迟,即将响应返回给 API 调用所花费的时间。GigaOm 将 RPS 称为“攻击速率”。GigaOm 在从 1,000 到 5,000、10,000、20,000 及更高 RPS 的攻击速率下,不断运行测试,直到 Vegeta 报告错误状态代码为止。每次测试持续 60 秒,并重复 3 次。如下图所示,GigaOm 捕获了在 50、90、95、99、99.9 和 99.99 百分位下的延迟,并且还记录了在测试运行期间观察到的最长延迟(即图中的最大)。

结果:NGINX 与 Kong Enterprise

GigaOm 进行了两次基准测试,对 NGINX Plus(使用 NGINX Controller 部署)和 Kong Node(使用 Kong Enterprise 部署)进行了比较。在第一次基准测试中,只有一个工作节点(一个 NGINX Plus 或 Kong Node 实例)。在第二次基准测试中,3 个工作节点由 NGINX 开源版通过轮询调度算法进行负载均衡。(GigaOm 强调,使用 NGINX 开源版作为负载均衡器并不会给 NGINX Plus 带来优势,甚至 Kong 建议将其用作集群 Kong 实例的负载均衡器。)

如下图所示,在第 99 百分位之前,NGINX 和 Kong 之间的延迟差异可以忽略不计,但之后 Kong 的延迟开始呈指数增长。在两次基准测试中,在第 99.99 百分位下,Kong 的延迟均为 NGINX 的两倍或三倍。

API 在每个百分位下,直到第 99 百分位为止都能保持低延迟才能被定义为实时,但 GigaOm 指出,在实际部署中,在更高的百分位(如第 99.9 和 99.99)下保持低延迟“极其重要”。该报告说明:

延迟结果随时间的推移趋向于多模式,陡变的顶端代表响应时间中的“停顿”。

这些停顿关系重大。如果响应时间或延迟的中位数小于 30 毫秒,但存在 1 秒或更长时间延迟的停顿,则实际上会对后续用户体验产生累积影响。例如,如果您开车去一家快餐店,平均等餐时间为 1 分钟,您可能会认为这还是一种不错的客户体验。但是,如果您前面的客户订单出现问题,需要 10 分钟才能解决,那会怎样?这意味着您的等餐时间实际上是 11 分钟。由于您的请求是出现停顿之后,因此第 99.99 百分位的延迟也可能会成为您的延迟。

在高百分位下,超长延迟带来的负面影响在分布式应用中会变得更加明显,因为在此类应用中,单个客户端请求实际上可能会产生多个下游 API 调用。例如,假设 1 个客户端请求创建了对子系统的 10 个 API 调用,发生缓慢响应的概率为 1%。缓慢响应影响 1 个客户端请求的概率在 10% 左右,这点从数学上可以证明。有关详细信息,请参阅《谁动了我第 99 百分位的延迟?》。

图 1 描述了在单个工作节点和 30,000 RPS 攻击速率下的结果。在第 99.99 百分位,Kong 的延迟是 NGINX 的 3 倍以上,并且超过了实时 API 30 毫秒的阈值。相比之下,NGINX Plus 在每个百分位下均实现了实时延迟,其最高记录的(最大)延迟仅有 13 毫秒,还不到实时阈值的一半。

图 1.在单节点和 30,000 RPS 下的 NGINX Controller(现已并入 NGINX Management Suite)和 Kong Enterprise

图 2 显示了在三个工作节点下,同样也是在 30,000 RPS 攻击速率下的基准测试结果。有趣的是,在第 99 百分位和第 99.9 百分位下,Kong 表现优于 NGINX,但到第 99.99 百分位再次经历了延迟飙升,这时的延迟大约是 NGINX 的两倍。与第一个基准测试一样,NGINX 在所有百分位均保持小于 30 毫秒的实时阈值。

图 2.在三节点和 30,000 RPS 下的 NGINX Controller(现已并入 NGINX Management Suite)和 Kong Enterprise

衡量 API 网关性能的另一种方法是,利用单节点和三节点配置,确定在百分百成功(无 5xx 或 429 [Too Many Requests] 错误)并且在所有百分位延迟都小于 30 毫秒的情况下,它可以处理的最大 RPS。图 3 显示了根据此测量方法,NGINX 支持比 Kong 高出 50% 的 RPS:30,000 VS. 20,000。

图 3.无误情况下实现的最大吞吐量

结果:NGINX 与 Kong Cloud 和 Amazon API Gateway

在第三组基准测试中,GigaOm 将 NGINX Plus 同 Kong Cloud 和 Amazon API Gateway 进行了比较。GigaOm 强调,直接比较存在很大问题,因为 Kong Cloud 和 Amazon API Gateway 是完全托管的 SaaS 产品,而 NGINX Controller(现已并入 NGINX Management Suite)是 PaaS 产品,目前不作为 SaaS 提供。特别是,这两种 SaaS 产品都无法揭示其使用的实例类型、运算能力、内存或网络功能。因此,GigaOm 必须就与 NGINX Plus 相当的设置做出最佳猜测。

实际上,即使不与 NGINX Plus 进行比较,也能轻松发现,SaaS 产品在任何测试百分位下均无法实时提供 API,即便在图 4 所示的第二低攻击速率(5,000 RPS)下也是如此。在第 50 百分位下,SaaS 产品的延迟就已超过 30 毫秒阈值的 7 倍;而在第 99.99 百分位下,它比该阈值高出 8000% 以上。显而易见,在任何情况下,Kong Cloud 或 Amazon API Gateway 都无法百分百保证小于 30 毫秒的延迟。

图 4.在单节点和 5,000 RPS 下的 NGINX Controller(现已并入 NGINX Management Suite)、Amazon API Gateway 及 Kong Cloud

验证 NGINX 是唯一的实时 API 解决方案

总而言之,NGINX 是业经 GigaOm 测试的唯一符合实时 API 处理标准的解决方案,在每个百分位下的延迟均小于 30 毫秒。Kong Enterprise 在第 99 百分位获得了实时性能,但在较高的百分位下,其延迟急剧上升。因此,它不适合即便是只需适量实时 API 处理的生产环境。测试中的 SaaS 解决方案均不能被归类为实时。

GigaOm 报告证实了我们以前的基准测试结果以及客户向我们提供的反馈。NGINX Plus 是市场上最快的 API 网关,并且是唯一能够在所有百分位下都保持小于 30 毫秒延迟的 API 解决方案。而且,如果将其与 NGINX Controller (现已并入 NGINX Management Suite)搭配使用,您将可以获得具有独特架构的 API 管理解决方案。通过精心的解耦设计,API 管理控制平面 (NGINX Controller,现已并入 NGINX Management Suite) 不会对 API 网关数据平面 (NGINX Plus) 的性能产生任何影响。

您可以使用我们的 rtapi 延迟测量工具测试您自己的 API 性能。请联系我们,探讨我们可如何帮助您实现实时 API。


NGINX 唯一中文官方社区 ,尽在 nginx.org.cn

更多 NGINX 相关的技术干货、互动问答、系列课程、活动资源: 开源社区官网 | 微信公众号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1565201.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaScript 对象管家 Proxy

JavaScript 在 ES6 中,引入了一个新的对象类型 Proxy,它可以用来代理另一个对象,并可以在代理过程中拦截、覆盖和定制对象的操作。Proxy 对象封装另一个对象并充当中间人,其提供了一个捕捉器函数,可以在代理对象上拦截…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑灵活性供需平衡的新型电力系统长短期储能联合规划》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

Linux_进程的优先级环境变量上下文切换

文章目录 一、进程的优先级二、进程的四个重要概念三、上下文切换四、环境变量4.1 查看当前shell环境下的环境变量与内容 一、进程的优先级 什么是优先级? 指定一个进程获取某种资源的先后顺序本质是进程获取cpu资源的优先顺序 为什么要有优先级 进程访问的资源&am…

基于java+springboot+vue实现的医院门诊在线挂号系统(文末源码+Lw)23-222

摘 要 伴随着信息技术与互联网技术的不断发展,校园也进到了一个新的信息化时代,传统管理技术性没法高效率、容易地管理医院门诊在线挂号信息内容。为了实现时代的发展必须,提升医院门诊在线挂号高效率,各种各样医院门诊在线挂号…

2-PS修改图片颜色

【问题介绍】PS 快速改变图片颜色,可以生成一个系列的可爱作品 如下图,一个可爱的白色云朵蓝色背景 蓝白色冰淇淋 如果我们想要改一改颜色,做出一个系列的绿色冰淇淋、粉色冰淇淋呢? 方法1 【最简单】图像→替换颜色 调整后效果…

武汉星起航:跨境电商全球贸易新引擎,展现无限商机与优势

在全球经济一体化的浪潮下,跨境电商行业以其迅猛的发展势头和独特的优势,成为了推动国际贸易增长的重要引擎。跨境电商不仅为企业提供了更广阔的市场空间,也为消费者带来了更多选择和便利。武汉星起航将深入探讨跨境电商在强势发展中所展现出…

百度语音识别

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、建号—获取试用KEY二、测试代码三、运行四、运行结果五、验证五、总结 一、建号—获取试用KEY https://console.bce.baidu.com/ai/#/ai/speech/overview/index…

TCP网络协议栈和Posix网络部分API总结

文章目录 Posix网络部分API综述TCP协议栈通信过程TCP三次握手和四次挥手(看下图)三次握手常见问题?为什么是三次握手而不是两次?三次握手和哪些函数有关?TCP的生命周期是从什么时候开始的? 四次挥手通信状态…

LabVIEW挖坑指南

一、挖坑指南 1.1、输出变量放在条件框内 错误写法: 现象:如果没进入对应的分支,输出为默认值 正常写法: 让每个分支输出的值都在预料之内。 1.2、统计耗时不准 错误写法 现象:统计出来的耗时是2000ms 正常写法&a…

06 | Swoole 源码分析之 Coroutine 协程模块

首发原文链接:Swoole 源码分析之 Coroutine 协程模块 大家好,我是码农先森。 引言 协程又称轻量级线程,但与线程不同的是;协程是用户级线程,不需要操作系统参与。由用户显式控制,可以在需要的时候挂起、或…

【软件工程】详细设计(二)

这里是详细设计文档的第二部分。前一部分点这里 4. 学生端模块详细设计 学生端模块主要由几个组件构成:学生登录界面,成绩查询界面等界面。因为学生端的功能相对来说比较单一,因此这里只给出两个最重要的功能。 图4.1 学生端模块流程图 4.…

数据库加载驱动问题(java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver)

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver 遇到此问题,首先检查IDEA外部库中是否有mysql数据库驱动。如下所示: 如果发现外部库中存有mysql数据库驱动,需要在数据库配置文件中查看是否设置有时区mysql8.0以上版本需要设…

多态--下

文章目录 概念多态如何实现的指向谁调谁?例子分析 含有虚函数类的大小是多少?虚函数地址虚表地址多继承的子类的大小怎么计算?练习题虚函数和虚继承 概念 优先使用组合、而不是继承; 继承会破坏父类的封装、因为子类也可以调用到父类的函数;…

Springboot整合Milvus向量库

1. Milvus的Maven依赖&#xff0c; 配置如下 <dependency><groupId>io.milvus</groupId><artifactId>milvus-sdk-java</artifactId><version>2.3.4</version><exclusions><exclusion><artifactId>log4j-slf4j-imp…

【蓝桥备赛】异或和——树状数组、DFS

题目链接 异或和 思路分析 树上每个点都有一个点权&#xff0c;对树上的更新操作是修改指定点的点权&#xff0c;查询操作是查询指定点为根结点的子树点权异或和。 这里的这些操作都和树状数组的单点修改和区间查询非常相似&#xff0c;即我们在修改一个点时&#xff0c;同时…

浅谈物联网高速公路智慧配电室系统构建方案

关键词&#xff1a;高速公路&#xff1b;智慧供配电&#xff1b;电力监控&#xff1b;配电室智能运维托管&#xff1b;安全隐患 0、引言 随着高速公路事业的不断发展和路网的不断延伸&#xff0c;传统的管理方式已难以满足日益增长的需求&#xff0c;动态管理和安全隐患预警成…

当面试官问你插入排序算法,你敢说自己会吗?

算法学习的重要性 在程序员的世界里&#xff0c;算法就如同一座桥梁&#xff0c;连接着问题与解决方案&#xff0c;是实现优秀程序的关键。 掌握算法&#xff0c;就能够在面对各种问题时&#xff0c;找到最合适的解决方法&#xff0c;以最少的时间和空间&#xff0c;实现最优的…

【airtest】自动化入门教程(四)Poco元素定位

目录 一、基础操作 1、通过属性名等方式 2、通过属性组合 3、子节点方式 4、子节点加属性组合方式 5、孙节点offspring 6、兄弟节点sibling 7、父节点parent 8、正则表达式 9、直到某个元素出现 10、直到某个元素消失 二、通过局部坐标定位 1、使用局部坐标系的cli…

计算多个元素的累乘结果累乘器start默认初始为1 math.prod()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 计算多个元素的累乘结果 累乘器start默认初始为1 math.prod() [太阳]选择题 请问题目中的代码最后输出什么? import math list1 [1, 2, 3] print("【显示】list1 ",list1) pri…

留学生在美国大学利用AI工具到底算不算作弊呢?

自2022年以来&#xff0c;美国大学就开启了一场AI作弊与反作弊大战 战场小至测验&#xff0c;大至申请 这场战争并没有一方胜利&#xff0c;作弊者心思费尽 校方反作弊弄得教授们苦不堪言 那么作为中国留学生该如何避免这场战役呢&#xff1f; 毕竟还是学业要紧呢…… 故事…