“双十一”

2015年11月12日零点刚过,蚂蚁金服首席技术官程立从阿里巴巴西溪园区一号楼五层的支付宝团队技术保障室出来,绕过建筑中的天井,快步向位于建筑物五层中部的“双十一”总指挥室走去,在他身旁还有支付宝技术保障团队的其他同事。

零点的钟声响过,意味着他们度过了一年当中最重要的一天。

这时,“双十一”的总指挥室里已是一片欢乐的海洋。在指挥部的大屏幕前,身着红色天猫文化衫的程立,和同事老苗、玄德、童玲等人一起面带微笑地举起双手,用大拇指和小拇指摆出了代表“双十一”的手势,在他们背后的大屏幕上,显示的是刚刚过去的这个“双十一”的战果:912.17亿元。

对于程立和支付宝技术团队来说,这是一个值得骄傲的时刻,在“双十一”凌晨高峰期时,支付宝和二百多家银行合作伙伴一起,扛起了每秒钟8.59万笔的交易洪峰。这个数字远超目前全球领先的支付机构的限流值,甚至比压测时候的峰值还要高出一万多笔。

短短几年,支付宝的交易笔数从千万级到亿级,数据处理从PB[1]级到EB[2]级的规模,可用性达到了99.99%。“异地多活”架构的支付平台、OceanBase数据库和金融云平台,一起成功地应对了“双十一”的支付“洪流”。

作为支付宝技术发展的见证人,程立既兴奋又感动,他最清楚这一路走来的艰辛,在人们为此欢呼庆祝的时候,他的思绪却不由自主地回到了五年前……

那是2010年的“双十一”。

2010年11月11日零点刚过,坐在电脑旁边的程立突然发现,支付宝的业务量正在快速攀升,一下子高出了平时最高值的三倍,程立清楚,这时系统只有一倍的余量。

刚开始,程立有些侥幸,他觉得大促刚开始时用户最活跃,等白天时,情况会慢慢好转起来,然而直到当天早上六七点,业务量还没有降下来,依然是平时的几倍。

这时,支付宝的技术人员开始着急了,大家意识到,当天的交易量一定会远远超出系统的容量。

淘宝第一次搞“双十一”大促是在2009年。那时,“双十一”还不像现在这样广为人知,所以2009年的交易量并不大。在此之前,支付宝也刚完成二代架构的升级改造,在二代架构做完之后,支付宝的技术团队感觉能解决的技术问题都已经解决了。很多人认为,未来系统也许就可以这样发展下去。因此,在2010年“双十一”大促之前,支付宝的系统规划是按照每年增长100%余量预估的,即系统永远有一倍的余量。按照当时的估测,大家觉得一倍余量一定够用。退一步说,即使出现问题,也可以等到交易量增长到一定程度时再继续增加资源。

因此,当天突如其来的巨大交易量让人措手不及。

情急之下,支付宝技术团队开始不停地“搬资源”,哪里有富余的计算资源就搬过来应急。如核心交易系统容量不足了,就把一些相对不重要的业务资源拿过来,到后来再不够了,就采用“砍业务”的方法,将那些暂时可以牺牲的业务砍掉,再把资源搬过来。

那天,所有开发人员都坐在电脑前,如临大敌般地处理问题:“到底这个机器是否要重启一下?……这个系统容量不够我要不要调一些机器过来?……”

直到当天的23时59分30秒,眼看2010年“双十一”大促就要结束,突然,核心账务系统报警。

“嘀、嘀、嘀……”短促清晰的警报声让在场的每个人都打了一个寒战。

“资源马上耗尽,赶紧杀掉非关键应用!”听到报警声后,负责数据库的同事一边冲过来,一边大喊。

程立倒吸一口冷气,他清楚可能产生的后果。那时支付宝的账务数据库还没有做拆分,而所有交易都经过虚拟账户,一旦核心账目系统出现问题,支付宝所有的业务都会停掉,数据库再想恢复就需要经过很长的时间。如果出现这种情况,对淘宝和支付宝都将是灾难性的。

急中生智,技术团队决定临时把会计的应用杀掉。因为当时支付宝的账务应用和会计应用是在一个数据库中,而会计的应用更多是在交易之后进行,暂时停用还可以恢复过来,这样便可腾出系统的资源,把账务系统的性能提升50%。

情急之下,负责消息系统的文若和几个同事冲上去,争分夺秒地在每台机器上敲上一行行的代码,紧急杀掉非关键应用,确保核心数据库资源。当时,文若是入职刚刚一年的应届毕业生,从没有经历过这样的大阵仗,他敲代码的手一直在抖,靠身体的本能在完成一步步的操作。最后,文若和同事将一个会计系统的应用杀掉,将资源释放了出来,当他敲完最后一行代码,身子便瘫软到了椅子上。

这时,离数据库崩溃只剩下四秒。

尽管过程很惊险,但是那一年的交易量很亮眼。2010年的“双十一”,支付宝全天成功交易1261万笔,平均每分钟有1万笔成功交易。但经过了这次“大考”之后,所有人都在反思,以后每年的“双十一”大促,业务量的增长只会更快,支付宝的系统怎样才能顶得住呢?

事后复盘,当时支付宝的CTO李静明在和技术团队总结时说,所有的资源弹性工作,应该是底层基础设施去做,但是支付宝当时不具备这样的技术能力,只能通过人工来“削峰填谷”,看哪边需要资源,就靠人工去搬资源,做各种各样的调整。

在李静明看来,对于2010年的“双十一”,整个团队都是在做“人肉的云计算”,而系统接下来的改造方向就是使“人肉的云计算”真正变成“底层系统的云计算”,这正是支付宝系统的第三代架构“云支付”的开始。

《蚂蚁金服》