1. 全链路压测的数据隔离,影子库(Shadow DB)和流量标记的实现方案?
全链路压测的数据隔离如何实现?影子库(Shadow DB)和流量标记的方案是怎样的?
- 影子库与影子表的隔离机制
- 流量标记的透传与识别
- 数据隔离的配置与路由
数据隔离通过"影子库/影子表 + 流量标记"实现。流量标记:在压测请求入口注入标记(如 header 中的压测标识、traceId 前缀),并通过中间件(RPC、MQ、MyBatis/Druid 等)在整条链路透传,使每个数据访问都能识别压测流量。影子库:检测到压测标记后,数据访问层把读写路由到影子库(Shadow DB)或影子表(Shadow Table),而非真实业务表。实现方式:在数据库连接层(如 MyBatis 拦截器、Druid 解析)根据标记改写 SQL 目标表名,或配置独立的影子库连接;写入影子表的数据不参与真实业务报表与计费。关键点:标记必须全程透传不被丢失,路由规则必须覆盖所有写路径与读路径,且影子库/表结构与真实表保持一致。
数据隔离是全链路压测的前提,否则压测数据会污染真实业务。核心是"标记识别 + 路由改写":标记让链路感知压测流量,路由把数据写入影子资源。影子库适合整体隔离,影子表适合在不新增库的情况下隔离,两者可结合。