当前位置:网站首页>API 网关 APISIX 在Google Cloud T2A 和 T2D 的性能测试
API 网关 APISIX 在Google Cloud T2A 和 T2D 的性能测试
2022-07-31 00:35:00 【ApacheAPISIX中国社区】
背景
2022 年 7 月 13 日 Google Cloud 发布了第一个基于 Arm 架构的 Tau T2A 的 VM 系列预览版。T2A VM 由基于 Ampere Altra Arm 的处理器提供支持,谷歌宣称其拥有极具吸引力的价格和卓越的单线程性能。
值得注意的是,Ampere Altra Arm 是一款云原生处理器,基于 Ampere Altra Arm 处理器的 Tau T2A 虚拟机也因此能以高效的方式运行横向扩展的云原生应用程序。
那么具体实际体验和性能如何呢?我们以一个云原生的 API 网关为例,带大家一起看看 Google Cloud Tau T2A 虚拟机的表现。这里,我们选择了 Apache APISIX 在 Google Cloud Tau T2A 服务器环境上进行安装测试。
Apache APISIX 是一个云原生、高性能、可扩展的 API 网关。基于 NGNIX + LuaJIT 和 etcd,APISIX 与传统 API 网关相比,具有动态路由和插件热加载特性,特别适合云原生架构下的 API 管理。
前期准备
首先需要在 Google Cloud 上启动一个 T2A 实例,操作系统选择 Ubuntu 20.04。
然后安装 Docker,方便后续使用容器化的方式来安装部署 Apache APISIX。
sudo apt-get update && sudo apt-get install docker.io
部署 Apache APISIX
Apache APISIX 使用 etcd 作为配置中心,所以这里需要先启动一个 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
启动 Apache APISIX 实例。
sudo docker run --net=host -d apache/apisix:2.14.1-alpine
注册路由。
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 } }}'
访问测试。
curl -i http://127.0.0.1:9080/anything/dasHTTP/1.1 200 OK.....
Google Cloud T2D vs Google Cloud T2A
从上述操作来看,Apache APISIX 在 Google Cloud Tau T2A 上的安装和兼容性测试都能顺利完成。那么 Google Cloud T2A 的实际性能到底如何呢?接下来我们将使用 Apache APISIX 分别在 Google Cloud T2A 和 Google Cloud T2D 上做性能测试对比,来看看其实际表现。
Google Cloud T2D 是 Google Cloud Tau 系列的另一款机型,是基于 AMD x86 架构的, 所以上述 etcd 安装步骤略有不同:
sudo docker run -d --name etcd \ -p 2379:2379 \ -e ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 \ -e ALLOW_NONE_AUTHENTICATION=yes \ -e ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379 \ bitnami/etcd:3.4.16
为简单起见,本次测试 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 } }}'
场景 2:单个上游 + 两个插件
该场景下将使用单个上游与两个插件进行,主要测试 APISIX 在开启 limit-count
和 prometheus
两个核心性能消耗插件时的表现。
# 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 } }}'
数据比较
上述两个场景中,分别从请求 QPS(每秒查询数) 和延迟时间两个层面进行了相关的测试对比。结果如下:
- QPS 比较
- 请求延迟比较
单个上游 | 单个上游+两个插件 | |||
---|---|---|---|---|
Google Cloud T2D | Google Cloud T2A | Google Cloud T2D | Google Cloud T2A | |
QPSrequest/sec | 12500 | 11300 | 10600 | 9900 |
Latency(ms) | 1.26 | 1.39 | 1.45 | 1.60 |
从以上数据也可以看出,在 API Gateway 等网络 IO 密集计算场景下,T2A 相比同系列的 T2D 虚拟机,在性能上仍然有差距。不过另一个好消息是,在同等配置情况下,T2A 的价格要比 T2D 便宜 10% 左右。在实际机器选型时,用户可以根据自己的业务体量来灵活决策。
总结
本文主要使用 Apache APISIX 对比 Google Cloud T2A 和 Google Cloud T2D 的性能。可以看出,在 API 网关等网络 IO 密集计算场景中,Google Cloud T2A 相比 T2D,表现虽然不是那么亮眼,但是作为 Google Cloud 在 Arm 架构下的第一次尝试,相信其会在 Arm 架构的虚拟机上持续发力,也期待它的后续迭代表现。
边栏推荐
- Summary of MySQL database interview questions (2022 latest version)
- unity2D横版游戏教程4-物品收集以及物理材质
- 【愚公系列】2022年07月 Go教学课程 013-常量、指针
- 小程序-全局数据共享
- Detailed explanation of 9 common reasons for MySQL index failure
- mysql主从复制及读写分离脚本-亲测可用
- [C language course design] C language campus card management system
- Gabor filter study notes
- xss bypass: prompt(1)
- [In-depth and easy-to-follow FPGA learning 14----------Test case design 2]
猜你喜欢
【Multithreading】
正则表达式密码策略与正则回溯机制绕过
【c语言课程设计】C语言校园卡管理系统
DNS resolution process [visit website]
IOT cross-platform component design scheme
寄存器(汇编语言)
MySQL grant statements
Error ER_NOT_SUPPORTED_AUTH_MODE Client does not support authentication protocol requested by serv
Homework: iptables prevent nmap scan and binlog
Niuke.com question brushing training (4)
随机推荐
In-depth understanding of the auto-increment operator from two error-prone written test questions
GO GOPROXY代理设置
Niuke.com question brushing training (4)
MySQL Series 1: Account Management and Engine
如何在WordPress网站上添加导航菜单
Asser uses ant sword to log in
Mysql体系化之JOIN运算实例分析
Kotlin协程:协程上下文与上下文元素
C语言力扣第48题之旋转图像。辅助数组
Understand from the 11 common examples of judging equality of packaging types in the written test: packaging types, the principle of automatic boxing and unboxing, the timing of boxing and unboxing, a
ELK部署脚本---亲测可用
网络常用的状态码
从两个易错的笔试题深入理解自增运算符
[In-depth and easy-to-follow FPGA learning 13---------Test case design 1]
The difference between h264 and h265 decoding
How to import game archives in joiplay emulator
【Yugong Series】July 2022 Go Teaching Course 017-IF of Branch Structure
How to ensure the consistency of database and cache data?
Summary of MySQL database interview questions (2022 latest version)
数据库的严格模式