全链路压测(影子库与影子表之争)
作者: 葛天萌(智云)
业界盛传的全链路压测是什么
全链路压测诞生于阿里巴巴双 11 备战过程,如果说双 11 大促是阿里业务的“期末考试”,全链路压测就是大考前的“模拟考试”,诞生后被誉为双 11 稳定性保障的“核武器”。全链路压测通过在生产环境对业务大流量场景进行高仿真模拟,获取最真实的线上实际承载能力、执行精准的容量规划,确保系统可用性。
分布式架构和业务快速发展给业务系统带来了不确定性。分布式环境的任意节点都可能成为瓶颈/短板/问题,同时系统可用性随着业务的快速增长,面临更严峻的挑战和不确定性。比如:
- 单链路压测缺少外部干扰和各种资源竞争,单链路压测的结果普遍比较乐观,不能反映真实的系统承载能力。
- 某些问题只有在真正的大流量下才会暴露,比如网络带宽、系统间影响、基础依赖等等。
- 全链路压测不仅仅是做压测,更多的是进行一次真实的大促预演,预案演练、限流验证、破坏性演练等高可用方案的统一验收。
在生产环境实施全链路压测的过程中,针对上文谈到的两种方案,又面临着数据隔离方案的选择问题,本文首先针对影子库、影子表两种方案进行介绍和对比,然后针对常见的场景,给出方案的选择建议。
全链路压测数据隔离方案的选择 【全链路压测(影子库与影子表之争)】目前全链路压测平台提供了影子库、影子表等解决方案。应该如何选择适合自己的方案呢?本文首先针对两种方案的原理进行阐述,然后从性能、稳定性、成本三个考量指标进行对比。
方案一:影子库
如图 1 所示,针对影子库方案,是在同一个实例上建立对应的影子库。用户服务挂载的全链路压测探针获取到流量标之后进行相应的旁路处理,如果是影子流量,那么会从影子连接池中获取影子连接供业务侧使用,从而将压测流量产生的数据旁路到对应的影子库中,以此达到数据和生产库隔离的效果,从而避免了压测流量产生的数据对生产库造成污染。
文章图片
图 1:影子库方案基本原理
方案二:影子表
如图 2 所示,类似影子库方案,针对影子表方案,是在同一个实例上的同一个数据库上建立对应的影子表。用户服务挂载的全链路压测探针获取到流量标之后进行相应的旁路处理,如果是影子流量,那么,探针会针对本次的 DB 调用进行 SQL 解析和替换,从而将压测流量产生的数据旁路到对应的影子表中。
文章图片
图 2:影子表方案基本原理
方案对比 本文主要从性能、稳定性、成本三个方面来阐述两种方案的优缺点。
文章图片
图 3:方案对比
性能
机器规格:4c8g
并发规格:需同时模拟正常和压测流量两种类型的流量,这里以 2:8 的比例进行划分,以便于模拟业务流量低峰期进行生产环境全链路压测。
-
- 正常流量:200 并发
- 压测流量:800 并发
文章图片
从以上两种方案不同维度的指标对比可以看出,影子表方案对 CPU 的消耗略高,这和该方案的实现方式有关。
稳定性
谈到稳定性,可以从数据源实例的连接数规格、容量规格、IOPS、网络流量等方面进行分析。
文章图片
以上指标,这里以连接数为例进行说明,具体如下:
针对影子库方案。由于是在同一个实例上建立不同的数据库,所以如果不考虑数据库实例能够达到最大连接数上限,理论上影子连接和正常连接时相互独立的,执行时互不影响。
针对影子表方案,由于是在同一个实例上的同一个数据库上建立了不同的数据表,那么这里就要考虑业务侧的连接池配置了,因为影子流量涉及到的 DB 操作和正常流量涉及到的 DB 操作,所用的数据库连接,均来源于同一个连接池,所以如果压测量级较大的时候,是比较容易出现连接池连接瓶颈的。
成本
文章图片
根据表格中的内容,这里主要以冗余成本和数据迁移成本进行说明,具体如下:
- 冗余成本
针对影子表方案,是在同一个实例上的同一个数据库上建立影子表。那么就可以复用生产库中的基础只读表,只需对写表进行建立影子表即可。影子表方案在一定程度上降低了数据冗余所带来的成本消耗。
- 数据迁移成本
总结 综上,具体选择以上两种方案中的哪一种,其实仅靠一个指标判断是不够的,要结合以上多个指标以及具体的业务场景来进行综合评估的。下面针对两种典型的场景来说明应该如何选择适合自己方案,以下意见仅供参考。
场景 1:在涉及到的读表比例高于写表、并且整库迁移成本较高的情况下,推荐选择影子表方案,在一定程度上可以减少复杂的数据迁移带来的成本。
场景 2:在涉及到的写表比例高于读表,同时生产库实例容量较为充足的情况下,推荐选择影子库方案,在一定程度上降低了梳理、配置的成本。
目前,全链路压测提供混合云解决方案输出,欢迎大家使用。具体详情请点击此处查看。
更多交流,欢迎进钉钉群沟通,PTS 用户交流钉钉群号:11774967。
推荐阅读
- Salesforce 容器化 ISV 场景下的软件供应链安全落地实践
- 一周投融资|【硬科技周报】第26周:模拟芯片厂商“粤芯半导体”完成45亿元战略融资,3D全息显示公司Swave完成700万欧元种子轮融资
- 消费|为稳住全球第一宝座,中国中免再次赴港上市谋海外市场|IPO速递
- 史上最全学习率调整策略lr_scheduler
- 前端|浏览器安全——Web页面安全&浏览器网络安全(HTTPS)&浏览器系统安全
- 接口数据安全保证的10种方式
- 投稿|A股IPO年中盘点:沪深北融资超3000亿,上交所成全球最大赢家
- 投稿|全网“缉拿”雪糕刺客钟薛高
- js|js 一个接口调用完全以后再调用下一个接口
- 交通运输部(全面暂停离汉、离鄂及进出京跨城网约车、顺风车业务)