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

原文作者: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.mzph.cn/news/789320.shtml

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

相关文章

HAL STM32 硬件I2C方式读取AS5600磁编码器获取角度例程

HAL STM32 硬件I2C方式读取AS5600磁编码器获取角度例程 📍相关篇《STM32 软件I2C方式读取AS5600磁编码器获取角度例程》 ✨stm32使用硬件I2C去读取角度数据,通过STM32CubeMX工具配置工程,读取角度数据,只需要调用一个函数&#xf…

常见的服务器技术

常见的服务器技术 1.虚拟化技术:虚拟化技术允许在一台物理服务器上创建多个虚拟服务器,每个虚拟服务器都可以独立运行不同的操作系统和应用程序。这大大提高了服务器的资源利用率,并提供了更好的灵活性、可扩展性和可靠性。 2.负载均衡技术&…

谷歌(Google)技术面试——在线评估问题(一)

谷歌(Google)面试过程的第一步,你可能会收到一个在线评估链接。 评估有效期为 7 天,包含两个编码问题,需要在一小时内完成。 以下是一些供你练习的在线评估问题。 在本章结尾处,还提供了有关 Google 面试不…

使用 RisingWave、NATS JetStream 和 Superset 进行实时物联网监控

在物联网(IoT)背景下,处理实时数据会遇到一些特定的障碍,如边缘计算资源不足、网络条件限制、扩展性存在问题、设备间有多样性差异。要克服这些挑战,需要高效的边缘计算技术、强大的安全措施、标准化协议、可扩展的管理…

接口自动化框架搭建(六):多进程执行

1,背景目的 当测试用例太多之后,想缩短执行时间,就需要多线程或者多进程执行。 多线程执行: 每条测试用例是独立的,测试用例之间的参数不能共同使用 采坑举例:接口自动化中请求头是公共参数,…

Sqlite插入单引号和双引号,防止sql注入

1. 方法1 sqlite3_mprintf替换sprintf,%q替换%s. 1.1. 举例 修改前代码 //修改前, hello123写入失败char sql[1000]char* sql sprintf("UPDATE table SET name %s WHERE name_id %d","hello123", 1);rc sqlite3_exec(db, sql, NULL, NULL, &err…

WebGIS 地铁交通线网 | 图扑数字孪生

数字孪生技术在地铁线网的管理和运维中的应用是一个前沿且迅速发展的领域。随着物联网、大数据、云计算以及人工智能技术的发展,地铁线网数字孪生在智能交通和智慧城市建设中的作用日益凸显。 图扑软件基于 HTML5 的 2D、3D 图形渲染引擎,结合 GIS 地图…

人人都离不开的算法:AI 时代的生存指南

文章目录 一、算法在生活中的“无处不在”二、算法在工作学习中的“智慧助力”三、算法在社会发展中的“驱动力量”四、算法带来的“双刃剑”效应五、应对算法挑战的策略《人人都离不开的算法——图解算法应用》编辑推荐1、通俗易懂2、技术科普3、贴近时代、贴近生活4、启发思考…

List、Set、Map 之间的区别是什么?

List、Set和Map之间的主要区别体现在它们的定义、特性、用途和常见实现上。 首先,List、Set和Map都是Java集合框架中的重要接口,用于存储和操作数据,但它们各自有不同的特性。 List(列表)是一个有序的集合&#xff0…

婴儿沐浴椅CPC认证 亚马逊沐浴椅子CPC认证

婴儿沐浴椅 如果您在亚马逊商城发布商品,则必须遵守适用于这些商品和商品信息的所有联邦、州和地方法律以及亚马逊政策(包括本政策)。 本政策适用的婴儿沐浴椅 婴儿沐浴椅是一种用于浴缸、盥洗盆或类似沐浴设备中的一种支撑物,…

深入剖析JavaScript中的this(上)

在Javascript中,this 关键字是一个非常重要的概念,this这个关键字可以说是很常见也用的很多,说它简单也很简单,说它难也很难。我们经常会用到this,也经常会因为this头疼,是一个经常被误解和误用的概念&…

基于DWT(离散小波变换)的图像加密水印算法,Matlab实现

博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188) 个人主页:Matlab_ImagePro-CSDN博客 原则:代码均由本人编写完成,非中介,提供…

einops中的rearrange的使用方法

einops中的rearrange的使用方法 在 einops 中,rearrange 函数用于对张量进行重排操作,即重新排列张量的维度顺序或形状。它的语法如下: einops.rearrange(tensor, pattern)tensor:要重排的张量。 pattern:用于指定重排…

“继承MonoBehavior的泛型单例“本质上是一个单例模板

"继承MonoBehavior的泛型单例"本质上是一个单例模板,它可以用于管理其他所有继承自MonoBehaviour的单例类。通过继承这个泛型单例模板,可以确保每个单例类只有一个实例,并且这些实例在整个Unity应用程序中都是唯一的。这种模式使得…

华尔街基金经理为什么开始押注MVP币了?

目前,市场非常流行一种新兴的上市策略。 依靠正在被市场认可并有明显增长动力的 Meme 币,并围绕它构建一个社区,继而完成整个生态,最终,将由一系列产品完成生态的繁荣。 通过启动一个与热门 Meme 币原生集成的项目&a…

The Google File System [SOSP‘03] 论文阅读笔记

原论文:The Google File System 1. Introduction 组件故障是常态而非例外 因此,我们需要持续监控、错误检测、容错和自动恢复! 按照传统标准,文件数量巨大大多数文件都是通过添加新数据而不是覆盖现有数据来改变的,因…

大数据实验统计-1、Hadoop安装及使用;2、HDFS编程实践;3、HBase编程实践;4、MapReduce编程实践

大数据实验统计 1、Hadoop安装及使用; 一.实验内容 Hadoop安装使用: 1)在PC机上以伪分布式模式安装Hadoop; 2)访问Web界面查看Hadoop信息。 二.实验目的 1、熟悉Hadoop的安装流程。 2、…

Mybatis plue(二) 核心功能

核心功能 P5 条件构造器 mybatisplus支持各种复杂的where条件,可以满足日常开发的所有需求 wrapper就是条件构造器,wrapper就是顶层的, 示例: 查询出名字带0,存款大于等于1000的人的id,username,info,balance字段 Testvoid te…

简单的安全密码生成器PwGen

什么是 PwGen ? PwGen 是一个简单的 Docker Web 应用程序,旨在生成具有可自定义选项的安全密码或密码短语。用户可以选择生成具有特定标准的随机密码或由随机单词组成的密码。其他功能包括在密码中包含大写字母、数字和特殊字符的选项,或者将…

如何在比特币上验证ZK Proofs

1. 引言 前序博客有: 基于BitVM的乐观 BTC bridgeBitVM:Bitcoin的链下合约Bitcoin Bridge:治愈还是诅咒?BitVM2:比特币上的无需许可验证以比特币脚本来实现SNARK VerifierClementine:Citrea的基于BitVM的…