业界盛传的全链路压测是什么
全链路压测诞生于阿里巴巴双 11 备战过程,如果说双 11 大促是阿里业务的“期末考试”,全链路压测就是大考前的“模拟考试”,诞生后被誉为双 11 稳定性保障的“核武器”。全链路压测通过在生产环境对业务大流量场景进行高仿真模拟,获取最真实的线上实际承载能力、执行精准的容量规划,确保系统可用性。
分布式架构和业务快速发展给业务系统带来了不确定性。分布式环境的任意节点都可能成为瓶颈/短板/问题,同时系统可用性随着业务的快速增长,面临更严峻的挑战和不确定性。比如:
- 单链路压测缺少外部干扰和各种资源竞争,单链路压测的结果普遍比较乐观,不能反映真实的系统承载能力。
- 某些问题只有在真正的大流量下才会暴露,比如网络带宽、系统间影响、基础依赖等等。
- 全链路压测不仅仅是做压测,更多的是进行一次真实的大促预演,预案演练、限流验证、破坏性演练等高可用方案的统一验收。
其中全链路压测的常见问题就是如何做到生产环境的数据隔离:在生产环境进行写压测时,需要保证在压测进行的同时不影响线上业务的正常运行,那么就需要考虑将压测产生的数据与生产的真实数据隔离存储,避免脏数据对线上业务产生影响。阿里云的全链路压测平台除了提供了影子表方案之外,还提供了影子库的数据隔离方案。
在生产环境实施全链路压测的过程中,针对上文谈到的两种方案,又面临着数据隔离方案的选择问题,本文首先针对影子库、影子表两种方案进行介绍和对比,然后针对常见的场景,给出方案的选择建议。
全链路压测数据隔离方案的选择
目前全链路压测平台提供了影子库、影子表等解决方案。应该如何选择适合自己的方案呢?本文首先针对两种方案的原理进行阐述ÿ