NOTE
2.3 全链路压测
全链路压测的流量标记、数据隔离、数据构造与组件。
这是历史学习笔记,可能存在过时或不完整的理解。
1. 什么是全链路压测
- 在性能可以接受的前提下,测试系统整体可以支持的最大负载
- 压测是对某个接口或者某个子系统进行测试,而全链路则是对系统整体进行测试
2. 为什么需要全链路压测
- 找出系统的瓶颈,才能进行相应的优化和扩容
- 验证系统整体是否能够支撑预估的力量
3. 如何设计全链路压测
3.1. 业务系统如何区分压测流量和正常流量
- 对压测数据进行特殊标记。比如在RPC框架的header放入压测标记
- 整个链路透传特殊标记。类似于如何设计链路追踪.md
3.2. 如何隔离压测数据
- MySQL:影子库或者影子表
- Redis:影子key或影子数据源;设置较短的过期时间
- Kafka:影子topic或消息头标识;设置较短的过期时间
- 外部第三方接口:Mock
3.3. 压测数据如何构造

- 如果需要使用线上数据构造测试数据,应经过授权、脱敏和最小化处理;能用合成数据时优先使用合成数据。
- 负责将测试数据落盘影子库
- 根据目标场景导出相应的请求参数文件
3.4. 超大规模的压测流量如何发起
- 实现发压、压测引擎数据和链路节点的实时监控等,最后形成压测报告
- 比如Jmeter
4. 全链路压测组件
4.1. Takin
