什么是全链路压测
基于实际的生产业务场景,模拟海量的用户请求和数据对整个业务链进行压力测试,并持续调优的过程。
1、生产环境和测试环境相互结合进行性能测试
2、生产环境进行性能测试,如果避免测试数据污染真实数据,一个是加上数据流量标识,另外一个是影子表,影子系统,将相关测试数据放入影子数据里,
1、业务模型梳理:
全链路性能测试范围主要是核心的业务,这一块需要梳理清楚,难点在于梳理清楚链路的边界,在核心链路的基础上,我们会有很多的分支业务,可以参与压测,有的不需要
2、底层支持
可以看到,底层主要需要提供下面的支持:
- 全链路透传压测标志:必须有一种在全链路透传压测标志的能力,并且必须基于一次请求,也就是同一个traceId,现在,大部分分布式业务都会接入trace系统,
- HTTP,RPC(DUBBO),MQ,线程池等
- 影子表:数据隔离,为了避免造成脏数据写入,可以考虑通过压测数据隔离处理,落入影子库,mock对象等手段,来防止数据污染;为了保持环境干净,参与压测的业务,要逐个排查自己依赖的数据库,然后创建影子表,影子表必须跟正常表的schema保持一致
- 日志-影子目录:为了防止压测流程的日志对正常日志造成干扰,需要改造日志组件,将压测流量产生的日志落入到影子目录。影子目录可以有日志组件自动创建。
- 缓存,大数据隔离:还有一些场景,比如,缓存层,大数据层对压测流量的处理也要考虑隔离,否则有可能压力崩溃。大数据可以直接不收集压测的数据。