Skip to main content
Version: 2.5.0

伸缩性测试

概述

可伸缩性(可扩展性)是一种对软件系统计算处理能力的设计指标,在系统扩展成长过程中,高度可伸缩的软件能够保证旺盛的生命力,通过很少的改动甚至只是硬件设备的添置,就能实现整个系统处理能力的线性增长。系统的伸缩性可以使用以下两个维度衡量:

  1. 纵向伸缩: 在同一个逻辑单元内增加资源来提高处理能力,比如增加 CPU 主频。
  2. 横向伸缩: 增加更多逻辑单元的资源,令它们像是一个单元一样工作来提高处理能力。

Phoenix 重点关心线性的横向伸缩能力,Phoenix 的处理单元是聚合根,Phoenix 框架可以根据 CPU 核心数动态调整处理聚合根的能力,可以根据节点个数动态调整每个节点处理聚合根的个数。 下面分别通过实例的伸缩和 CPU 核心数量的伸缩来证明 Phoenix 的横向伸缩能力。

实例数量伸缩测试

测试场景

Phoenix 框架弹性测试(实例数量伸缩)基于 bank-account 服务进行。通过在系统濒临崩溃时增加 Kubernetes 环境中 bank-account 服务集群的节点数量,来证明 Phoenix 的弹性。

校验方法

测试过程中使用 Grafana 监控请求的处理情况,观察系统的负载能力(Phoenix 监控图中的 TPS )在增加 bank-account 实例前后的变化。

测试环境

实例个数CPU内存聚合根
增加实例前2个2C2Gb10个
增加实例后4个2C2Gb10个

测试步骤

  1. 在 Kubernetes 环境中,使用 bank-account 服务,部署两个节点,给定每个节点 2C(2个核心)的 CPU,不断调试前端的压测请求数量,观察 Grafana,测出服务的极限 TPS (这里测试为 2000/s)。
  2. 保证每个节点的 CPU 资源不变,前端的压测程序持续以 2000/s 的 TPS 发送请求。
  3. 待服务处理一段时间之后,节点数量增加到 4 个.
  4. 待服务继续处理一段时间之后,关闭前端请求。观察 Grafana。

show

  1. 观察压测结果,发现前期(只有两个节点的时候)服务的处理能力不太稳定,并且处理耗时较高。当增加两个节点之后,服务的处理能力稳定在 2000 左右,和前端的请求速率持平,且消息处理耗时明显降低。

CPU资源伸缩测试

测试场景

Phoenix 框架高伸缩性测试(CPU 资源伸缩)基于 bank-account 服务进行。通过伸缩 Kubernetes 环境中 bank-account 服务集群节点的 CPU 核心数限制阈值,来证明 Phoenix 能够根据 CPU 资源来进行横向伸缩,以增大或者减少整个系统的负载能力。

校验方法

测试过程中使用 Grafana 监控请求的处理情况,观察系统的负载能力(Phoenix 监控图中的 TPS)在增加 CPU 资源(核数)前后的变化。

测试环境

实例个数CPU内存聚合根
增加实例前2个2C2Gb10个
增加实例后2个4C2Gb10个

测试步骤

  1. 在 Kubernetes 环境中,使用 bank-account 服务,创建两个节点,给定每个节点 2C 的 CPU,不断调试前端的压测请求数量,观察 Grafana,观察 Grafana,测出服务的极限 TPS (这里测试为 2000/s)。
  2. 保证实例个数不变,前端的压测程序持续以 2000/s 的 TPS 发送请求。
  3. 待服务处理一段时间之后,升级 CPU 核心为 4C
  4. 待服务继续处理一段时间之后,关闭前端请求。观察 Grafana。

show

  1. 观察压测结果,发现在增加 CPU 资源前后服务均能较为平稳的进行处理。

结论

经过上述两个维度的横向伸缩性验证,证明 Phoenix 具有线程级别和进程级别的横向伸缩能力。