API 网关 Apache APISIX 在 Amazon Graviton3 上的安装与性能测试

亚马逊云开发者
企业官方账号
2022-06-08 18:46:05

亚马逊云科技在 2022 年 5 月底正式推出基于  Amazon Graviton3 处理器的计算优化型实例C7g[1]。

与 Amazon Graviton2 处理器相比,基于领先的 DDR5 内存技术,Graviton3 处理器可提供高达 25% 的性能提升、高达 2 倍的浮点性能以及 50% 的内存访问速度;在性能与同类 EC2 实例相同的情况下,Graviton3 还可减少 60% 的能源。

那么实际数据会怎样呢?让我们以网络 IO 密集型的 API 网关为例,来看看 Graviton3 的表现如何。在这里我们使用 Apache APISIX 在 Graviton2 (C6g) 和 Graviton3 (C7g) 两种服务器环境下进行性能对比测试。

Apache APISIX 是一个云原生、高性能、可扩展的 API 网关。基于 NGNIX+LuaJIT 和 etcd 来实现,和传统 API 网关相比,APISIX 具备动态路由和插件热加载的特点,特别适合云原生架构下的 API 管理。

 

 

准备:安装部署

在进行测试前,需要准备一台搭载 ARM64 芯片的服务器,这里我们选用了 Amazon EC2 C7g(现在只有这个型号才搭载 AWS Graviton3),操作系统选择了 Ubuntu 20.04。

同时安装 Docker。

sudo apt-get update && sudo apt-get install docker.io

 目前,APISIX 已经发布了最新版本的 ARM64 镜像,可以使用 Docker 方式进行一键部署。具体过程可参考下方:

1、启动 etcd

sudo docker run -d \
--name etcd -p 2379:2379 -e ETCD_UNSUPPORTED_ARCH=arm64 \
-e ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 \
-e ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379 \
rancher/coreos-etcd:v3.4.16-arm64

2、启动 APISIX

sudo docker run --net=host -d apache/apisix:2.14.1-alpine

3、注册路由

curl "http://127.0.0.1:9080/apisix/admin/routes/1" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
  "uri": "/anything/*",
  "upstream": {
    "type": "roundrobin",
    "nodes": {
      "httpbin.org:80": 1
    }
  }
}'

4、访问测试

curl -i http://127.0.0.1:9080/anything/das
HTTP/1.1 200 OK
.....

 

AWS Graviton2 和 AWS Graviton3 的性能对比

根据前文的操作,基于官方脚本成功完成了 APISIX 在 AWS Graviton3 处理器上安装和兼容性测试。下面让我们来看看 Apache APISIX 在 AWS Graviton2(C6g)和 AWS Graviton3(C7g)上的性能表现。

为了方便测试,本示例中 APISIX 只开启了一个 Worker,下面的性能测试数据都是在单核 CPU 上运行的。

 

场景一:单个上游

该场景下使用单个上游(不包含任何插件),主要测试 APISIX 在纯代理回源模式下的性能表现。在本地环境中进行测试:

# apisix: 1 worker + 1 upstream + no plugin
# 注册路由
curl http://127.0.0.1:9080/apisix/admin/routes/1 \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uri": "/hello",
    "plugins": {
    },
    "upstream": {
        "type": "roundrobin",
        "nodes": {
            "127.0.0.1:1980":1
        }
    }
}'

 

场景二:单上游+多插件

另一场景则使用单上游与多插件配合,在这里使用了两个插件。主要测试 APISIX 在开启 limit-countprometheus 两个核心消耗性能插件时的性能表现。

# apisix: 1 worker + 1 upstream + 2 plugins (limit-count + prometheus)
# 注册路由
curl http://127.0.0.1:9080/apisix/admin/routes/1 \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uri": "/hello",
    "plugins": {
        "limit-count": {
            "count": 2000000000000,
            "time_window": 60,
            "rejected_code": 503,
            "key": "remote_addr"
        },
        "prometheus": {}
    },
    "upstream": {
        "type": "roundrobin",
        "nodes": {
            "127.0.0.1:1980":1
        }
    }
}'

 

数据对比

在上述两种场景下,分别从请求处理和延迟时间两个层面进行了相关测试与对比。结果如下:

1、QPS 对比

2、Latency 对比

 

单个上游

单个上游+两个插件

 

AWS Graviton2

AWS Graviton3

AWS Graviton2

AWS Graviton3

QPS

(request/s)

13000

23000

(提升76%)

11000

18000

(提升63%)

Latency

(ms)

1.11

0.68

(降低38%)

1.39

0.88

(降低37%)

 

从上方数据可以看到,在 API 网关这样 CPU 密集型的计算场景下,AWS Graviton3 比 AWS Graviton2 的性能提升了 76%,同时延迟还降低了 38%。这个数据比开头提到的 AWS 官方给出的数据(25%性能提升)还要优异。

 

总结

本文主要通过使用 Apache APISIX 进行了 AWS Graviton3 与 AWS Graviton2 的性能对比,可以看到在 API 网关 CPU 密集型的计算场景下,AWS Graviton3 可谓展示了性能怪兽的属性。当然,也推荐大家多多进行实践,期待后续更多计算密集型项目的测试数据。

参考资料:

[1]https://aws.amazon.com/cn/blogs/aws/new-amazon-ec2-c7g-instances-powered-by-aws-graviton3-processors/

[2]https://github.com/apache/apisix/blob/master/benchmark/run.sh


关于 Apache APISIX

Apache APISIX 是一个动态、实时、高性能的开源 API 网关,提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。

作为 API 网关,Apache APISIX 可以帮助企业快速、安全地处理 API 和微服务流量,可应用于网关、Kubernetes Ingress 和服务网格等场景。目前已被普华永道数据安全团队、腾讯蓝军、平安银河实验室、爱奇艺 SRC 和源堡科技安全团队等专业网络安全机构测试,并得到了高度认可。

...全文
135 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

732

社区成员

发帖
与我相关
我的任务
社区描述
亚马逊云科技在CSDN的官方开发者社区会分享云计算、AI、IoT等领域前沿技术,以及亚马逊云科技最新产品技术,帮助开发者学习成长,在这里你能看到大咖分享,与Hero对话,还有builder分享的实操。
学习经验分享 企业社区
社区管理员
  • 亚马逊云开发者
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

亚马逊云科技会分享云计算、AI、IoT等领域前沿技术,以及亚马逊云科技最新产品技术,帮助开发者学习成长;

在这里你能看到大咖分享,与Hero对话,还有builder分享的实操心得;

同样,我们也欢迎开发者交流互动,打造CSDN上亚马逊云开发者及爱好者的技术社区;

 

试试用AI创作助手写篇文章吧