网约车全链路压测概述
业务背景
出行领域技术栈复杂,生产环境采用混合云架构,涉及多机房、多业务线和多集群,对系统稳定性提出高要求。
什么是出行全链路压测
通过模拟海量司乘用户行为,在线上生产环境对核心链路执行系统级压力测试,达到容量评估与规划以及风险挖掘的目的。
全链路压测发展历程
经历了从单一链路测试到全链路模拟的演进,逐步完善工具链和通路建设。
全链路压测关键技术
-
压测工具链建设
- 压测通路建设
- 流量染色&标识透传
- 数据库:使用影子表(MySQL依赖DBProxy,RT依赖压测标记,ES依赖压测标记)
- Trace数据通道:APP端或接入层生成traceid,RPC链路唯一
- Public日志:通过publickey隔离,业务日志增加hintCode字段,BI使用Kafkatopic隔离
- RPC调用时透传trace数据,生成新的spanid
- 数据隔离
- 缓存:逻辑Key隔离(Codis/Kedis、Fusion)
- MQ:逻辑隔离
- 压测流量传递
- RPC透传:HTTP、Thrift、Dubbo协议
- 数据库访问:DBProxy等
- 下游系统决策是否订阅压测流量
- 压测通路改造
-
压测过程组织
- 业务核心L1S链路观测
- 度量目标:精细化下钻压测核心链路,提升仿真与效果
- 技术挑战:业务核心链路梳理不完善,缺乏链路巡检分析产品
- 落地思路:
- 推动业务方向梳理完善L1S链路数据
- 参考生产系统可观测产品,批量维护黄金指标&错误码分布
- 结合压测流量及线上放火探测节点强弱依赖关系
- 分阶段实现压测流量监控数据关联,提高问题定位效率
-
业务核心模块容量水位大盘
- 整合容量管理手段,提升容量评估准确性和效率
- 容量计算逻辑:
- 人工标注:90天有效期
- 哨兵压测:90天有效期,月粒度执行
- 阶段峰值:自动更新+校验
- 全链路压测:仿真度达标后覆盖旧值
- 历史线上峰值:60天有效期
全链路压测仿真度度量
-
仿真度建设思路
- 确定度量范围及对象
- 分解及选择度量要求
- 调研及选型度量方法及公式
-
仿真度度量意义
- 看清全链路压测覆盖现状
- 发现压测覆盖薄弱点,形成正向覆盖补充闭环
-
仿真度提升挑战
- 时空不确定性
- 订单距离/司机接送驾时间不确定性
- 成单不确定性
- 集团业务混布导致公共模块抢占不确定性
-
接入层接口仿真度模型调优
- 第一步:目标流量预测
- 降噪算法
- 度量目标:评估压测场景与期望场景的相似度
- 聚焦L1S链路模块
- 模块接口/模块流量与业务单量拟合度:
- 线性拟合公式:𝑦=𝑤!𝑥+𝑒
- R方值计算:∑#+𝑦#−𝑦"
- 拟合度越高,流量仿真预测结果越准确
- 品类&场景覆盖:
-
仿真度效果展示
-
压测精度及效率提升
- 精细化资源仿真度:
- 准确估算核心链路模块压测限流值
- 预测重保时段生产流量峰值
- 扩展压测资源验证范围至机房级
- 压测护堤时效