NOTE

2.3 全链路压测

全链路压测的流量标记、数据隔离、数据构造与组件。

Testing & Performance更新于 约 1 分钟读完historical

这是历史学习笔记,可能存在过时或不完整的理解。

1. 什么是全链路压测

  • 在性能可以接受的前提下,测试系统整体可以支持的最大负载
  • 压测是对某个接口或者某个子系统进行测试,而全链路则是对系统整体进行测试

2. 为什么需要全链路压测

  • 找出系统的瓶颈,才能进行相应的优化和扩容
  • 验证系统整体是否能够支撑预估的力量

3. 如何设计全链路压测

3.1. 业务系统如何区分压测流量和正常流量

  1. 对压测数据进行特殊标记。比如在RPC框架的header放入压测标记
  2. 整个链路透传特殊标记。类似于如何设计链路追踪.md

3.2. 如何隔离压测数据

  • MySQL:影子库或者影子表
  • Redis:影子key或影子数据源;设置较短的过期时间
  • Kafka:影子topic或消息头标识;设置较短的过期时间
  • 外部第三方接口:Mock

3.3. 压测数据如何构造

  • 如果需要使用线上数据构造测试数据,应经过授权、脱敏和最小化处理;能用合成数据时优先使用合成数据。
  • 负责将测试数据落盘影子库
  • 根据目标场景导出相应的请求参数文件

3.4. 超大规模的压测流量如何发起

  • 实现发压、压测引擎数据和链路节点的实时监控等,最后形成压测报告
  • 比如Jmeter

4. 全链路压测组件

4.1. Takin

5. 参考

正在加载有帮助数量