全链路压测-大促备战核武器

全链路压测被誉为大促备战的“核武器”,如果之前有关注过阿里双11相关的技术总结,对“全链路压测”一定不会陌生,这个词的出场率几乎100%,从对双11稳定性的价值来看,用“核武器”来形容全链路压测毫不为过。

1. 背景

时间:2016年10月29日凌晨;地点:阿里西溪园区1号楼7楼“光明顶”;事件:200多人聚在一起,精神抖擞,摩拳擦掌。这阵势,是要去约群架吗?别紧张,他们只是在进行一次双11的模拟演习—全链路压测。
历年的双11备战过程当中,最大的困难在于评估从用户登录到完成购买的整个链条中,核心页面和交易支付的实际承载能力。自2009年第一次双11以来,每年双11的业务规模增长迅速,0点的峰值流量带给我们的不确定性越来越大。2010年,我们上线了容量规划平台从单个点的维度解决了容量规划的问题,然而在进行单点容量规划的时候,有一个前提条件:下游依赖的服务状态是非常好的。实际情况并非如此,双11 当天0点到来的时候,从CDN到接入层、前端应用、后端服务、缓存、存储、中间件整个链路上都面临着巨大流量,这个时候应用的服务状态除了受自身影响,还会受到依赖环境影响,并且影响面会继续传递到上游,哪怕一个环节出现一点误差,误差在上下游经过几层累积后会造成什么影响谁都无法确定。所以除了进行事先的容量规划,我们还需要建立起一套验证机制,来验证我们各个环节的准备都是符合预期的。验证的最佳方法就是让事件提前发生,如果我们的系统能够提前经历几次“双11”,容量的不确定性问题也就解决了。全链路压测的诞生解决了容量的确定性问题!

2. 全链路压测1.0从无到有

提前对双11进行模拟听起来就不简单,毕竟双11的规模和复杂性都是空前的,要将双11提前模拟出来,难度可想而知:

1、 跟双11相关的业务系统上百个,并且牵涉到整条链路上所有的基础设施和中间件,如何确保压测流量能够通畅无阻,没有死角?
2、 压测的数据怎么构造(亿万级的商品和用户),数据模型如何与双11贴近?
3、 全链路压测直接在线上的真实环境进行双11模拟,怎么样来保障对线上无影响?
4、 双11是一个上亿用户参与的盛大活动,所带来的巨大流量要怎么样制作出来?

2013年8月中旬,当时高可用架构团队的负责人叔同接下了这个巨大的挑战:打造一套全链路压测平台。平台需要在2013年的双11之前完成开发上线,错过了这个时间点,我们就必需再等一年,从立项到双11,留给我们的时间只有短短两个多月,时间非常紧,我们需要在这么短的时间里完成一系列历史级的挑战。2013年阿里巴巴开始搬到我们新的西溪园区,其它同学都是搬到新工位,全链路压测项目组直接搬到了项目室,进行闭关攻坚。

1) 业务改造升级

2013年的核心交易链路就有几十条,牵涉到多个BU的几百号研发同学,这些业务链路绝大部分是没法直接压测的,需要进行相应的业务改造和中间件的升级。推动几百号人在短时间之内完成业务的改造在很多公司几乎是不可能完成的,何况还牵涉到中间件的升级,中间件的升级一般情况都会有一个相对比较长的周期,有不少业务系统的中间件版本都非常古老(5年前的版本),需要在确保无风险直接升级到最新版本。
在业务端我们需要对逐条链路进行一一梳理,从请求进来的系统到请求的最后一个环节(复杂的业务经过了几十个系统),每一个有阻压测流量往下走的地方都进行特殊的逻辑改造。改造的业务点牵涉100多个,包括登陆验证码、安全策略、业务流程校验等等。在基础设施和中间件上,我们需要让业务系统的代码尽可能的不需要修改、通用的技术通过基础设施和中间件来屏蔽掉,比如压测流量的标识怎么样在整个请求的生命周期中一直流转下去、怎么样来对非法的请求请求拦截处理。
参与全链路压测改造的每一个同学体现了良好的协作精神和执行力,为了同一个目标齐头并进、相互补位,原本认为几乎不可能的事情,最终在一个月内完成了相应的业务改造和中间件升级。

2)数据构造

数据构造有两个核心点:1、参与双11的买家、卖家、商品数量都非常庞大,需要构造同数量级的业务数据;2、需要确保业务数据的模型尽可能贴近双11当日 0点的真实场景,否则全链路压测结果的误差会比较大,参考的价值将会大打折扣。我们为此专门搭建了全链路压测的数据构造平台,对业务模型进行系统化的管理,同时完成海量业务数据的自动化构造。

数据构造平台以线上数据为基础,借助数据dump工具进行数据的抽取,并对关键数据进行相应的处理(脱敏、订正等)后进入到基础数据池供备用。基础数据池是压测数据的超集,具体压测数据的构造基于基础数据集进行数据的再加工。
除了需要有足够量级的数据以外,我们还要解决的另一个问题是数据的模型应该是怎么样的。借助BI工具结合预测算法对数据进行筛选建模,并结合每一年双11的业务玩法进行修订,产出一份最终的业务模型。业务模型的因子牵涉几百个业务指标,包含买家数、买家类型、卖家数、卖家类型、优惠种类、优惠比例、购物车商品数、bc比例、无线pc比例,业务的量级等等。

3)数据隔离

全链路压测要不要做数据隔离、怎么样来做数据隔离在项目立项阶段经过了非常多的讨论甚至争吵。在最开始的时候,我们想做逻辑隔离,直接把测试数据和正常数据写到一起,通过特殊的标识能够区分开,这个方案很快就放弃了:线上的数据的安全性和完整性不能被破坏。接下来我们提出了另一个方案,在所有写数据的地方做mock,并不真正的写进去,这个方案不会对线上产生污染,评估的时候也还是放弃了:mock对压测结果的准确性会产生干扰,而我们需要一个最贴近实际行为的压测结果。
经过反复的讨论,最终我们找到了一个既不污染线上、又能保障压测结果准确性的方案:所有写数据的地方对压测流量进行识别,判断一旦是压测流量的写,就写到隔离的位置,包括存储、缓存、搜索引擎等等。

4)流量构造

双11是一场剁手党的狂欢,0点的峰值流量是平时高峰的几百倍,每秒钟几百万次的请求如何构造同样成为我们的大难题。我们分别尝试通过浏览器引擎或者一些开源压测工具的方式来模拟用户请求,经过实际测试,要制作出双11规模的用户流量,流量器引擎和开源压测工具需要准备几十万台服务器的规模,成本是无法接受的,并且在集群控制、请求定制上存在不少限制。既然没有现成的工具可以使用,我们只好选择自己研发一套全链路压测的流量平台。

全链路压测的流量平台是一个典型的master+slave结构,master作为压测管控台管理着上千个slave节点;slave节点作为压测引擎,负责具体的请求发送。Master作为整个压测平台的大脑,负责的整个平台的运转控制、命令发送、数据收集、决策等。slave节点部署在全球各地的cdn节点上,从而模拟从全球各地过来的用户请求。整套全链路压测的流量平台在压测过程当中平稳输出1000w+/s的用户请求、同时保持过亿的无线用户长链接。

5)正式上线

在2个多月的时间里,项目组的成员披星戴月,有一半的时间在通宵,另外一半的时间凌晨3点以后下班。10月底的杭州,天气逐渐转冷,又是一个深夜,项目组的1位同学提交完代码像往常一样骑着电动车载着另外一个同学下班回家,路上一阵寒风吹来,骑车的同学直打哆嗦,想腾出一只手来拉拉衣袖,一个方向没控制好,砰的一声,两人从车上飞了出去,其中一位同学摔成了骨裂。正在大家为项目的进度担忧时,这位受伤的同学瘸着个腿又回到了项目室。
2013年的10月17日凌晨的1号楼,全链路第一次登台亮相,这一天对整个全链路压测项目组的人都意义非凡,辛苦了2个多月的“大杀招”终于要派上用场了!当压测开始的按钮被点下去,大家都全神贯注盯着各种系统等着流量上来,1分钟、2分钟过去了,我们的业务系统却丝毫没有流量进来。忙活了一晚上,第一次亮相狼狈收场,当时全场有200多号人,每一次让大家准备好却没有流量发出去的时候,面对着全场200多双眼睛,压测项目组每一个同学的手都是抖的。好在第一次的失败让我们吸取了充分的经验,又经过好几个昼夜的奋战,第二次的压测比第一次进步了很多,到了第三次就已经能完全达到我们的使用预期了。

3. 全链路压测2.0平台升级

全链路压测诞生之后为系统稳定性带来的改变立竿见影,2013年经过了几次全链路压测,双11 当天0点的表现比以往任何一年都平顺。全链路压测也在集团一炮而红,越来越多的业务希望能接入进来。

1)平台化

海量的业务接入给全链路压测平台带来全新的挑战:当时的全链路压测操作都需要压测项目组的同学来进行操控。随着越来越多的业务接入到全链路压测平台,压测项目组很快就成为了瓶颈,压测平台的能力急需升级,2015年,全链路压测“平台化”项目启动,我们着手将全链路压测朝着平台化的目标推进和实施,做到压测能力开放、业务方自主压测,让更多业务方能够享受到全链路压测的优势和便利。全链路压测平台化项目的上线大幅提升全链路压测平台的服务能力:2015年大促备战的3个月内,压测平台总共受理近600多个压测需求(比14年提升20倍),执行压测任务3000多次(比14年提升30倍)。

2)日常化

全链路压测的压测流量和正式流量经过的路径都是一致的,如果链路中某一个节点被压挂或者触发限流势必会影响线上用户的正常访问。为了减少影响,全链路压测一般都安排在凌晨,通宵达旦,非常辛苦!为了减少熬夜,提升压测幸福度,我们启动了白天压测的项目:将线上运行的机器动态隔离出一部分机器放到隔离环境中,这部分机器上只有压测流量可以访问,白天在隔离环境的机器上进行压测。隔离环境与线上环境几乎一样,从流量入口、中间件、应用后端实现完整隔离。隔离环境完全打通了配置中心、服务注册中心、消息中心、地址服务器等基础设施,不需要业务系统做任何改造即可完成,并且是直接从线上机器按照特定规则选择到隔离环境中,机型配置跟线上基本一致,使用完毕之后直接恢复到线上集群中,不会影响线上集群的容量。大促备战期间,我们可以白天在隔离环境中进行小目标小范围的全链路压测,用极小的代价提前发现问题。由于隔离环境场景相对于其他线下环境更加真实、操作快捷、不占用额外机器资源的特性,在预案演练、破坏性测试、线上问题排查、故障演练等其他场合也获得了比较广泛的应用。

4. 全链路压测3.0生态建设

2016年在三地五单元混合云部署架构下,电商一半以上的资源是部署在云上。在庞大的电商系统背景下,如何能够在最短的时间内完成一个单元的搭建和容量准备成为摆在我们面前的一道难题,而全靠“经验之谈”和人工介入是不可能完成的任务。2016年初,“大促容量弹性交付产品”立项,旨在减少甚至释放活动场景的容量交付中人工投入,并将大促容量交付的运维能力沉淀到系统中,使全链路容量具备“自动化”调整的能力。我们提出了大促自动化备战的想法,将大促容量准备的各个环节进行系统层面的打通,从业务因子埋点、监控体系、模型预测、压测数据构造、压测流量发送、压测结果分析、压测报表进行自动化的串联,大幅缩减了我们在大促容量准备阶段的人员投入和时间周期。围绕全链路压测的核心基础设施,全链路压测的周边生态逐步建立起来,打通建站、容量、监控等配套技术体系。

全链路压测在保障系统稳定性的同时,也为业务稳定性的保障提供了强有力的支持,在2016年我们落地了全链路功能测试、大促功能预演等一系列项目:创造性地在隔离环境提前将系统时间设置到双11 的0点。通过在这个提前的双11环境购买一遍双11的商品,进行充分的业务验证,最大限地度降低我们在双11当天的业务问题(将会在后面的章节中详细介绍)。

5. 总结

每年双11前夕,全链路压测都要组织好几次,不断地通过压测发现问题进行迭代优化、全方位验证业务的稳定性,我们的业务系统也只有在经过了全链路压测的验证之后才有信心迎接双11 那天0点的到来。全链路压测将大促稳定性保证提升到新的高度,是双11、双12等大促备战最重要的核武器,并且随着业务的发展不断进化,持续发挥着不可替代的作用。

时间: 2024-09-02 12:16:38

全链路压测-大促备战核武器的相关文章

双11备战核武器:全链路压测今年如何升级?

在刚结束的2017年双11中,阿里巴巴再一次更新了记录:每秒32.5w笔的交易创建峰值.25.6w笔的支付峰值.就是这样一个由上千个不同业务系统和技术组件构建的业务站点,在如此巨大的洪峰流量冲击之下,依旧稳如磐石,创造了一个用户体验丝般顺滑的双11购物狂欢节.这是一个互联网技术上的奇迹,堪称世界级的超级工程,而大促准备阶段的"全链路压测"就是奇迹背后的秘密. 众所周知,阿里巴巴有着非常丰富的业务形态,每一种业务形态背后都由一系列分布式的技术体系提供服务,随着业务的快速发展,特别是在双1

详解双11终极“核武器”:全链路压测如何诞生?

本文内容来自阿里巴巴集团双11技术团队撰写的<尽在双11:阿里巴巴技术演进与超越>一书.该书被阿里巴巴集团CTO行癫盛赞为"迄今为止对双11技术演进最客观.最详实的还原",目前正在全国火热销售中. 全链路压测被誉为大促备战的"核武器".如果之前关注过阿里双11相关的技术总结,对全链路压测一定不会陌生,这个词的出场率几乎是100%,从对双11稳定性的价值来看,用"核武器"来形容全链路压测毫不为过. 背 景 历年的双11备战过程中,最大的

系统稳定性保障核武器——全链路压测

为什么要做全链路压测? 对阿里巴巴而言,每年最重要的一天莫过于双11.这是因为在双11的零点,系统会遭遇史无前例的巨大洪峰流量冲击,保证双11当天系统的稳定性对高可用团队来说是巨大的挑战.在这个挑战中会有很多不确定因素,大致分为两方面: 技术架构带来的不确定性,阿里在08年开始对系统进行拆分,由原有的单一系统拆分成了分布式架构,包括CDN.网关.负载均衡.分布式页面系统等,整体的技术生态十分丰富.分布式环境任意环节出了问题都可能会对系统造成影响: 业务发展带来的不确定性,系统的可用性随着业务增长

“双11”核武器——全链路压测详解

以下是精彩视频内容整理: "双11"对于阿里而言是一场保障系统稳定性的实战.用有限的成本实现最大化的集群整体吞吐能力,带给用户畅爽的极致购物体验,这依靠阿里多年技术沉淀下来的一套高可用架构基础设施,也就是阿里系统稳定性保障的"核武器"--全链路压测.它的重要作用不仅体现在"双11"购物狂欢节,而且横向拓展到高德,优酷,钉钉等非电商的应用形态. 全链路压测平台由阿里巴巴中间件技术部高可用架构团队提供,该团队同时负责包括容量规划.准入控制.限流降级.

阿里10年分布式技术沉淀:阿里高可用体系核心缔造者、全链路压测创始人告诉你!

本次活动看点十足,大咖齐聚.纯正干货,下面给大家做下详解介绍,相信看后定会让你动心! 议题详情 双11核武器全链路压测--张军 / 阿里巴巴中间件高级技术专家 阿里巴巴双11备战期间,保障系统稳定性最大的难题在于容量规划,而容量规划最大的难题在于准确评估从用户登录到完成购买的整个链条中,核心页面和交易支付的实际承载能力.全链路压测的诞生改变了这一现状,通过对双11进行模拟,支持线上不影响正常用户访问的集群读写压测,获得最真实的线上承载能力数据.全链路压测开启了大促稳定性保障的新纪元,被誉为备战核

2017双11-开启智能全链路压测之路

智能压测概述 智能化压测,通过产品化.服务化.云化,一键完成阿里集团内外全链路压测准备和实施,保障集团内外全链路稳定:同时在常态化压测中,化身特种机器人,挑战系统承压能力,智能调整容量配比,快速定位问题. 如下图1所示,智能压测主要包含智能压测模型.自动化施压.预热系统化.压测云化.常态化智能压测五个模块. 图1 智能压测概述图 智能压测模型:高效提供一套准确的大促零点高峰压测模型 自动化施压:压测实施过程一键搞定,快速执行压测,准确发出目标量级的流量 预热系统化:确保各应用数据&系统预热全面且

2017双11-开启智能全链路压测之路

一  智能压测概述       智能化压测,通过产品化.服务化.云化,一键完成阿里集团内外全链路压测准备和实施,保障集团内外全链路稳定:同时在常态化压测中,化身特种机器人,挑战系统承压能力,智能调整容量配比,快速定位问题.       如下图1所示,智能压测主要包含智能压测模型.自动化施压.预热系统化.压测云化.常态化智能压测五个模块.                                                                      图1 智能压测概述图

模拟演练,全链路压测!京东是如何应对双11流量高峰挑战

   [51CTO.com原创稿件]双十一电商购物狂欢节马上就要到了,相信有很多朋友跟笔者一样,早早就选好了自己心仪的产品,期待在这个促销的节日里能够花最少的钱买到自己喜欢的产品.不过,在这个万众期待的日子里,电商技术人员面临的压力可不小.那么,电商平台背后的技术工程师,是通过哪些方法和措施来保障双11流量高峰带来的挑战的.笔者近期就这一话题,采访了京东商城总架构师刘海峰先生,就京东在技术上保障双11的一些做法,进行了分享.刘海峰先生告诉笔者,今年双11备战的思路,可以用四个关健词来描述,分别是

如何进行大促备战---大促备战TODO

背景: 在阿里经历过3年双11大促,从事云相关工作之后,发现经常会有各类云上客户面临大促护航需求,借此文总结下常规的大促备战都需要做些什么,我们需要从哪些方面入手去备战,尽量避免遗漏,做到大促平稳顺滑. 大促备战该从何入手,具体做些什么 1)第一阶段:业务梳理,架构整合,流量预估    1.1 业务梳理         在备战大促的过程中,我们首先需要对我们的整套系统所有应用进行梳理,了解哪些应用会面临大促的压力,哪些与大促无关:哪些是核心应用,需要重点保障,哪些是非核心应用,可接受降级或短时间