微信系统崩了

核心提示本报记者 任晓宁 北京报道微信为什么没崩过?12亿中国人都在使用微信,却很少有人思考过这个问题。其实,微信也曾徘徊在濒临崩溃的边缘,腾讯基础架构部运营管理支撑中心总监邹方明现在还记得2014年除夕,人们刚学会用微信发拜年视频,流量直接爆掉,

本报记者任北京报道。

微信为什么没有崩溃?

2亿中国人在用微信,却很少有人想过。其实微信也曾一度濒临崩溃。腾讯基础设施部运营管理支持中心总监邹还记得2014年的大年三十。人家刚学会微信发拜年视频,流量直接爆炸,系统濒临崩溃。公司所有人的压力都集中在他一个人身上,等着他做决定。他说那是他最痛苦的时刻。

直到现在,微信用的最多的时候,比如除夕,或者元旦,七夕,中秋,或者情人节,腾讯的团队都会提前几个月准备资源。几年前的巅峰时期,负责腾讯红包系统运维的潘潇甚至拜见了QQ娃娃,如同拜佛一般,请求系统不要崩溃。

现在,他们已经积累了一套确保系统不会崩溃的方法论。

腾讯10年维护微信系统的故事,是一个从匆忙到从容的成长故事,是一个技术体系从无到有的故事,是一个全民用户产品的技术秘密。腾讯的技术团队向经济观察报讲述了这些故事。他们搭建的系统,使用的技术,运营中积累的经验教训,或许能为其他公司提供一些借鉴。

濒临崩溃

全面关闭系统,还是继续寻找漏洞?这是邹必须马上做出的判断。

他是腾讯的老人,2006年加入腾讯,主管技术,搭建过QQ和微信的聊天图片和视频系统。但在2014年除夕微信流量爆发,濒临崩溃的时候,他还是承受不了压力。“系统各个方向都崩溃了,流量也爆炸了。前端系统像洪水一样,后端系统更脆弱。连接了三四个系统和平台。不仅我们的平台崩溃了,底层存储其他部门的其他系统也崩溃了。”

用户端的感受是,用户在朋友圈发出了视频,但身边的朋友没有一个看到。

用户投诉不断,邹需要马上做出判断。他可以花更多的时间找出是什么原因造成的,彻底解决问题,或者干脆先把它砍掉,暂时限制视频功能。“哪个方案能最快恢复服务?事后在脑子里模拟了无数次,也想不出哪个更快。”

邹站在机房前,面对着那台显示死机的电脑。周围的运维人员看着他,手指放在键盘上,等待指示。老板在办公室一言不发,产品团队需要回复。公司外的数亿用户都在等待他的指示。

虽然只有十分钟,但每一秒都是煎熬。

邹终于决定一刀切。至少在被切断后,可以再次恢复,可以给用户继续使用的可能性。不然不知道要多久才能查出问题。直到现在,他也不能说自己的选择是最正确的,但却是解决问题最快的选择。

微信诞生初期,上述时刻时有发生。2015年,微信红包赞助春晚。除夕那天,红包的量级从10万提高到10亿。负责运营和维护的潘潇买了一个QQ娃娃,种了两根香。每当他感到不安全的时候,他就去玩偶那里膜拜,祈祷一切都不会发生。

微信后期,已经形成了成熟稳定的体系,仍然有意想不到的事情发生。2020年2月,腾讯发布会一个月增长1000次。腾讯云副总裁、腾讯基础设施部总经理肖志立也遇到了一个问题。他的问题不是技术原因,而是物质资源跟不上。

当时因为疫情,运营商的BGP带宽和外网IP地址无法满足,设备供应商无法复工,设备无法供应。

肖志立打电话给联想,问能不能给仓库供应一万台机器。对方说很抱歉,员工都回家了,疫情期间没办法回来。

最后,新机器没有交付。最后技术只能是死的。通过优化软件,将以前单位支持100路的技术升级为支持200路,解决了物理资源不足的问题。

从零开始的系统。

12亿用户感知的是他们每天都在使用的微信产品。在他们无法感知的地方,只有微信背后的技术平台包括图片平台、音视频传输平台、红包系统、小视频平台等。这些平台接入了腾讯内部90%以上的业务。

平台组合起来形成一个庞大的系统,基本可以解决已知和未知的问题。这些平台的形成不是一蹴而就的,而是经历了一个漫长的过程。

图片系统历史最悠久,早在2006年的QQ时代就开始使用了。当时QQ用户超过1000万,QQ空相册上线。产品很受欢迎,但对于技术团队来说,第一个问题是他们坚持不住了。没有存储方案,没有流量方案,没有索引方案可以支持用户的需求。“整个底层存储已经疯了”,邹来到这个部门恰好经历了这样一个时代。近几年一些公司赞助春晚或者遇到突发事件的时候,腾讯也遇到过十几年前的问题。现在微信和QQ系统的稳定,是那些年亏损后积累的经验和教训。

用户对图片的需求从腾讯第一代存储系统延伸出来,然后是TFS,接着是相册系统。但是,那个时候,他们并没有想到做一个技术平台。

很快,新的矛盾爆发了。QQ农场普及后,每个用户都有很多头像,但原有的相册系统无法支持图片的高IO。在这种情况下,邹做了一个简单的相册系统的分支,叫做头像系统。

头像系统和相册系统,都是图片,应该分开还是合并?当时内心就有些焦虑。经过长时间的PK,他们觉得还是应该融合。整合后,腾讯有了自己的第一个技术平台,图片平台。

与之前的分立系统相比,平台的优势在于成本。腾讯其他团队也在做图片服务。他们发现,花了这么多年研发,不如连上照片平台,解放RD团队的生产力。

腾讯的其他平台也逐渐诞生。

2016年,视频平台诞生。2019年形成音视频传输平台。这期间还有红包系统,文件系统,网盘系统。用户的几个核心场景平台都是基础设施部搭建的。

长期以来,腾讯在互联网公司中以产品实力著称。产品的背后是技术平台的帮助。

去年的热门视频号就是一个典型案例。一年时间,视频号推出了一系列功能。产品人员提出功能需求后,技术人员第二天或第三天就能拿出解决方案,这离不开平台的服务和支持。“当产品有了想法,RD人员可以尽快快速做出模型,迭代,尝试。”邹方明解释道,“能够在60分的基础上做加法,产品技术团队可以把视角放在用户喜欢玩的玩法上,放在终端体验的细节上,从而从整个研发的长周期中挣脱出来。”

微信诞生10年了,背后的体系也不一样。2016年之前,该系统处于性能不足的阶段。当时就出了问题,不管是bug还是代码问题。事件的根本原因是系统容量不足导致的故障。

2016年以后,系统会升级,然后会有热点或者突发事件。对于技术来说,只是量级的增加,在系统能够支持的范围内。

云时代,系统的支撑能力再次提升。QQ将在2020年全面在云端上线,整体在云端。微信花了3年时间上云,今年将全部上云。云的好处是,如果有紧急情况要从其他业务转移资源,速度要快得多。“不然我们要先把设备从A业务上拆下来,再加到B业务上,然后再测试验证,时间要长得多。”

在微信过去的10年里,系统的基础设施主要朝着两个主要目标努力。“一个是系统的健康程度,比如你的熔断能力和自我恢复能力。每年我们都在寻找方法。另一个方向是系统单位成本的承载能力。从字面上看,因为我们的资源团队和产品团队会给出一个固定的成本,所以固定的1万台设备到底能支持100万个请求还是500万个请求,是一个每年不断优化迭代的过程。我们会发现,只要你的承载能力强,你就可以把每一个关键时刻都变成非关键时刻。”邹对说:

产品不倒塌方法论

然而,即使有这个系统,也不能完全保证不崩溃。尤其是对于一个12亿人使用的社交产品来说,它是随时不可控的。

直到现在,腾讯的技术团队也不敢保证系统完全可控。“推演不是自己能计算出来的,总是会出错。比如零分全国有多少人发红包?公司红包多少钱?说实话,这个东西不是那么好估计的。这时候我们会想,是不是有一个大招可以保证流量控制在系统可以接受的范围内?这是非常重要的保障措施。”肖志立说。

崩溃前,技术部门会提前预演和策划“剧本”。“脚本”是一种柔性控制,也可以统称为降级。微信用户有时候会觉得微信消息延迟或者高峰期朋友圈视频分辨率降低,这是一种退化。

当系统遇到远远超过估计的流量时,就会降级。比如朋友圈里的一个视频,一般有2兆左右,但是在高峰时段,你可以把它砍到1兆,让更多的人有视频看。

在不可预测的商业场景下,他们基本都会这样应对。“当有高爆发的时候,用户不会用得那么好,但能让90%的用户感到满意,不至于说爆发超出预期,然后立马失效”。

肖志立告诉记者,腾讯一直有海量的技术方法。爆裂度比较高的时候,总有一个漏斗模型。“第一层先抵制大部分请求,把符合要求的泄露给下一层,然后把最重的系统交易给下一层。这样才能保证我们承担的请求是真正需要的,而不是把之前的请求都推到后面。”

这个技术方法论算是腾讯的保障,多年来屡试不爽。

如今,唯一的路就是平凡。

2021年春节,腾讯基础设施部平安度过。除夕五点半,肖志立带着当时留守的几十个兄弟到办公室对面的一家饭店吃饭。吃到六点半,他回来和机器一起过除夕。

全程没有惊心动魄的时刻,没有惊喜和欢乐。

李孝智仍然盯着整个过程。他每年都在春节前后,春节是微信最考验人的时刻。从他们的技术内部来说,不如春晚的流量真实。“每次思考的时候,不敲代码,不做指令。我为什么要加入?我能感觉到坠机后,所有人都指着我做出‘杀人’的决定。如果出了问题,我就有价值了。不出意外的话,我会像个闲人。”邹已经记不清自己参加过多少次春节联欢晚会了,但他就是觉得很感慨。

在一个基础架构师的职业生涯中,关键时刻做出关键决策是非常重要的。

2018年以后,微信很少有关键时刻了。这一年,微信红包的用户数基本接近微信,之后的增长一直基本稳定。

潘潇在过去两年中没有访问过QQ娃娃。“他们所有人都更加自信了。”

当前的系统不再需要重大改变。并且经过多年的春运经验,团队执勤的手段和策略已经完备成熟,可以提前预知事件。比如今年他们预测云年夜饭会提前导致一个小高峰。果然,当晚7点的人流量是往年的5倍。因为已经提前预测到了,所以这一年也顺利过去了。

对于现在的腾讯技术团队来说,已经没有更多惊心动魄的故事了。

建筑师的经验和教训

微信成立10年,腾讯的技术团队跟了10年。他们经历了高压,崩溃和焦虑,这些现在被认为是常见的。一路走来,他们见证了微信用户从0到12亿的崛起,他们很荣幸。“做一个技术支持团队,你必须有一个好的心态,就是你不在聚光灯下,但我们心里清楚,今天台上的产品如此成功,跟我们有很大关系。我们内心应该足够强大,相信这一点。”

他们也想出了足够多的方法与业务部门沟通。邹经常给团队灌输这样一种观念,除非你有确凿的证据证明你是对的,否则你应该先听业务部门的。

目前微信背后的技术体系已经接近完善。“没有明显的缺陷和不足。”肖志立对此很有信心。

但是,技术团队还是有焦虑。其实腾讯的技术团队一直很稳定。腾讯内部架构发生重大变化,技术部不变。他们经历了文字互联网,图片互联网,视频互联网,现在实时音视频互联网的时代。技术一直在进化,内容越来越丰富,实时性越来越强。对背后系统的承载能力的要求,以及对稳定性和时延的要求都比以前高很多。技术是无止境的,他们总是在等着攻克下一个难关。

邹还在学习。他经常参加线下活动。在一些论坛或者峰会上,他会冲到现场,与行业大牛面对面交流经验。“我们不能闭门造车。你得去外面找点学习的点。行业里有很多大牛,他们会有很多更好的想法和方法论。”"你永远不知道什么时候会出现新的东西。"肖志立很感慨。“作为支持团队,我们要有这种勇气和能力,在弹药不够的情况下支持业务团队取得胜利。”

 
友情链接
鄂ICP备19019357号-22