全链路压测平台通过应用系统改造使线上环境可以同时处理正常流量和测试流量,以支持线上不影响正常用户访问的集群读写压测,获得最真实的线上实际承载能力数据。要实现全链路压测,涉及的产品很多,包括 络、应用、中间件、数据库、安全、数据等都需要改造,涉及的应用范围很广,涵盖核心交易链路的上百个应用。
那么如何实现全链路压测平台呢?
1.基础数据抽取
全链路压测的目的在于模拟双11,模拟的真实性尤为重要。基础数据(买卖、卖家、商品等)的构造是真实性保障的重要一环,为了模拟尽可能真实,全链路压测以线上数据为数据源,进行采样、过滤和脱敏,作为全链路压测的基础数据,数据量与线上数据保持同一个数量级,在数据库的sequence id上进行区间隔离。
2.链路与模型构造
全链路压测的链路代表要压测的业务范围,同一条链路需要构造海量的参数集合,代表不同用户的不同行为。链路范围、链路的访问量级、链路的参数集合、基础数据的特性一起构造了压测的业务模型。链路与模型的构造对压测结果的影响同样至关重要。
3.链路验证
在全链路压测平台的诞生阶段,链路验证耗费了压测项目组大量的时间和精力,电商业务具备复杂的业务特性,有上百条链路,每一条链路都需要确保能够让全链路压测引擎跑通,好在这是个一次性的工作,跑通以后出问题的概率不大,全链路压测平台也将链路验证功能集成到平台当中,能够自动化完成对压测链路的验证。
4.业务改造
全链路压测有不少地方需要在业务系统针对压测流量进行相应改造。比如压测链路的重复执行:全链路压测通常会进行好几个小时,这一特性要求链路能够被重复执行。实际情况当中,我们有不少链路并非是幂等的,需要针对存在这一特性的链路做专门的压测流量改造。再比如下游写流量的拦截、防止污染BI 表和线上推荐算法等场景都需要在业务系统进行相应改造。类似这样的改造点,在全链路压测早期时代非常多。
5.数据平台
数据平台是全链路压测的数据基地。由数据的准备、链路的构造、模型的构造等一系列重要模块构成,随着全链路压测的不断演进,数据平台沉淀了一系列自动化和智能化的基础设施,大幅提升全链路压测数据准备的效率和模型精确性。
6.流量平台
流量平台是全链路压测的CPU,主要由两大部件构成:
全链路压测操控中心,进行压测的配置和操控、数据的监控以及对压测引擎集群的管控。
压测引擎,由控制台统一管控,部署在外 CDN集群,进行登录、session同步,发送各种协议的压测请求、状态统计。
7.影子表
数据的隔离是全链路压测诞生阶段的一大难题。全链路压测的链路有读有写,并且在线上进行,为了不污染到线上的正常数据,全链路压测在同一个数据库的实例上对数据库表建同样结构的影子表来进行数据的隔离。
8.中间件改造
全链路压测的流量通过在链路上带上特定的压测参数进行区分,如果缺乏相应中间件的支持,在调用到下游系统的时候,压测标志就丢失了。因此需要所有中间件的协议都支持对压测流量的识别,使得压测标识能够随着调用传递下去,使得下游的应用、基础中间件和存储都能够识别压测流量。
9.安全机制
全链路压测的安全机制分两层:第一层是安全的监控和保护,建立非法流量的监控机制,正常用户访问不了测试数据,测试账户也访问不了正常数据,防止数据错乱;并且设置压测引擎集群的白名单,防止恶意访问;第二层是对压测流量的安全过滤,针对压测流量放松安全策略,使得压测流量不被判别为攻击流量。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!