亚马逊AWS官方博客
AWS Graviton4 加速 Apache APISIX 消息处理
![]() |
Amzon Graviton4 简介
2023 re:Invent 大会宣布了 Amazon Graviton4 处理器,该芯片使用 ARM Neoverse V2 内核定制设计的 ARM 架构构建,集成了 730 亿个晶体管,针对提供高性能和能效进行了优化。
![]() |
最近,亚马逊云科技宣布 Amazon EC2 R8g 实例正式上线,这些实例由 Graviton4 处理器提供支持。R8g 实例基于 Amazon Nitro 系统构建,通过将 CPU 虚拟化、存储和网络功能卸载到专用硬件和软件上,增强了工作负载的性能和安全性。R8g 实例非常适合内存密集型工作负载,如数据库、内存缓存和实时大数据分析。
与基于 Amazon Graviton3 的实例相比,性能提升高达 30%,能耗降低 60%。通过下图,您可以概览 Graviton4 和 R8g 实例相比上一代的改进和增强,您还可以通过查看 Amazon EC2 R8g 实例 和 Amazon Graviton Technical Guide 了解更多详细信息。
![]() |
Apache APISIX 简介
Apache APISIX 是一个开源的云原生、高性能的 API 网关。它基于 Nginx 的 Lua 引擎 OpenResty 构建,利用 Nginx 的高性能和可扩展性,实现 API 网关功能。它的技术架构如下图所示:
![]() |
APISIX 主要有以下几个常用功能和使用场景:
- API 管理和路由:提供高性能的 API 代理和负载均衡功能,支持动态路由配置和匹配,支持多种认证方式,如 JWT、OAuth 等;
- 流量管控:提供丰富的插件机制,可以实现限流、熔断、监控等功能。可以根据 IP、用户等维度进行精细化流量控制;
- 微服务支持:支持服务发现和注册,可以动态感知后端服务状态。提供灰度发布、AB 测试等功能,支持微服务治理;
- 安全防护:支持 SSL/TLS 加密,提供 CORS、IP 黑白名单等安全防护机制;
- 监控和分析:提供丰富的指标监控,如 QPS、延迟、错误率等,可与 Prometheus、Grafana 等监控工具集成;
- 可扩展性:基于 OpenResty 提供了强大的插件系统,可以灵活地扩展功能基于 Lua 脚本的插件系统,可定制各种功能。支持多种语言插件,如 Python、Java 等。
APISIX 是一个功能强大、高性能、可扩展的 API 网关,广泛应用于微服务架构、云原生应用等场景中。它具有灵活性强、部署简单等特点。您可以通过 https://github.com/apache/apisix 了解更多信息。
APISIX on Graviton 性能/性价比总结
本文比较 4 种相同大小、不同规格的 EC2 实例在执行 APISIX Benchmark 时的性能和性价比。
说明:在本文发布时,基于 Graviton4 的 EC2 实例仅 R8g 正式可用,因此在进行 Benchmark 对比时,采用了 R(内存优化型)系列实例进行对比。这一选择并不代表你在实际生产环境中一定要选择 R 系列实例,您可以根据实际需要选择 C(计算优化型),M(通用型)或 R(内存优化型)系列实例。
性能对比
考虑到生产环境中业务量和业务模型具有复杂性,并不由单一固定的业务量组成,因此我们在测试中预置多种场景的组合,采用 RPS(Request Per Second)来衡量 APISIX 的处理能力,并对所有场景的 RPS 值求平均值,用以体现该 EC2 实例在处理 APISIX 消息时的综合能力。总结如下:
- r8g.2xlarge相比 r7i.2xlarge,性能提升 14.9%
- r8g.2xlarge 相比 r6i.2xlarge,性能提升 63.4%
- r7g.2xlarge 相比 r6i.2xlarge,性能提升 17.5%
![]() |
![]() |
性价比对比
在 EC2 实例上的某个工作负载的性价比信息,首先可以用在评估单台实例上性能水平;其次,在评估集群节点数量时也可以作为参考,在相同业务量的情况下,更高的性价比代表集群可使用更少的节点满足业务需求。
以上述 4 种实例在 us-west-2 区域的 1 年期无预付 RI 价格的有效小时费率为基础,计算性价比,总结如如下:
- r8g.2xlarge 相比 r6i.2xlarge ,性价比提升 75%
- r8g.2xlarge 相比 r7i.2xlarge ,性价比提升 30%
- r7g.2xlarge 相比 r6i.2xlarge ,性价比提升 35%
- r7g.2xlarge 相比 r7i.2xlarge ,性价比提升 1.5%
![]() |
![]() |
Benchmark 简介
本文仅以 R8g 实例展示测试环境的搭建过程,您可以此作为参考在其他规格的实例完成环境搭建。
Benchmark 组网
- 节点类型和数量:1 * r8g.2xlarge
- EBS 磁盘:80GB GP3(默认性能 125MB/s 吞吐,3,000 IOPS)
- 操作系统:Ubuntu 22.04
- 主要软件版本:
- Etcd 3.5.4
- APISIX 3.9.1
- Wrk 4.2.0
Benchmark 工具和场景
采用 APISIX 官方 Benchmark 工具集进行本次测试,您可以通过查看以下链接了解详情:https://github.com/apache/apisix/tree/master/benchmark
本次测试采用 8 vCPU 实例,因此在测试场景中 worker 数量选择不大于 8(1,2,4,6 等),测试场景如下:
worker 数量 | 测试场景 |
1 | 1 worker + 1 upstream + no plugin |
1 worker + 1 upstream + 2 plugins | |
fake empty apisix server: 1 worker | |
2 | 2 worker + 1 upstream + no plugin |
2 worker + 1 upstream + 2 plugins | |
fake empty apisix server: 2 worker | |
4 | 4 worker + 1 upstream + no plugin |
4 worker + 1 upstream + 2 plugins | |
fake empty apisix server: 4 worker | |
6 | 6 worker + 1 upstream + no plugin |
6 worker + 1 upstream + 2 plugins | |
fake empty apisix server: 6 worker |
其中使用到的 plugin 为 limit-count 和 Prometheus。
部署 APISIX 测试环境
本章节将详细描述如何搭建 APISIX 单节点运行环境,并执行 Benchmark 测试的步骤。
创建 EC2 实例
本次使用单节点测试环境,所有软件和 Benchmark 工具集均部署在该节点。您可以参考教程:Amazon EC2 Linux 实例入门完成这台 EC2 实例的创建。
安装 Benchmark 工具
通过 SSH 登录到 EC2 实例(ubuntu 用户),执行下面命令安装必须的基础软件。
设置 EC2 实例的 CPU 架构变量:
安装开发工具集:用于软件的编译构建。
安装 OpenResty:
安装 wrk 工具:Benchmark 工具将调用 wrk 发起测试流量。
安装 APISIX 软件
安装和启动 etcd 组件:
安装 APISIX 软件:
执行 Benchmark 任务
测试任务主要用到 Benchmark 工具集中的 run.sh 测试脚本,该脚本带有一个命令行参数,该参数表示启动的 worker 数量。本文中使用 worker 数量 1,2,4,6 分别进行测试。
查看 Benchmark 执行结果
在每次 run.sh 执行过程中,SSH 界面会打印各场景的结果,如下图所示,每个场景将执行 2 次,您可以根据需要取最大值、最小值或平均值。
![]() |
当所有的测试任务都完成之后,您可以汇总 RPS 信息,用以衡量 APISIX 在该实例的性能水平。同时,您通过在多种 EC2 实例规格上执行相同的 Benchmark 任务,进而横向评估 APISIX 在多种 EC2 实例的性能水平。