微信背后不为人知的一场巨变:他们如何「把大象搬进冰箱」?

2020年1月中 , 距离春节不到1周的时间 , 微信技术架构负责人StephenLiu非常焦虑 , 即将到来的除夕夜是一年当中微信业务最为繁忙的时刻 , 好几亿的用户会在这个时刻发送新年祝福以及微信红包 , 微信服务器也经受着一年比一年更大的冲击 。
为了保障所有人都能如期收到新年祝福 , 抢到微信红包 , 微信技术团队在每年年底进入「春节保障」模式 , 进行服务器压力测试 , 确保微信不掉链子 。
最关键的时刻 , 很棘手的问题但是在这一个春节的测试阶段 , 却出了问题 。
诞生于2014年的微信红包 , 在当年春节期间就经历过不大不小的宕机 , 部分用户在部分时间领不了红包 , 也看不了红包金额 。 次年 , 微信拿下了春晚的广告互动权 。 那一年除夕当日中国微信红包收发总量达10.1亿次 , 春晚微信摇一摇总量达110亿次 , 这一年微信准备充分 , 大体上还算平稳 , 偶有小规模宕机 。
因此 , 还没到春节就出现测试问题 , 不是个好现象 。
StephenLiu说:
我们当时想压测的(目标)值大概是每分钟下发的消息数有几十亿条 , 但是我们压测到的水平只有目标的一半 , 当时离春节只有两个星期了 。
所谓压测 , 就是对微信线上的服务器做扩容 。 扩容完之后 , 然后进行攻击性模拟 , 模拟在除夕零点那一刻的峰值数据 , 看看今年有可能比去年增加多少 , 然后把那个量完全模拟出来 , 压到系统上面去 。
简单理解 , 就是类似于网站对自己进行DDoS攻击 , 测试网站能经历多少人同时访问而不宕机 。 更通俗的理解是餐厅接客 , 淡季一家餐厅的座位和厨师只能同时接待100位客人 , 但是旺季的时候 , 可能同时有300位客人需要就餐 , 这个时候就需要提前扩建餐厅招聘厨师了 , 也就类似于「扩容」 , 或者实在不行就让客人在外面排队等位 。
但微信收发消息是不能采用排队等位方式的 。
微信背后不为人知的一场巨变:他们如何「把大象搬进冰箱」?
文章图片
微信技术团队和StephenLiu这次遇到的问题就好像明明扩建了餐厅多招了厨师 , 但是同时能接待的客人只有150位 , 没有达到300名的目标 , 并且这个时候厨师都还挺闲 , 座位也很空 , 外面还有人排队 。
微信技术团队在此之前已经核查了大概一两周时间 , 终于定位到问题:网卡性能出现了问题 。 再打个比方说 , 就是像是餐厅门口的接待员偷懒 , 没把客人往屋里带 , 导致餐厅里面坐不满 , 外面客人排长队 。
问题背后 , 是一场微信不为人知的巨变之所以往年压测没问题 , 这一年压测有问题 , 涉及到微信背后的一场巨变:自研上云 。
这场巨变从2018年腾讯的930变革开始 , 2018年9月30日 , 腾讯再次对公司架构进行大调整 , 原有七大事业群重组整合 , 新成立云与智慧产业事业群(CSIG)、平台与内容事业群(PCG) 。 其中CSIG承担着腾讯ToB的宏伟愿景 , 而微信事业群(WXG)则是连接了最广大的C端用户 。
云 , 对于腾讯来说已经是战略支点业务 , 从此时开始 , 自有业务自研上云成为业务调整的重要事项 , 而微信业务自研上云则是重中之重 。
在腾讯930变革之前 , 腾讯并未给内部自研业务提供统一的云基础设施 , 而是采用物理机服务器的模式 。 宏观上讲 , 考虑到微信巨大的用户量和业务量 , 自研上云能够带来巨大的成本和效率优势 , 对微信和腾讯云两个业务都有好处 。
但微观上讲 , 一个涉及到10多亿用户的业务要做如此巨变 , 并且要让用户无感 , 就好像需要给高速行驶的汽车换轮子 , 车不能停 , 甚至都不能颠簸 , 同时轮子也要换 。