上篇文章介绍了 Raft 共识算法,会去了解这些分布式的内容是因为工作上的需要。每个月代码总结也停了好久,用这篇文章完整总结一下前一段时间做的小工具:分布式定时负载测试,主要目的有一下几点:
- 测试内部开发 API 在不同请求发送速度和不同数量请求下的延迟,找出延迟过高的让开发程序员去优化。
- 不断增加请求的数量模拟增长的用户量,找出系统能处理请求数量的瓶颈。
- 监控系统在不同数量的请求下需要多少的资源:CPU, Memory等。
这个工具主要包括三部分:1. 负载测试,2. 定时器,3. 共识集群
负载测试
负载测试由两部分组成:1. 负载生成器,2. 负载发送器。这个部分的作用是将 JSON 格式的配置生成负载,然后按每秒请求数量、总共请求数量或者请求时常、通过多少个 HTTP 连接给内部系统的 API 发送负载,收集所有回复,算出每个 API 的延迟数据后,生成报告。更进一步,是可以发送按每秒请求数量,发送递增的请求数量,生成在递增请求数量的情况下,整个系统以及每个 API 在的延迟的报告。
负载生成器
这一部分最主要是要收集内部全部的 API,然后针对 API 去生成相对应 HTTP 请求需要的数据。不同公司的 API 文档不同,所以生成的方式不太一样。我们用的是 Spring,所以通过 Swagger 可以知道系统 API 的配置,用代码整合处理一下,就能生成对应的 HTTP 请求。