他们是双11背后的神秘人,阿里应对流量洪峰的杀手锏

“每个人只有一次机会,就是在11日凌晨的那十几分钟,顶过去就顶过去了,顶不过去,今年的双11就失败了。”

参与全链路压测的工作人员相互打气

作者 | 黄宗彦

编辑 | 徐鑫

摄影 | 陈坤荣

每年的11月11日00:00:00,阿里巴巴集团最紧张激动的时刻。剁手党们的热情这一刻开始爆发,反映到数字上是去年双11惊人的纪录:24小时交易额912.17亿、交易创建峰值14万笔/秒、支付峰值8.59万笔/秒,而在二进制世界里,则是极短时间内如海啸般涌入的超大规模流量。

流量洪峰的杀伤力,曾在2011年和2012年的双11给阿里巴巴的技术团队留下了午夜惊魂的难忘回忆。如何不打一场没有准备的仗?全链路压力测试登场,它改变了阿里巴巴应对零点流量洪峰的态度和方式,也正一次次刷新中国互联网世界的纪录。

“双11是整个中国商业基础设施的一个大考,也是中国技术的一个大考。”马云曾这样表述双11对中国社会的意义。在双11不断健全中国商业基础设施的背景下,全链路压力测试无疑是确保这场大考顺利进行的模拟考。阿里巴巴的技术团队主动创造出极致场景和超常流量压力,提前练兵,确保双11零点的消费洪峰顺利、平稳地在系统中流淌。

零点保卫战

2016年11月5日零点,阿里巴巴杭州西溪园区1号楼一间名为“光明顶”的双11指挥室,灯火通明。“开始!”现场指挥者陈琴(花名霜波)手里拿着话筒发出指令,巨幅屏幕上各项数据指标快速跑动。

负责压测现场指挥的技术小二陈琴向全体人员讲解作战须知

深夜的全链路压力测试现场没有丝毫午夜的静谧,280个技术骨干在这间已多次见证双11辉煌的会议室里为2016年双11上的最后一道保险——全链路压力测试的终测正式上演。

技术人员在机房巡查,机器和人一起都将迎接大考

零点在阿里巴巴园区有着特别的意味。进入11月,距离11日越近,淘宝城里的零点就越热闹紧张。巅峰当然在东八区的11日零点和12日零点到来。为了这个24小时,整个阿里巴巴要用长达半年的时间准备,严阵以待应对来自全世界剁手党们的购物热情。

剁手党们的热情反映到2015年双11,数字上是24小时交易额912.17亿、交易创建峰值14万笔/秒、支付峰值8.59万笔/秒,而在二进制世界里,则是极短时间内如海啸般涌入的超大规模流量。

零点一到,流量洪峰立即杀到,这最初的十几分钟就是每年双11阿里巴巴后台系统的生死大考。“技术团队的每个人只有一次机会,就是在11日凌晨的那十几分钟,顶过去就顶过去了,顶不过去,今年的双11大促就失败了。”这是技术团队对于零点大考的认知。

为了大考能顺利通过,2013年全链路压力测试应运而生。略带技术色彩的名词背后,是更真实的流量模拟机制和更有确定性和稳定性的预案演习体系。对零点峰值流量进行评估以及测试网站承压能力,阿里全系统每个技术环节都要参加这场实战大练兵。到了2015年,压测升级到全自动备战,整个双11和阿里技术平台的稳定性实现了一次大升级。

但即便是全自动备战,5日凌晨的压测演习终测,阿里巴巴集团技术委员会主席王坚博士仍亲临现场。“不能因为我们让这么好的商业想法做不成”,此前的采访中,他这么看待技术团队在双11要承担的角色。

阿里巴巴集团技术委员会主席王坚

为了2016年双11,此前已进行多次压测。负责压测项目的队长丁宇(花名叔同)说“刚开始几百个系统都有问题,出现问题就意味着网站吞吐量达不到预期,系统负载很高,成功率很低,并有各种各样报错,通过压测随时发现问题随时修复。”

“最后一次必须要成功。”他盯着大屏幕,神色中并无太多紧张感。

最终压测要实现的目标不少。“除了监测有些常用指标,比如CPU、内存、硬盘,以及业务上的指标,如每分钟处理的量、反应时间等,还需要跟团队碰撞,创造一些极端化场景,去推演解决方案的可靠性。就算出现概率在万分之一,也要保证在双11当天不会对系统造成任何影响。”

11月5日凌晨4时许,最终压测成功结束。这样的测试已在此前三年的双11里成功运行二十多次,它是阿里技术人应对双11的主动出击。

“你们掌握着世界上最贵的回车键”

零点的考验让每一个阿里巴巴人印象深刻。

在阿里巴巴集团CEO张勇(逍遥子)那里,它是2011年双11的午夜惊魂。他在今年的双11香港启动会上首次对外透露,“零点以后,我们的支付、系统没有问题,但是我们的库存系统出了问题。”由于系统故障,商家的库存显示被打乱,页面上的尺码与颜色与库存不匹配。经过紧急抢修,天亮前系统恢复了,但那一年的双11张勇彻夜未眠。

消费者的购物热情转化成了对系统的负担,它也直接传递到系统开发和维护体系里的每一个人身上。点击、滑动流量、下单,用户每一次行为都是二进制世界里的一个数据请求,全世界剁手党的消费热情汹涌而至时,在这种超预期的数据洪流面前,技术团队的压力可想而知。

除了张勇说的午夜惊魂,2012年的黑色一小时也让不少技术负责人心有余悸。时间拨回2012年11月11日凌晨,作战指挥室里所有人都紧张地等待时间流逝。阿里巴巴首席风险官刘振飞(花名振飞)记得是惊慌从现场某个人突然大喊自己下不了单开始的。在阿里巴巴公开的记录片《零点之战》中,他回忆了那个场景,言辞中仍然看得出情绪的激动。

开始有更多的人说自己下不了单,场面开始有点慌乱。技术团队最担心的是,系统出现正向雪崩,整个交易链条崩溃。现场最先反应过来的人是李津,如今他是阿里云事业群资深总监。

回忆当时的场景,振飞印象最深的是李津拍案而起,在一片惊恐中李津发现了问题关键。“我对这哥们刮目想看,他是在靠这次双11一战成名的。他让大家都别慌,交易和支付还在发生,交易链条还是通的,任何人不许动任何事情。”

李津在后来接受采访时已记不清当时自己要求禁止动作的具体时间。他当时的判断原则是,任何操作的后果都可能是灾难性的。

熬过黑色一小时之后,振飞用了四个字来评价,“度秒如年”。

蚂蚁金服研究院胡喜(花名阿玺)最忘不了的双11凌晨场景是,身边的一个数据库管理员突然吼起来,账务库快不行了,然后他在交流群里倒数,30秒,29秒,28秒。

无线事业部负责人庄卓然对2011年和2012年的午夜惊魂印象深刻。他和另外一个同事在指挥部旁边的会议室里关了一个多小时,想解决方案,“逍遥子、乔峰、优昙都挤在会议室门口,不敢进来”。

这是一场人与时间的赛跑,人的智力与应变速度要在系统出现Bug时及时应对,保证消费行为顺利发生。对于技术团队而言,双11的顺利进行是个责任。“这个责任有一种不可承受之重,因为它输不起。它没有退路。”

用王坚对技术团队说过的话就是,“你们掌握着世界上最贵的回车键。”打错一个回车键,可能整个双11系统就崩溃了。

一个只许成功不许失败的任务摆在面前了,阿里巴巴的技术狂人们用自己的方法解压。

李津的解压方式是一个人大半夜开着车去龙井那边的山上,“开着天窗,在那睡觉,因为氧气足嘛”。振飞压力特别大的时候会去走西湖,围着西湖一圈圈的散步,让自己安静下来,给自己空间充分地思考。而蚂蚁金服的CTO程立(花名鲁肃)会选择喝茶,三秋桂子的清香刚过,杭州的寒气还未完全腾起,透明玻璃壶里翻滚的茶叶,他会非常享受这片刻的沉浸,这一刻,他忘记了自己。

庄卓然(花名南天)则会花上一天时间去灵隐寺上一炷香。缓缓腾起的青烟中,他闭起双眼,深鞠躬三下。这是他对降服双11未知流量的殷求与祈愿。很多人还习惯在双11的前夕沿着西湖夜行减压。

开弓没有回头箭,但也许磨刀不误砍柴工。技术团队意识到,这个只许成功不许失败的任务或许有新的破解之道——事前先模拟一遍甚至几遍双11的交易场景,就可以发现问题及时修复,针对修复不了的漏洞制定相应的紧急预案,到了双11当日才不至于出现不可挽回的局面。

阿里巴巴技术团队应对双11当天零点流量压力从此不再毫无准备。流量给人的压迫感也在减小。5日的最终压测现场, 0点27分时交易量突然出现了明显下滑,核心的指挥者们皱起了眉头,现场却并没有失掉节奏。

他们在打的是一场有准备的战争。

“火箭发射很多次,再一点火,就成功了”

庄卓然这么看待全链路压测,“意味着在一定的时间内,在一定的机器规模和业务规模之下,有能力去保障预案和稳定性的准备都能够落到确定性上。”

压力测试是评估网站性能的重要手段。

在全链路压力测试出现之前,无论是线下模拟的单一集群的压测还是线上引流压测,暴露出的基本上是一些单点问题。这两种传统的压力测试方式在模拟双11当天的高峰期真实压力,还存在着巨大的偏差。

全链路压力测试诞生于2013年双11之前,多个技术部门采用了线上真实用户数据与人为测试数据相结合的方式,首次成功地在生产环境中模拟出相对真实的超大规模的访问流量,将前端系统、网络、数据库等一整个系统环境完整地纳入压测范围,贴近实际的应用场景,为评估淘宝和天猫交易核心链路的实际承载能力提供有说服力的数据依据。“这(2013年)是具有里程碑意义的一年。”

程立曾用发射火箭的比喻来更通俗地表述它。“过去是把系统拆开成很多组件,像发射火箭,每个组件单独测试。性能ok,用理论推算拼在一起是ok的,然后大促当天就拼在一起发射。这样可能会成功,也可能不会成功。现在是把整个火箭发射很多次,发射好后还能回收。这样经历很多次,最后我们再一点火,就发射成功了。”

用有限的成本去支持最大化的吞吐能力和购物体验,这是压测存在的根本,也因为它,每年压测都需要发现和解决新问题——不断降低成本,提升流量吞吐能力,最优化购物体验。去年,备战的目标是“12,12,6”,即每秒钟会有12万人同时登陆商城页面、每秒12万人同时涌入的支付页面、以及每秒6万人同时完成的订单支付。今年,目标数字毫无疑问要被刷新。

叔同介绍,今年的系统有个很大的改变,即全面Docker化。目前阿里有超过15万个Docker容器在线上,可以将线上应用的依赖打包成镜像,尽可能做到自包含,这对任何一个系统都会很容易地去迁移和部署,解决了一致性问题和提升部署的可靠性,以及运维的效率。

往前每走一步,都是无人之境。这是一条没有终点、不断战胜自我的征程。但除了压力,这群技术人看起来乐在其中。“它把你的潜力充分地开发出来,如果不全力以赴,你真的不知道自己能做到什么程度。”

2016年11月11日,双11进入第8年,压测进入第4年。“我们很高兴看到5年前的峰值变成了今天远低于常量的一个状态,我们也觉得这是社会进步的表现,我们也希望今天的准备能够为未来做好准备,为未来整个变革从今天做起。”在今年的双11香港启动会上张勇如此寄望,对于压测和阿里的技术体系来说,一切还在进化之中,可以确定的一点是,他们正在书写未来。

电商在线将在11月10日送出20万现金红包,红包密令会隐藏在当天推送文章的底部,打开手机淘宝、天猫APP在搜索框输入密令即可领取。
或许你还喜欢
点击图片即可阅读

(0)

相关推荐