9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

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

  • 2019-11-26
  • 本文字数:5080 字

    阅读完需:约 17 分钟

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


活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2019-11-26 14:392160

评论

发布
暂无评论
发现更多内容

大数据开发培训中心有哪些

小谷哥

大数据培训学习包含java技术吗

小谷哥

API+DevOps:华为云API Arts一体化平台,端到端呵护您的API

华为云PaaS服务小智

API

重磅!GitLab 提出五大预测,洞见 2023 年 DevSecOps 发展趋势

极狐GitLab

DevOps 安全 DevSecOps 安全左移 供应链安全

HummerRisk V0.9.1:操作审计增加百度云、增加主机检测规则等

HummerCloud

云安全 云原生安全

Python读execl之xlrd库函数详解一:工作簿相关

Python Excel 数据读取

前端开发哪家培训机构教的好

小谷哥

西安java培训班哪家好?

小谷哥

国产研发项目管理工具那些能做 Jira 替代方案?对比国内几款工具

PingCode

Jira PingCode 项目管理软件

通过案例理解MQTT主题与通配符

EMQ映云科技

物联网 IoT mqtt 企业号 2 月 PK 榜 通配符

无FTTR不千兆,华为星光F30让家中不再有“隐秘的角落”

脑极体

华为 宽带 光纤

Python读写txt文本(示例说明)

Python 数据读取 txt

嵌入式ARM设计编程(三) 处理器工作模式

timerring

arm

小游戏也能脱离微信运行到自己的app中

Onegun

微信小程序 小游戏 小游戏开发 微信小程序-游戏

不是留给飞书的时间不够,而是中国To B需要重塑时间观

B Impact

使用开源实时监控 HertzBeat 5分钟搞定 Linux 监控

TanCloud探云

Java GitHub 开源

Web、移动端、桌面端自动化测试工具或框架推荐

软件测试 自动化测试 自动化框架

StoneDB 源码解读系列|Tianmu 引擎工具类模块源码详解(一)

StoneDB

数据库 开源 HTAP StoneDB 企业号 2 月 PK 榜

李志飞回媒体“出门问问硬件和ToB业务”表现不错,将做中国 OpenAI,美国YC项目1/3已基于大模型

B Impact

新春发版,大展宏“兔”:StoneDB-5.7-V1.0.2 版本正式发布!两分钟快速部署安装您的分析加速器~

StoneDB

开源 数据库· StoneDB 企业号 2 月 PK 榜

恭喜! SelectDB 五位开发者成为 Apache Doris 新晋 PMC 成员和 Committer!

SelectDB

数据湖 Doris 程序猿 ;开源 企业号 2 月 PK 榜

保险行业需要一个安全的大数据传输

镭速

JuiceFS 在火山引擎边缘计算的应用实践

火山引擎边缘云

边缘计算 存储 JuiceFS 火山引擎 渲染

产品价值“三省”

QualityFocus

武汉前端开发培训哪家比较好

小谷哥

实践指南|如何在 Jina 中使用 OpenTelemetry 进行应用程序的监控和跟踪

Jina AI

Python 微服务 PyTorch 云技术 OpenTelemetry

敏捷管理到底有没有捷径可走?

Onegun

开源 将本增效 敏捷迭代

基于Web的6个完美3D图形WebGL库

2D3D前端可视化开发

前端开发 WebGL webgl库 3d图形库 webgl框架

「 Java基础-泛型 」一文说清Java泛型中的通配符T、E、K、V、N、?和Object的区别和含义

小刘学编程

Java 源码阅读 Java泛型 构架师

TO B Ask100-1、2| 破解“ All in one”悖论;如何降低客户成功成本?

B Impact

飞书首次披露2022年1亿美金ARR,明确 TO B商业化立场

B Impact

  • 扫码添加小助手
    领取最新资料包
1分36秒,100亿,支付宝技术双11答卷:没有不可能(下)_文化 & 方法_Geek_cb7643_InfoQ精选文章