容量保障核心技术与实战
吴骏龙
前阿里巴巴本地生活 P8 高级专家
5387 人已学习
新⼈⾸单¥29
登录后,你可以任选2讲全文学习
课程目录
已完结/共 19 讲
容量保障核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

05 | 全链路压测:系统整体容量保障的“核武器”(上)

你好,我是吴骏龙。
通过基础篇的学习,相信你对容量保障的相关知识已经有了基础的了解,知道了容量测试不能简单定义为压力测试,而是验证服务容量的手段;知道了容量指标分析不能只看单一指标,也学习了分析容量指标的 5 个经典问题;以及了解了容量治理可以采取扩容、限流和降级策略。
从今天开始,我们踏入进阶篇,进阶篇的所有内容都是比较前沿或创新的知识,希望通过大厂前沿经验和我的积累,帮你拓宽视角。在进阶篇,我们从关注度最高的全链路压测开始,与你分享我的实践经验。
你可能会问,到底什么是全链路压测?实施全链路压测要经过几个步骤?有哪些难点坑点?别急,因为内容较多,我会分成两讲,这一讲,先聊聊全链路压测的诞生,以及实施全链路压测前的三项改造工作。下一讲,我们再进一步聊聊两项具体的压测工作,把全链路压测的建设过程完整展示给你。

全链路压测的诞生

2013 年对阿里巴巴来说有着非凡的意义,因为那一年,全链路压测诞生了。这可是双 11 容量保障工作的福音,对守在电脑前的程序员们来说,流量洪峰终于不再那么可怕了。
虽然当时我还没有进入阿里体系内工作,但我作为一名用户亲身参与了从 2011 年开始的所有双 11 活动,我能深刻感受到双 11 系统稳定性的变迁。总体来说,2011 年和 2012 年给我的体验不太好,但 2013 年就有了很大的改观。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

全链路压测在系统容量保障中扮演着关键角色,尤其在大型活动如双11中的重要性不言而喻。全链路压测的核心在于模拟真实环境下的海量用户请求,以评估整个系统的容量,从而验证系统是否能够承载预估的流量峰值。相较于单链路压测,全链路压测更全面地评估系统容量,避免了简单相加的局限性。文章还详细介绍了全链路压测的建设过程,包括数据隔离、中间件改造和应用服务改造等三项关键工作。总的来说,全链路压测的实施需要解决诸多重点问题,但一旦具备基本条件,将为系统容量保障提供强大支持。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《容量保障核心技术与实战》
新⼈⾸单¥29
立即购买
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • cctester
    影子库和影子表核心区别是什么,一般如何选型~

    作者回复: 这个问题比较大,每个人的实践可能也不一样,我尽量简略解答,谈一下我的观点。首先,两者的数据隔离粒度不一样,如果是影子表,它与真实表一般位于同一个数据库实例上共享资源,影子库则彻底隔离;其次,实现方式不一样,或者说对业务服务的侵入性不同,业务服务在调用数据库时,一般是将库名随连接串写在配置文件或配置中心的,具体访问哪张表在程序内由ORM组件(如MyBatis)控制,如果采用影子表的方案,写一个interceptor就可以了,但如果采用影子库的方案就会比较麻烦,最好得有个数据库中间件,还会涉及到对另一个数据库的连接管理等等工作。 针对全链路压测一般使用影子表居多,原因主要有两点:1.真实的全链路压测往往不会也没必要覆盖所有链路,因此并不是所有数据表都需要建立对应的影子表,如果我们以「库」作为物理隔离维度就太粗了,也浪费资源;2.如上段所述,影子表对业务服务的侵入性更小,实现成本更低一些。

    2021-06-28
    4
  • 东宇
    其他模块和线上共用的情况下,影子表可以反应真实压测情况吗?例如表的读写压力等?

    作者回复: 你好,不是很清楚“其他模块和线上共用”的含义,如果你指的是线上有背景流量(真实流量)对真实库存在一定的压力,而全链路压测对数据库的压力是作用在影子表的话,那是无妨的。 一方面,影子表和真实表一般位于同一个数据库实例上(即便分片也是如此),从库的视角来说,总的压力是基本一致的。 另一方面,全链路压测一般都选择在低峰期进行,背景流量几乎可以忽略不计。

    2021-10-09
  • Geek_6bb
    老师你好!混合场景指的是把不同业务流程按比例然后放在一个线程组下面运行吗?

    作者回复: 你好,关于你提到的“放在一个线程组下面运行”,这是混合场景容量测试的一种具体可行的实施形式,但并不是唯一的形式(第7讲介绍的压测平台可以通过配置集的方式达到相同的效果),关键是要保证按照尽可能真实的流量比例以及场景去施压。 此外再多说一句,混合场景是单个业务场景的组合,但不一定是简单相加,需要整体检查一下各场景间有没有重复计算的流量,有没有流量峰值不一致的情况(单场景流量峰值的时刻不一定是混合场景流量峰值的时刻),各场景间的测试数据会不会有冲突等全局性的问题。

    2021-09-11
    2
  • ralph
    影子表的方式,所使用的实际数据库和线上服务还是同一个吗?如果压测到服务极限,出现故障情况,怎么保证不影响到线上业务呢?

    作者回复: 一般来说,影子表和真实表是位于同一个数据库上的(否则就是影子库了)。对于压测时的风险管控,可以回顾一下“容量测试与验证”一讲中“科学实施容量测试”的第4点测试执行的内容。在阿里本地生活的实践中,全链路压测期间有GOC团队和DBA团队共同监控数据库的各项指标,如出现负载过高、延迟过高等情况,会通知压测团队及时暂停止损。

    2021-08-17
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部