[编辑注:本文已更新,补充了rtapi 0.2.0版中引入的修订版报告相关信息。]
API是现代应用和不断演进的数字架构的核心。根据《Akamai互联网安全状况报告》,API调用占所有Web流量的83%。如今,消费者很容易转向数字领域的竞争对手,因此,让他们在使用您的网站或应用时获得良好体验至关重要。速度备受重视,而快速体验最终取决于响应迅速、运行状况良好且适应性强的API。如果能做到这一点,也就是让API比竞争对手更快,开发者就会选择您。
根据IDC报告《API:决定数字业务成败的关键因素》,超过90%的组织期望延迟低于50毫秒(ms),近60%的组织期望延迟不超过20 ms。(延迟是指API基础设施响应API调用所需的时间,即从请求到达API网关,到响应的第一个字节返回客户端所经历的时间。)
我们结合这些数据和对API生命周期的一些端到端分析,将实时API定义为延迟不超过30 ms的API。此外,在已处理请求的第99百分位,延迟也必须保持在30 ms以内(即平均每100个请求中,只有1个请求的延迟超过30 ms)。有关详情,请参阅我们关于API管理解决方案性能基准测试的博客。
对大多数企业而言,尽可能接近实时地处理API调用是一项重大挑战,尤其是在使用架构复杂的API网关作为API端点入口时。那么,您的API表现如何?速度是否已经足够快,可以视为实时API,还是仍需改进?您的产品是否感觉有些迟缓,却又找不到确切原因?也许您还不清楚API延迟的实际情况?
不妨试试rtapi。这是NGINX开发的一款实时API延迟基准测试工具,可测试API网关和端点的响应能力,并生成便于分发和与同事分享的报告。报告提供两种格式:包含汇总图表的PDF,以及采用ASCII格式的详细指标表。
运行rtapi
- 使用以下两种方法之一从GitHub下载
rtapi二进制文件:- 如果已安装Golang,请运行以下命令:
$ go get github.com/nginxinc/rtapi- 如果尚未安装Golang,请访问github.com/nginxinc/rtapi/releases,下载适用于您所用平台的二进制文件,并将其设为可执行文件。
- 按照以下示例,使用JSON或YAML格式指定一个或多个要查询的API端点(目标)。建议将JSON或YAML保存到名为endpoints.json或endpoints.yml的文件中。(对于JSON,也可以在下一步的
rtapi命令行中,将数据作为--data标志的参数传入。)每个端点仅有两个必需参数:target.url和target.method。如果未指定target.body和target.header,它们将保持为空。如果未指定query_parameters对象中的某个参数,rtapi将使用以下示例中显示的默认值。JSON输入示例
[
{
"target": {
"url": "https://www.example.com",
"method": "POST",
"body": "{\"id\":\"0\"}",
"header": {
"Content-Type": [
"application/json"
]
}
},
"query_parameters": {
"threads": 2,
"max_threads": 2,
"connections": 10,
"duration": "10s",
"request_rate": 500
}
}
]- YAML输入示例
- target: url: https://example.com/api/id
method: POST
body: '{"id":"0"}'
header:
Content-Type:
- application/json
query_parameters:
threads: 2
max_threads: 2
connections: 12
duration: 10s
request_rate: 500- 运行以下命令,其中
--file用于指定包含JSON/YAML格式API端点列表的文件,--output用于指定由rtapi生成的PDF报告。(如步骤2所述,可以在命令行中提供JSON输入:将--fileendpoints.json替换为--data,后跟JSON字符串。)
$ rtapi --file endpoints.json --output report.pdf- 要在终端中显示ASCII格式的指标表,请添加
--print标志,以替代--output标志(也可同时使用)。
$ rtapi --file endpoints.json --print解读PDF报告
由rtapi生成的PDF报告包含如下所示的响应延迟HDR直方图(数据来自使用NGINX Controller API Management Module配置的NGINX Plus API网关)。Y轴显示以毫秒为单位的延迟,X轴显示在低于给定延迟的时间内处理的调用所占比例,并以百分位数表示。(在以下示例中,为节省空间,我们压缩了Y轴。)
为突出显示API的结果,与坐标轴平行的虚线相交,以显示API在第99百分位的实测延迟(图中的99%)。要将API视为实时API,交点处的延迟必须低于30 ms。

NGINX如何提供帮助?
您的API延迟是否低于30 ms?
如果贵公司与我们接触的许多企业情况相似,答案很可能是否定的。许多API网关和API管理解决方案的延迟通常为100 ms,甚至达到500 ms也并不少见。
我们可以帮助您提升API性能。NGINX和NGINX Plus是业内速度出众的API网关,与NGINX Controller结合使用,可帮助您在不到30 ms内完成API调用的路由、身份验证、安全防护、流量整形和缓存。访问以下网址了解详情、咨询NGINX专家,并了解NGINX如何助您迈向实时API:nginx.com/real-time-api。
相关博客文章
NGINX Plus R26 正式发布
NGINX Plus R26通过缓存JSON Web密钥集加快JWT验证,并强化TLS握手,从而提升安全性。NGINX JavaScript的新功能包括增强对异步函数的支持,以及实现WebCrypto API。
使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击
gRPC具备开发人员设计和部署现代应用所需的速度与灵活性,但其开放性也使其极易受到第7层DoS攻击。NGINX App Protect DoS可保护gRPC应用免受此类破坏性攻击。
Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划
了解选择错误的Ingress控制器可能带来的风险,以及如何从关键方面着手,让您的选择更好地适应未来需求。
NGINX Plus R19 正式发布
NGINX Plus R19扩展了监控功能,不仅提供更多指标,还新增了指标分析方式;增加试运行模式,用于测试限速效果;增强键值存储,以支持IP地址范围;并使限速更加动态。
NGINX现已正式加入F5
NGINX现已正式成为F5的一部分。Gus Robertson现任F5 NGINX业务部门负责人。他阐述了两家公司在人才、文化和愿景方面融合的价值,以及双方将如何携手增强NGINX的开源产品和商业产品。

