功能性测试
概述
Phoenix 是宽拓自主研发的一款消息驱动型的高性能 Java 开发框架,专注于降低金融行业中业务复杂性高、性能要求高的应用系统的开发难度,助力研发团队打造专业、高效的微服务化的金融应用系统。 本篇测试报告主要验证了 Phoenix 提供的如下功能:
- 基于 bank-account 账户划拨功能正常
- Grafana 使用正常
- EventSourcing 使用正常
- Snapshot 使用正常
bank-account 划拨功能
概述
验证 bank-account 账户划拨功能是否可以正常使用。
原理介绍
bank-account 提供了随机划拨和定向划拨两个功能:
- 定向划拨:指定账户进行转入转出操作(每个账户默认初始有100元,划拨金额大于0为转入操作,划拨金额小于0为转出操作)
- 随机划拨:指定账户范围和转账次数,多个账户同时进行划拨操作。
测试方案
场景描述
分别使用 bank-account 提供的两个划拨接口进行下单测试。
校验方法
- 定向划拨:每次划拨之后校验余额
- 随机划拨:转入次数 + 转出次数 + 错误转出 = 转账次数
测试步骤
- 使用 bank-account 的下单页面以每秒 100 笔的速率下单,同时限制账户个数为 10 个,划拨总次数为 1000
- 待下单完毕后,进行校验. 使用 bank-account 的内存查询接口查询内存数据 (转入次数 + 转出次数 + 错误转出 = 转账次数)
-
使用定向转账功能,从 A00000000 账户中转出 100 元(通过以上图片发现经过随机转账之后 A00000000 账户中余额为 280 元) 转账之后,通过内存查询接口查看账户余额(余额为 180 元)(定向划拨中的划拨编号可以用来测试幂等逻辑,如果本次划拨编号和上次划拨编号一直,则账户金额 不会有任何变动)
测试结果
符合预期,bank-account 账户划拨功能可以正常使用。
phoenix metrics 功能
概述
Phoenix 联合 Grafana 提供了一套监控服务,可用于监控 Phoenix 应用运行过程中的各项指标。根据面板可以分为以下几块:
- phoenix jvm
- phoenix source aggregate
- phoenix entity aggregate
- phoenix transaction aggregate
- phoenix event store
- phoenix message elasticsearch
- phoenix event publish
- phoenix client
原理介绍
通过在 bank-account 服务中进行埋点,并将相应的数据上传至 Elasticsearch 最终通过 Grafana 友好的展示出来。不仅可以实时的监控 Phoenix 应用每次下单之后的运行情况,还可以分析上面的指标判断服务的性能。
- phoenix source aggregate、phoenix entity aggregate、phoenix transaction aggregate、phoenix event store、phoenix event publish、phoenix client、phoenix jvm: 这些面板中的数据采用 JMX + Prometheus + Grafana监控机制,可以实时采集服务的运行情况,并通过 Grafana进行展示,其中 JVM 和 phoenix overview 采集的phoenix server服务指标
- phoenix message:该面板展示了phoenix server处理后的所有事件的监控数据,EventPublish 将事件上传到消息队列,通过配置phoenix admin服务的上报配置,phoenix admin服务会将指定的消息队列中的事件数据持久化到 Elasticsearch 服务中,最后在Grafana进行展示
测试方案
场景描述
使用 bank-account 提供的随机划拨功能以固定的速率进行下单测试,然后打开 Grafana 监控面板监测数据。
校验方法
观察 Grafana 中展示出来的各个指标是否符合预期
测试步骤
-
使用 bank-account 的下单页面以每秒 100 笔的速率下单,同时限制账户个数为 10 个,划拨总次数为 10000
-
待下单完毕后,进行校验。 通过 Grafana 可视化面板查看
通过 Grafana 可视化面板可以观察到一共发送了 10000 条消息(总事务 = 10000),并全部处理完成。整个处理过程耗时平均在 30 ms以下。
-
在phoenix overview 根据实例IP地址查看其中一个节点的处理情况
通过上图我们还可以看出来,该节点一共处理了 5000 笔请求(一个 10000 笔请求,共两个处理节点),说明了多个节点之间是可以做到负载均衡的。
-
在phoenix message 面板通过查看每一类消息的处理情况(这里查看划拨失败事件的处理情况)
-
phoenix client监控图
-
phoenix eventPublish 监控图
-
JVM 监控图
测试结果
符合预期,可以证明 Grafana 监控功能够可以正常使用
phoenix console 功能
概述
phoenix console是 Phoenix 框架默认提供的轻量级、嵌入式监控平台,该平台共提供四大操作模块:
- overview
- cluster
- state manager
- event manager
原理介绍
phoenix console支持对 Phoenix 服务进行系统状态管理、事件管理、性能监控、业务监控、事务调用链追踪以及异常分析。
测试方案
校验方法
观察 phoenix console 中展示出来的各个功能是否符合预期、是否正常使用
服务地址:IP/phx-console
测试步骤
-
使用 bank-account 的下单页面以每秒 100 笔的速率下单,同时限制账户个数为 10 个,划拨总次数为 10000
-
待下单完毕后,进行校验。 通过 phoenix console 可视化页面查看
-
应用总览
- 扇子图
- 内存管理
- 事件管理
测试结果
符合预期,可以证明 Grafana 监控功能够可以正常使用
EventSourcing 功能
概述
Phoenix 保证其内存数据正确性的核心原理在于 EventSourcing (事件溯源技术)。
原理介绍
Phoenix 是 EDA 架构的框架,可以基于事件重塑内存,Phoenix 会对所有处理过的事件进行持久化,在节点重启或者聚合根漂移时通过 EventSourcing 重塑内存状态。