在服务数量增多到必定程度,出问题的可能性愈来愈大,如今各类常见的架构手段,高可用手段都是为了提高系统的可用性,给用户提供更好的体验。而全链路压测则至关于对服务进行一次体检,了解当前系统的情况html
定义:基于线上环境和实际业务场景,经过模拟海量的用户请求,来对整个系统链路进行压力测试。ios
目的:git
压测极限标准github
为模拟更真实的环境,压测机器与线上机器同等配置,仿照线上机器的部署状况部署。压测数据尽量采用线上真实数据。数据库
复用线上环境压测,在低峰期,好比凌晨3点钟,回放读请求,写请求没法压测,由于写请求会致使数据污染。服务器
压测能够采用本地平常环境,或者采用线上环境:session
平常环境:要求低,若是想要效果然实,能够构建与线上服务如出一辙的配套设施,缺点是成本高架构
线上环境:彻底采用线上环境,测量机器的抗压能力,流量逐渐的分配到愈来愈少的服务器上,观察10分钟以上,直到服务器处理的极限。app
流量复用工具:TCPcopytcp
方案一很难对整个集群的进行压测,容易以偏概全,没法评估系统的真实性能。若是想作全链路压测:
尽量构造真实数据
压测线上真实环境
核心技术
压测标识透传
压测服务隔离,不能由于压测影响正常服务
压测数据隔离,不影响真实数据
使用影子表进行数据隔离,线上使用同一个数据库,只是在写入数据的时候将数据写入到另一张“影子表”中。
附录中给了不少互联网大厂的真实案例,能够一块儿学习