当前位置:网站首页>In Google Cloud API gateway APISIX T2A and T2D performance test
In Google Cloud API gateway APISIX T2A and T2D performance test
2022-07-31 00:48:00 【ApacheAPISIX Chinese Community】
背景
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 架构的虚拟机上持续发力,也期待它的后续迭代表现.
边栏推荐
- 寄存器(汇编语言)
- Strict Mode for Databases
- ES 中时间日期类型 “yyyy-MM-dd HHmmss” 的完全避坑指南
- MySQL系列一:账号管理与引擎
- [Yugong Series] July 2022 Go Teaching Course 016-Logical Operators and Other Operators of Operators
- (五)fastai应用
- Preparations for web vulnerabilities
- 【952. 按公因数计算最大组件大小】
- MySQL grant statements
- Thesis understanding: "Designing and training of a dual CNN for image denoising"
猜你喜欢
MySQL的触发器
Error occurred while trying to proxy request The project suddenly can't get up
【深入浅出玩转FPGA学习13-----------测试用例设计1】
[In-depth and easy-to-follow FPGA learning 14----------Test case design 2]
Oracle has a weird temporary table space shortage problem
DOM系列之动画函数封装
[In-depth and easy-to-follow FPGA learning 13---------Test case design 1]
Detailed explanation of 9 common reasons for MySQL index failure
Shell编程之条件语句
IOT cross-platform component design scheme
随机推荐
从笔试包装类型的11个常见判断是否相等的例子理解:包装类型、自动装箱与拆箱的原理、装箱拆箱的发生时机、包装类型的常量池技术
MySQL数据库面试题总结(2022最新版)
encrypted transmission process
pytorch双线性插值
MySQL notes under
Jmeter parameter transfer method (token transfer, interface association, etc.)
Unity2D horizontal version game tutorial 4 - item collection and physical materials
ShardingSphere之读写分离(八)
MySQL筑基篇之增删改查
Asser uses ant sword to log in
XSS related knowledge
图像处理工具设计
DOM系列之动画函数封装
Error occurred while trying to proxy request The project suddenly can't get up
ShardingSphere之垂直分库分表实战(五)
Mysql systemized JOIN operation example analysis
解决:Parameter 0 of method ribbonServerList in com.alibaba.cloud.nacos.ribbon.NacosRibbonClientConfigu
Basic usage of async functions and await expressions in ES6
pytorch bilinear interpolation
【深入浅出玩转FPGA学习13-----------测试用例设计1】