沃尔沃第四季度调整后营业利润超出分析师预期
06-18
,距离春节不到一周,微信技术架构师Stephen Liu非常着急。
即将到来的除夕夜,是一年中微信业务最繁忙的时候。
这段时间将会有数亿用户来到这里。

我们一直在发新年祝福和微信红包,微信服务器也每年都在受到较大的影响。
为了保证大家能够如期收到新年祝福、抢到微信红包,微信技术团队在每年年底进入“春节保底”模式,进行服务器压力测试,确保微信不丢包。
链。
最关键的时刻,一个非常棘手的问题。
但在春节期间的测试阶段,却出现了问题。
诞生于2009年的微信红包在当年春节期间经历了中度宕机。
部分用户部分时间无法领取红包或查看红包金额。
次年,微信获得春晚广告互动权。
当年除夕夜,中国微信红包收发总数达到10.1亿个,春晚期间微信摇一摇总次数达到1亿次。
微信今年准备充分,总体稳定,偶尔出现小规模宕机。
因此,春节前出现检测问题并不是一个好兆头。
Stephen Liu表示:我们当时想要压测的(目标)值大概是每分钟发送数十亿条消息的数量,但我们测量的水平只有目标的一半,而且距离春节也只有两周了。
所谓压力测试,就是扩大微信在线服务器的容量。
扩容完成后,再进行激进的模拟,模拟除夕午夜的峰值数据,看看今年的数据可能比去年增加多少,然后完全模拟这个量,推送到系统上。
简单理解的话,类似于一个网站对自己进行DDoS攻击,测试该网站可以同时访问多少人而不会宕机。
更通俗的理解是餐厅接待客人。
淡季时,一家餐厅的座位和厨师只能接待一名客人。
但旺季时,可能会有一位客人同时需要就餐。
这时候就需要提前扩建餐厅,招募厨师,类似于“扩建”,或者实在不行就让顾客在外面排队等桌子。
但微信收发消息不能排队等候。
微信技术团队和Stephen Liu这次遇到的问题是,他们明明扩大了餐厅,聘请了更多厨师,但只能同时接待10位客人,并没有达到著名的目标。
而且,此时厨师们都相当空闲,座位也不多。
里面空荡荡的,但外面还排着长队。
微信技术团队之前排查了大约一两周,终于找到了问题所在:网卡性能有问题。
换个比喻,就像餐厅门口的接待员偷懒,没有带客人进房间。
结果餐厅并没有坐满,外面顾客排起了长队。
问题的背后是微信不知道的巨大变化。
之所以往年压测没有问题,今年压测却出现问题,与微信背后的一个巨大变化有关:自研和上云。
这一巨大变化始于2018年腾讯的转型。
2019年9月30日,腾讯再次对公司架构进行重大调整。
原有七大事业群进行重组整合,新成立云与智慧产业事业群(CSIG)、平台与内容事业群(PCG)。
其中,CSIG负责腾讯ToB的宏伟愿景,而微信事业群(WXG)则连接最多的C端用户。
云已经成为腾讯的战略支点业务。
从此,自研业务上云成为业务调整的重要事项,而微信业务自研上云更是重中之重。
腾讯改革之前,腾讯并没有为内部自研业务提供统一的云基础设施,而是采用物理服务器模式。
从宏观角度来看,考虑到微信庞大的用户基础和业务量,自研上云可以带来巨大的成本和效率优势,这对微信和腾讯云业务都有利。
但从微观角度来看,如果一个涉及超过10亿用户的业务需要进行如此大的改变,并且给用户带来不便,就像更换高速汽车的轮子一样。
汽车无法停下来,甚至无法颠簸。
与此同时,轮子也必须改变。
之前的压力测试的问题是在更换轮毂的过程中出现的。
事实上,是时候换轮子了。
Stephen Liu 说:微信只是一个部门。
当公司提出这样的成本优化想法时,我们还是挺紧张的,因为当时部门人不多。
当时只是一个部门,只有三四百人。
2016年之前,微信所有的人力都集中在迭代功能、不断打磨新功能上,所以不太关注后端服务器是如何使用的,包括架构做得如何。
公司有这个要求,后来公司就安排人去各个业务部门参观,看看它做得怎么样,最后选了非常有经验的人。
比如,当时带领团队的人同时也是公司的VP。
不管怎样,我印象很深刻,因为我多次得到他的认可。
就说微信的成本很高,你的服务器没有用好。
▲微信之前的报告PPT这次降本增效的要求,促使微信团队首次优化服务器架构,采用了名为YARD的系统架构。
不过,这次自研和上云需要与腾讯保持一致,采用开源的K8S系统架构。
与YARD相比,K8S架构更加开放,在适应人工智能和大数据框架方面具有先天优势。
如今,微信的很多功能都与人工智能和大数据相关,比如语音转文字、文本翻译功能。
也就是说,微信在2005年采用YARD架构的目的很简单,就是为了帮助灵活调度服务器资源,节省成本。
没有考虑更复杂、更长远的问题,而且当时K8S还没有开源。
随着时间的推移,业务发展不断进步,K8S架构的优势逐渐超过架构迁移的痛苦。
这与腾讯的业务转型不谋而合,这种变化是不可避免的。
微信基础设施工程师Edsel Wang向爱范儿讲述了微信自研迁移上云的宏观步骤:对于微信团队来说,上云可以分为狭义和广义两个层面。
狭义上来说,上云指的是变革之年。
公司变革后,公司推动自研、上云,随后微信开始使用公司提供的统一云基础设施。
从广义上讲,上云意味着微信逐步将整个研发模式云化。
这不仅仅包括将一些后端服务从原来的物理机迁移到云端。
当然,还包括整个研发流程与云端的整合。
经过2018年的变革,公司推进自研和上云至今经历了两个阶段。
第一阶段是2010年到2018年,该阶段公司主要改变提供服务器的方式,即从提供物理机转向CVM(云虚拟机)。
第二阶段从2019年开始,公司进一步要求各业务部门将部分内部调度系统统一改为K8S。
对于我们来说,这意味着从 YARD 迁移到 K8S。
第一阶段,我们从原来的物理机改为使用CVM。
由于我们设计YARD作为它的调度层,所以我们主要的工作就是将YARD适配到云端,因为YARD本来是支持物理机的。
现在YARD支持CVM虚拟机,业务层不需要做太多改动。
第二阶段,对于微信团队来说,需要使用K8S,也就是用腾讯云提供的K8S集群的调度能力来替代自研的YARD平台。
为了让这次迁移更加顺利,我们在用K8S替换YARD的过程中规划了三个步骤。
第一步要解决微信能否在K8S上运行以及程序能否在其上运行的问题。
第二步是将YARD积累的一些经验移植到K8S上,让K8S能够与YARD原有的能力对接,能够继续使用YARD原有提供的所有能力。
第三步,我们需要充分发挥K8S的能力,因为前两步中YARD提供的一切我们都提供了。
第三步,我们要充分利用K8S的能力,主要体现在成本和效率上。
我们在年前完成了前两个步骤。
下半年我们开始大规模使用K8S。
从年初开始,我们进入了第三步。
从目前来看,我们的成本和研究效率,相比原来的YARD,都得到了进一步的提升。
而从广阔的云角度来看,微信团队在推广CVM虚拟机时也有一个里程碑式的事件。
也就是存储团队在上云方面也取得了突破,因为微信一直在使用自己开发的存储系统,我们经历了很多不同的DB(Data Base,数据库)和KV(Key-Value,数据库)系统)历经十年,终于在infinityKV版本实现了存储迁移到云端的能力。
今年下半年,infinityKV开始上线。
微信后台约80%的数据存储在新的infinityKV系统中。
这就是我提到的微信云迁移过程,就是把大象搬进冰箱的步骤。
Edsel Wang进一步介绍了YARD逐渐显现的局限性。
2017年,整个行业对于云平台还没有一个明确的定义。
另一方面,腾讯的硬件环境与现在的云硬件环境有很大不同。
YARD是在当时的硬件环境下开发设计的,导致其缺乏磁盘、网卡虚拟化等一些核心能力。
一开始,微信自研和上云过程中出现的压测问题就定位在网卡上。
原因是腾讯云当时采用了新的模式,CVM操作系统和硬件的适配还不够好。
最后,微信技术架构团队通过走弯路救国的方式简单解决了CPU负载低但网卡性能瓶颈的问题。
简单来说,如果原来的服务器CPU有3核,切片后90核配1块网卡。
结果网卡满载,CPU负载只有20%左右。
微信技术架构团队对CPU核心进行了重新分段,改为1张网卡对应48个CPU核心,使得CPU负载过半。
在充分利用性能的同时,网卡负载不再是瓶颈。
这是临时解决方案,这是临时解决方案,根本解决方案是用CVM优化网卡调度器。
CVM网卡调度器的优化以及向K8S的迁移,让微信后端能够更有效地控制网络流量,进一步提高微信后端部署的灵活性和稳定性。
改变并不可怕,可怕的是改变没有发生。
去年,微信遭遇了最长的一次宕机。
由于挖掘机挖出了通信光缆,华东数据处理中心的业务请求被分流到华南和华北地区,进而导致微信服务瘫痪5个多小时。
此后,次年部署YARD架构时,微信提供了一个重要功能:三园支持。
即在每个城市建设3个机房(园区)。
机房网络、电源独立。
即使其中一个的纤维被切断,也会有另外两个作为支撑。
这是当今服务器部署中常见的“冗余”概念。
现在自研并迁移到云端后,不仅服务器资源虚拟化,新的K8S架构还能走得更远。
服务器资源属于整个腾讯公司。
这个资源水平要大得多,“冗余”也更多。
这就像贷款一样。
微信以前是向市分行借钱,现在是向省总行借钱。
在微信迄今11年的历史中,微信的定义在不断变化。
朋友圈、微信红包、小程序、视频号等节点功能一次又一次拓展了微信的定义。
它是一个社交网络、一个支付工具和一个内容平台。
微信背后的服务器支持也面临着这样的变化过程。
此前,北京的第一场降雪导致当地用户疯狂发朋友圈,这也导致服务器需求瞬间增加。
这时候就需要快速响应扩张。
然而,某个地方的天气变化和用户行为是不可预测的。
春节、除夕夜,半夜集体发红包是不可避免的。
类似的必然还有很多,比如周杰伦的演唱会视频号直播,播放量高达千万。
这对微信服务器来说是一个巨大的考验,但这可以提前进行压力测试和部署。
回想起去年9月份的一次直播,视频号后端开发工程师Bok Zhou仍然感到激动不已。
他表示,得益于迁移到云端的优势,微信团队可以更快地将更多服务器资源上线,避免部分用户在遇到这种意外的流量激增时无法观看直播。
自研迁移上云也是一个长期不断变化的过程,优势会慢慢发现。
现在这个过程还没有结束,但一些优势和愿景已经可以预见。
微信技术架构师Stephen Liu表示:一年多前我和我的团队分享了一个观点,我用自动驾驶的五个级别来比喻。
0 级是手动驾驶,根本没有自动化。
Level 1有一些驾驶辅助,Level 2有更强的驾驶辅助,Level 3已经有一定的自动驾驶能力,然后还有Level 4和Level 5。
我的一个希望是,未来可以像自动驾驶一样春节期间完全由机器驱动。
几年前我们可能处于 0 级。
后来经过YARD之后,就是Level 1。
经过多年对K8S各种能力的探索,我想我们现在应该处于Level 2了。
我希望接下来能达到Level 3,会有比较完善的自动驾驶功能。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-18
06-18
06-17
06-17
06-18
06-21
06-17
06-18
最新文章
Android旗舰之王的过去与未来
智能手表不被开发、AR眼镜被推迟,Meta的产品经历了一波三折
为什么Cybertruck是特斯拉史上最难造的车?
更新鸿蒙3后,文杰允许你在车里做PPT了
新起亚K3试驾体验:追求“性价比”,韩系汽车仍不想放弃
阿维塔15登场!汽车配备了增程动力,理想情况下会迎来新的对手吗?
马斯克宣布创建 ChatGPT 竞争对手! OpenAI的CEO给他泼了冷水, GPT-5可能会发生巨大变化
骁龙无处不在,是平台也是生态