1 分 36 秒,100 亿,支付宝技术双 11 答卷:没有不可能(下)

阅读数:88 2019 年 11 月 26 日 14:39

1分36秒,100亿,支付宝技术双11答卷:没有不可能(下)

4 关公、灵隐寺和压测

2013 年双 11 的另一个特殊之处是,支付宝的备战室里多出来一幅关老爷的挂画。

挂画是郑洋飞“请”来的,不过“拜关公”作为支付宝技术团队的一项传统,早在他入职之前就由来已久。源头据说要追溯到支付宝建立之初,每到重要的系统更新时,工程师们就会在旺旺群里转发关公表情包,以求更新顺利,“别出 bug”。

隔了一年之后,关公像“升级”了,有同学去西安校招时看到了关公的皮影艺术品,就“请”了一个回来放在备战室。后来,程立买了一尊木质关公像放过来,去年,副 CTO 胡喜又买了一尊关公铜像。

除了拜关公,去寺庙烧香也是例行项目,视目的地不同,还分为“灵隐寺派”和“法喜寺派”两大派别。至于哪边灵验,说法不一,但据观察,每年双 11 过后,程立、胡喜就会亲自率队上山还愿,从支付宝大楼一路步行到上天竺法喜寺,回来的途中,还会沿途捡垃圾做公益。

技术是纯粹的科学。技术人难道真的相信求神拜佛能避免系统故障和 bug 吗?

“心理上,我觉得还是挺有用的。”陈亮说,“主要是表达对于不可预知之物的一种敬畏。虽然我们已经做了多年技术,但技术的道路上还是充满了很多不可预知的东西。”

不可预知,构成了工程师们每年面对双 11 最大的焦虑感来源。

他们用各自的办法缓解双 11 迫近的压力。有人是运动派,用跑步或打球放空大脑,有人是“强迫症”派,一遍又一遍地 check 代码才能安心,还有人是“吃货”派,迎战之前必定要先组团去吃海底捞。

全程参加了过去 11 年全部双 11 的赵尊奎,在被问到“哪年最不好搞”时,秒答曰:“哪年都不好搞。”同样“全勤”的陈亮则表示:“14 年之前,我们对于双 11 零点的信心,如果非要说一个数字的话,60% 吧。”

但他很快补充:“不过 2014 年之后,这个数字就变成 95% 了。”

陈亮的信心,来自于当年支付宝压测体系的建立。这一次不再是手动调配置测单机了,而是创建出仿真环境让系统去跑,提前找出系统的问题并及时修复,以免在正式战场被打个措手不及。

“压测让双 11 开始从一个不确定的事逐渐变成确定的事,它极大地改变了我们对于双 11 稳定性的保障方式。”有“压测小王子”之称的郑洋飞说。

虽然 2014 年的压测仅覆盖核心系统,但这个体系已经帮了大忙。在双 11 之前的一个月里,它至少让一百多个致命的问题提前暴露出来。“如果其中有一个没有修复,我们 2014 年的双 11 肯定就挂了。”陈亮说。

5 1%?或 10%?

压测这一“压”,既压出很多隐患,也压出了一个大问题:支付宝所用的 Oracle 数据库在压测之中“抖”了起来,性能眼见得触到了天花板。

2014 正是移动互联网大爆发的年份。指数增长的移动支付比例势必带来比往年更汹涌的流量峰值,Oracle 肉眼可见地支撑不住了。

再买服务器?成本吃不消,而且为了应对峰值而增添的机器,平日里没有用武之地,完全是资源的浪费。

还有没有别的办法?有的。阿里自研的分布式数据库 OceanBase,从淘宝被划到支付宝后,已经沉寂了两年,正在焦急地寻找一展身手的舞台。

但是一听说是自研的数据库,业务满脸都是狐疑。跟交易和金额直接相关的数据库,只要错一个数据,后果就不堪设想,别说双 11 这么大的流量,即使平日,要不要用这个没经过验证的产品,也颇要斟酌一番。

先切 1% 的流量给 OceanBase 试试吧。这是大家争论了好一阵后得出的方案。

但是 Oracle 在压测中的表现显示,缺口不止 1%,而是 10%。

OceanBase 说,我们来承接这 10%。

10%,听起来不多,但双 11 的 10%,相当于平日里的最高峰值。如果 OceanBase 能平安无事地接住这 10%,就意味着它可以担起支撑支付宝日常运行的重任。

OceanBase 必须证明自己有这样的能力。“我们找了淘宝的同学,协调了很多资源做了一个测试,主要校验淘宝订单的金额和支付宝交易金额是否能吻合。”DBA 团队的工程师师文汇说,当时的方案很谨慎,如果 OceanBase 出现了问题,随时都可以切回来。

测试结果,OceanBase 没有错漏一个数据。程立当即拍了板:10% 都切给你们。

这个决定成就了 OceanBase 在双 11 的首秀,“相当于 Oracle 和鲁肃(程立的花名)都帮了我们一把。”师文汇笑着说。

这时距离 2014 年的双 11,时间已经不足两周。可靠性虽然经受住了考验,但 OceanBase 毕竟是个诞生才四年的年轻数据库,小问题层出不穷,比如响应时间长达 10 毫秒,比 Oracle 差了好几个数量级。最后十来天,师文汇和全团队的同学一起,硬是把它优化到了 1 毫秒以下。

“做了这么些年,对它的容量和性能还是比较有信心的。”师文汇说。

他说得轻描淡写,但在这个曾经面临团队解散项目取消的产品身上,他和整个团队一起倾注了多少心血,除了他们自己之外,谁也说不清楚。

OceanBase 最初并不是为双 11 而做的,但在双 11 这个舞台上,它第一次获得了聚光灯下的位置,并且表现卓越,从此,支付宝开启了核心交易系统完全搬迁上 OceanBase 的进程。

到今年,OceanBase 对内 100% 承载蚂蚁业务的流量。对外,在被誉为“数据库领域世界杯”的 TPC-C 基准测试中,打破了由美国公司 Oracle(甲骨文) 保持了 9 年之久的世界记录,成为首个登顶该榜单的中国数据库产品。

6 我赢了一只 apple watch

2015 年,李俊奎去拜访了上海证券交易所,那里的交易系统部署在 6 台大型计算机上,交易峰值能达到每秒 10 万笔。

他大为惊叹:10 万笔!何等高不可攀的数字!什么时候支付宝也能达到就好了!

回到杭州,他马上与同学们分享了这次见闻,结果同学们告诉他说,今年我们的目标就要超过每秒 10 万笔了。

李俊奎一想,这种一听就不可能的目标,是支付宝的作风,没毛病。

与此同时,郑洋飞则在为这个目标头痛不已。他刚刚跟他的主管打了一个赌,赌的是他作为 2015 年双 11 全链路压测的负责人,能不能保障双 11 的支付不出任何问题。赌注是一只 apple watch。

这一年是 90 后的郑洋飞第一次挑大梁,从双 11 的参与者转换角色成为一个项目的主导者。但这一年也是他和团队都“忍辱负重”的一年,上半年,因为频繁不断的可用率问题,他们做稳定性的团队也在频繁遭受打击,士气不振,不少同学选择了离开,内外的质疑声也接连不断,那几个月,空气里都仿佛写满了“难熬”二字。

“当时团队没几个人了,但是人人都憋着一口气,想着一定要把双 11 这个事情搞好。”郑洋飞说,“就是不想让人觉得支付宝不行。”

局面有如背水一战,如果失败了,想要“翻盘雪耻”就要再等一年。因为双 11 每年只有一次,不仅是一年一度的大考,更是一年一度的舞台。按照系统部资深技术专家杨海悌的说法,“人人都想把自己一年的努力拿到双 11 去验证和展示,不让上还不高兴。”

跟 2014 年的全链路压测比起来,2015 年主要要做几个方面大刀阔斧的改进:一是要从核心系统扩展到全部系统,二是要平台化,也就是打造一个全链路压测的平台工具,三是要跟整个集团的压测打通联动。

“老实说,非常忐忑。”郑洋飞心里没底。

当双 11 零点的洪峰扑面而来时,他已经忘掉了 apple watch 这回事。有一个压测没验证到的数据库定时任务,让曲线看上去不那么平滑。“稳定压倒一切”的宗旨之下,系统只要一抖,整个团队的心也跟着抖了起来。迅速排查的结果是,系统整体没出问题,但压测遗漏的一些细节,让结果不是那么完美。

“曲线不是特别好看。”他不无遗憾地说。

郑洋飞最终赢得了这只 apple watch,但对于他而言,除了奖品之外,这只 apple watch 更有了别样的意义,时刻提醒他即使做了再充分的准备,也没有万无一失。

7 对“丝般顺滑”的追求永无止境

其实每一位支付宝工程师的心中,都有一条的“完美曲线”。

理想之中,它应该是这样的:双 11 零点,洪峰来了,曲线漂亮地攀升,没有骤升骤降,不要用频繁的抖动去折磨大家脆弱的神经。

如果要浓缩成一个词,那就是“丝般顺滑”。

但是,每一次为此而做的技术演进和架构变更进行到一定阶段,“你都会发现一开始可能设想得非常美好,但到了一定的规模之后,挑战就接二连三地来了。”杨海悌感叹道,“量变产生质变,这句话不是虚的。”

双 11 的“量”,早已一骑绝尘地进入前所未有的领域,2016 年双 11 仅用了 6 个多小时,交易额就已超过 2014 年全天。这些年以来,都是自己在不断刷新自己的纪录。

在这样的量之下保障稳定,难度不止提高了一个数量级。

还记得 2012 年底制定的架构革命之“三年计划”吗?它真的持续了三年,这场最初是为了解决数据库连接数和机房限制而进行的架构革命,在三年的演进过程中,又衍生出很多其他的架构,比如异地多活、容灾,弹性的容量调度等,直到 2016 年,才算全部落地。这之中每一步的演进,都是为了让系统具备动态扩容能力,能够顺滑地进行弹性的扩展和伸缩。

“大”是考验,“小”也是考验。

师文汇体会最深刻的瞬间,不是 2014 年 OceanBase 一举成名的时刻,而是 2016 年一次小小的测试。在这个测试里,他发现了一个指标有一点异常——非常不起眼,2 毫秒的偏差。

“2 毫秒而已,如果在别的地方,很可能就会被判断为无关紧要,然后漏过了。”但他的团队中的一位小伙伴,非常认真地去检查了这个问题——万幸如此。后来事实证明如果不解决这个问题,那年的双 11 就会有大麻烦。

“即使资源不足、时间紧张、软件有各种不完善的地方,但我们的小伙伴不会放过任何一个问题。”师文汇感慨。

早些年,流量曾是实现完美曲线最主要的挑战,但是越到后来,随着业务的不断拓展,工程师们越来越清楚地认识到,稳定压倒一切不假,但技术更要着眼于未来。

2017 年,是贺岩加入支付宝的第九年。这一年支付宝实现了离线在线混布,离线任务的大量闲置资源可以被用于在线任务,从而大大提升了资源的利用率。

“在一些小的场景中,这种效率提升能带来的节约可能不那么突出,但在我们这样的体量上,它所带来的就是不可估量的一整个未来。”贺岩说。

有了前人积淀这么多年的基础,面向未来的路,就越走越顺利了起来。

2018 年双 11,支付宝其实保障了两个大促,天猫的大促,和支付宝自己的“码上双 11”等玩法。这一年的故障数比前一年下降了 70-80%,首次实现大促全天平稳。

大队长李铮非常淡定:“说白了,就是我们把各种风险通过系统化或工程化的流程,控制得比较好。峰值出现的过程,也都在我们的预期之内。”

2019,则是双 11 的“云原生”元年。

如果说技术是像叠积木那样一层一层累积起来的,那云原生就是最下面的基础,打好了这层基础,上层的应用就像是站在了巨人的肩膀上,生来就具备了一系列强大的能力。业务无需再过多地担忧技术问题,只需要专注于业务代码即可。

8 点亮全世界

故事讲到这里,不知大家是否还记得,当年因为每秒两万笔的峰值目标而惊呼“不可能”的同学们。

当年,每秒两万笔是他们举全体之力奋斗半年才能冲上的高峰,而去年,每秒两万笔已经成为支付宝再日常不过的状况,随随便便,一秒钟的事。

这样的巨变真实发生了,只是身处当时当地,谁也没有想那么多。几乎每一位工程师都表示:“每年搞完双 11,下一年的目标就出来了,然后我们就为着下一年的目标去进行相应的准备和努力。”

一个目标,又一个目标,在征服一个又一个“不可能”的过程中,曾经以为遥不可及的标高,都一一被甩到身后。当年高不可攀的每秒 10 万笔,今天看来不过小菜一碟。

只有当回头的时候才有所感觉,在某一天忽然发现,原来已经走出了那么远,原来已经攀登到了那么高的地方。

而当年那些惊呼不可能却又拼命将不可能变成现实的年轻人,已经纷纷长大,他们现在有着更多的从容淡定,上限在哪里没人知道,更大的可能是,没有上限。

流量数据的增长也早已不是双 11 技术保障的全部。更多复杂的业务和玩法,在技术的成果之中生长起来,反过来又为技术的发展提供动力。走出双 11,它们还能走入很多的场景:新年红包、五福集卡……

——或者走出支付宝和阿里巴巴。

那些由支付宝的工程师们创下的奇迹,正一一变成产品,服务更多的金融机构。至今已有数十家银行和金融机构用上了 OceanBase,压测平台、云原生等技术也纷纷走向产品化,支付宝通过历年双 11 沉淀下的技术和经验,正在拉动整个中国的互联网金融科技一起飞奔。

——或者走向全世界。

双 11 早已不仅是中国的双 11,而是成为了一场全球的狂欢。与双 11 一起,技术也在走向全世界。

“不过要是说到我们的理想,那就是将来某一年双 11,整个备战室空空荡荡,除了关公像之外,不需要有任何同学留守,智能化的系统能搞定一切问题,而我们只需要捧着茶杯或喝着酒,看着丝般顺滑的曲线。”

对于巩杰所展望的这种未来,现场就有同学笑了。“不可能吧!?”每年双 11 都如同打仗一般,救兵如救火。

但是谁说不可能呢?毕竟,他们是那样一群已经把太多的不可能变为现实的人。

本文转载自公众号蚂蚁金服科技(ID:Ant-Techfin)。

原文链接:

https://mp.weixin.qq.com/s/RYahQaZVJH66YkTkmga6Ng

评论

发布