2021年春节,在全国上下“就地过年”的号召下,很多人第一次经历了除夕夜没有与家人团聚。而对邹方明来说,除夕夜在公司早已是家常便饭,过去九年,他的年夜饭时间都是与同事们一起度过。
以往,邹方明和同事们习惯叫海底捞的外卖到公司,大家以一顿火锅来为过去的一年收尾,但今年,因为搬到新的大厦,不能开火,所以大家只能跑到公司对面的一个餐厅去吃饭。
所谓的年夜饭,整个过程也十分平淡,没有人喝酒,吃饭时间也只有下午5点半到6点半约一个小时,用餐完毕,大家都快速回到了工作岗位上。因为不出意外的话,晚上7点他们会迎来一波用户高峰,而接下来的时间,他们的任务就是监测一波又一波的用户高峰,并应对可能到来的突发流量。
伴随着新年的钟声敲响,邹方明眼前的监测软件一切正常,他们终于可以松一口气,因为又挺过了一年“春保”。
邹方明现在是腾讯基础架构部自研业务中心总监,他所在部门的主要职责是做腾讯内部自研业务的研发支撑,简单来说,就是该部门接入了腾讯超过90%的业务,用户平时使用的腾讯产品,如微信、QQ等,底层的技术支撑都与它相关。
而“春保”是春节重保的简称,邹方明告诉21世纪经济报道,腾讯的产品以社交产品为主,而社交产品一定会有热点事件、关键时刻以及重点保护时刻,其中,春节则是挑战最大、任务最重的重点保护时刻。
据悉,腾讯内部开始设立“春保”项目是从2013年春节开始。腾讯云副总裁、腾讯基础架构部总经理肖志立在接受记者采访时表示,春节的高峰期其实在PC互联网时代就有,只不过那时候,用户上网还没有那么方便,所以当时的高峰不是在除夕,而是在初四或初五,大家过完春节开始工作后,要把一些照片上传到QQ空间进行分享,但整体来说,那时候的保障压力不是很大。
但从2012年开始,尤其是当微信出现之后,移动互联网的浪潮席卷而来,用户的沟通互动变得更加实时,也由此催生出真正的春节高峰。之所以说这是真正的高峰,是因为与过去PC互联网时代相比,它的峰值有了成百上千倍的增长,当然,这种巨大的反差,也给从事技术保障的工作人员,留下了许多惨痛的回忆。
意外不断的“春保”
对邹方明来说,2013年是他第一次经历“春保”,那也是他最“痛苦”的一年。
当时,2011年1月发布的微信正快速发展,2012年3月,微信的用户量突破1亿,到了2013年初,微信的用户量已经突破3亿。而邹方明是微信聊天图片以及聊天视频整套系统的研发负责人,如上文所述,2013年之前,腾讯内部并没有明确的“春保”概念,邹方明也没遇到过增长如此之快的产品,所以,在他脑海里,也没想过微信会突然出现“大拥堵”。
2013年的除夕,在整个移动社交如火如荼的背景下,人们在移动端的互动变得越发频繁。微信里,用户们拉起各种群聊,并开始群发拜年视频。社交产品的魅力在于它的裂变,一传十,十传百,但对技术人员来说,这种裂变带来的则是恐怖的高并发。
邹方明回忆,2013年除夕,拜年视频的量突然增长了六七倍,这已经超过他们的储备。当时,面对突如其来的巨大视频量,邹方明有些束手无策,因为没有准备预备方案,也无法临时调取更多服务器资源,为了保护整个系统不崩掉,他们只能采取降级的方法。
这里的降级,是指限制用户发视频的大小,一开始的限制是10兆以上的视频不让发,后来变成6兆、4兆、2兆,整个降级过程从当日晚上7点一直持续到10点,整整三个小时。邹方明称,晚上8点多最高峰的时候,他们几乎限制了70%-80%的用户发视频,这是非常可怕的,其间他们也收到了大量用户投诉,但当时确实束手无策,只能通过这种粗暴的方式,把流量高峰熬过去。
有了2013年春节的惨痛经验之后,腾讯内部开始进行“春保”筹备。邹方明介绍,“春保”项目的筹备周期基本上从每年10月份开始,持续两到三个月左右。筹备过程中,产品和技术团队会先把春节期间的产品玩法大致都确定下来,然后再根据这些玩法来衡量各个产品要用多少带宽和存储等。
当然,这个时候并不是产品提出多少资源需求就都能满足,邹方明团队还会把需求和资源做一个着重的平衡,目的是在资源有限的情况下,通过技术的提升和柔性的策略,确保各个产品的用户体验。
但2015年春节,在进行了“春保”准备下,意外还是发生了。因为2014年10月,微信上线了小视频功能,可以分享到朋友圈和聊天界面,所以“春保”前夕,即10月、11月时,微信小视频的用户量并不大,在做预估时,也根据它的量级给了几十倍的容量。
可到了2015年除夕,微信小视频突然产生了超出预期的巨大峰值。在春晚开始前的一个小时左右,小视频的发布量激增,系统开始出现故障。邹方明和同事们开始紧急扩容,但是,由于当时微信小视频的系统是复用腾讯视频的,更加偏向PGC,而不是UGC,所以处理过程也更加复杂。
邹方明回忆称,当时紧急扩容了一个索引模块后,索引没问题了,但随着量继续上涨,前端接入模块又出现问题,然后处理好接入模块后,另一个视频处理模块又不行了。
“所以当天晚上,问题也持续了约三个小时,当我们把能扩的地方都扩完之后,用户高峰已经过去。”邹方明说,虽然整个系统没有受影响,但是对用户来说,这个除夕的小视频体验是不好的。所以2015年春节过后,腾讯基础架构部对整个视频系统架构做了调整,并针对小视频的场景做了优化。
扛住红包压力
2015年春节,除了微信小视频带来的紧急状况之外,腾讯“春保”实际上还迎来了另外一场大考——微信红包的春晚互动。
肖志立向记者表示,大概2014年11月,他们从微信支付团队得知,春节要和春晚合作进行一场红包活动,触达的用户规模会很大。当时,距离春节只有两个月的时间,这对肖志立团队而言,无疑是一次重大考验。
肖志立称,当时面临的问题主要有三个:首先是原来的红包系统肯定不能用了,因为原来的系统本来是面向公司内部几万人使用的,现在要扩大到给10亿用户发红包,整个系统必须重做。
其次,春节的红包活动是通过春晚口播的形式,让用户参与抢红包,这里面的挑战是很难预估系统要承载多少访问量。“不知道要承受多大的压力,这其实是做架构的大忌,但我们当时确实没有任何参考。”肖志立说。
最后,是这次技术保障工作只许成功,不许失败,“如果失败,那就是在全国人民面前丢脸,所以技术层面的压力会比任何时候都大。”
在这不到两个月的时间里,肖志立带着腾讯基础架构部的红包系统团队和微信支付团队一起,通宵达旦地待在深圳腾讯大厦,每天基本上是晚上12点钟提交版本,凌晨1点开始做测试,大概凌晨三四点钟出结果,大家再继续上来研究第二天如何优化和改造。
一直到2015年2月10日左右,整个红包系统基本上确定了下来。但直到除夕前三天,整个团队仍然在改代码,因为在反复测试过程中,只要发现可能带来风险的地方,肖志立都会让团队把它改掉,“我们必须尽量把所有风险都排除掉。”
最终,腾讯的2015年春晚红包活动圆满完成,微信支付也凭借这次合作,在移动支付领域完成了对支付宝的追赶。据微信官方数据显示,2015年除夕当日,微信红包收发总量达到10.1亿次,在晚上8点到次日凌晨零点四十八分的时间里,春晚微信摇一摇互动总量则达到110亿次。
腾讯基础架构部技术运营中心总监肖攀告诉21世纪经济报道记者,对于红包系统来说,如果遇到了超预期的巨大流量压力,他们也会采取一些降级的办法,比如从金额上做一些限制,这样就可以把并发量快速降下来。
另外据肖攀介绍,整个红包系统其实像漏斗一样,它每一层都在过滤,所以抢红包的“抢”这一下,是用户并发量最高的,其次是拆,等到最后真正的交易环节,其实用户并发量已经少了很多。
虽然近几年,微信红包的发展速度也很快,但是再也不会像2015年那样出现从10万量级到10亿量级的飞跃式增长。目前,微信红包的用户量已经接近于微信的用户量,春节期间并发量的增长也相对稳定,对腾讯的红包系统来说,现在的主要工作就是对系统进行不断优化,降低成本和资源。
“春保”变成常态
邹方明告诉记者,若回顾腾讯过去九年的“春保”,大致可以分为两个阶段,第一个阶段是2013年至2016年,可以称为承载力不足的阶段。
在这段时间,有业务快速发展的原因,也有腾讯自身技术架构不完善的原因,总之就是系统能力不够支撑业务的增长,导致了各种故障的出现。所以这个时期,主要工作就是提升承载能力,除了增加硬件设备,在技术手段上,也要不断进行性能提升。
第二个阶段则是2016年以后,这个阶段,在过去几年的沉淀和优化下,腾讯的承载能力已经基本没有问题,这时候要做的就是精益求精。伴随着用户对产品体验的要求不断增加,腾讯也需要在保证系统正常运行的基础上,不断优化承载能力,比如过去,可能对技术的要求是不能拒绝服务超过30分钟,而现在,拒绝服务的情况已经不会发生,对技术的要求则变成服务的时延不能超过5分钟。
今年的“春保”,肖志立整体体验下来,感觉十分顺畅,所有的高峰期都在预测范围内。所以,对肖志立带领的腾讯基础架构部来说,像“春保”这样的重点时刻的保障工作,在现有的业务条件下,压力已经趋于平稳,要提防的主要是一些突然出现的关键时刻。
比如2020年初,因为新冠疫情的原因,让2019年底才上线的腾讯会议迎来了一次关键时刻。按照腾讯会议团队原先的目标,是预计2020年底的DAU达到5万,到2月中旬时,腾讯会议的同时在线用户已经突破400万,达到了1000倍的增长。
这种大幅的增长,也给腾讯基础架构部带来了巨大的挑战。肖志立表示,其实单从技术层面,在线用户几百万的业务腾讯有很多,做这种业务的支撑也不是什么难题。但当时之所以情况紧急,是因为疫情的影响下,他们无法找到足够的物理资源,比如运营商的BGP宽带满足不了,外网的IP地址也满足不了,一些设备供应商无法复工,各种设备也供应不上。
这个时候,这些硬件的问题只能通过软件来想办法解决。肖志立称,IP地址不够,就想办法用端口复用的技术,新机器供应不了,就从全国各地调集服务器,重新通过虚拟化或者软件架构的方式去适配,争取先把腾讯会议的业务支撑起来。
就是在这种条件极为艰巨的情况下,腾讯会议完成了100万核的扩容。其实从难度上来讲,腾讯会议的紧急扩容要比2015年应对春晚红包活动更难,因为这是在完全没有准备的情况下,应对的一次挑战。而腾讯之所以能够顶住压力,也是因为过去经历了太多次像“春保”一样的重要时刻。
邹方明便表示,现在从故障发生的频率和维护的稳定性来说,技术保障工作变得更加容易了,因为大家都身经百战,很多员工从2013年“春保”工作至今,对每个业务的性能和需求都十分熟悉。所以现在出现大状况,主要就是因为没想到,但实际上,这种没想到的情况也已经越来越少。
来源: