为何微博又双叒叕崩溃了?
昨晚(2022.08.02)因为某国政客窜访宝岛,全中国的网民都在围观热点事件,大量的访问和各种互动,在事件高潮的时候把微博平台压崩溃了。
很多小伙伴都有疑问:微博平台经过那么多次的明星热点事件,高性能高可用的架构也优化了 4~5 次了,不是说现在已经优化到动态扩容就可以应对突发热点事件吗,为何这次还是崩了?甚至有小伙伴开玩笑说:要不华仔你上吧!:)
坦白的说,我上我也搞不定,微博不断的遇到热点事件就崩,本质上当然不是微博的技术人员水平不足,我相信微博的技术人员在微博这个业务领域,无论经验和水平肯定都有大把比我厉害的人。之所以不断优化后遇到新的热点事件还是可能崩,背后的原因是和架构优化重构(以下简称架构优化)的技术本质决定的。
什么是架构优化的技术本质呢?简而言之,架构优化的本质是针对某个场景的定制化优化,这个场景有一定的历史经验和数据,然后我们假设再次出问题的时候应该怎么做才能抗住,而假设时也不能天马行空的乱猜,通常来说,假设有两个约束:1)故障模式类似;2)故障严重程度不能无限放大。这两个约束都是为了架构优化和业务的 ROI 考虑。
第 1 条好理解,第 2 条很多同学可能不太容易理解。举个简单的例子:某个明星出轨导致微博崩溃,事后复盘发现峰值流量假设是 100 万 QPS(仅仅是举例数据),那么架构优化的时候,定目标该怎么定呢?200 万可能比较保守,500 万比较正常,1000 万也是可能的,但我相信没有人会按照 1 亿来预估的,核心原因当然是成本了,毕竟热点事件可能 1 年 1 次,也可能 2 年 1 次,但是如果按照 1 亿的预估来落地架构,每分每秒的成本都是实打实的在消耗的。
有的同学可能有疑问:现在不都是弹性计算了吗?直接热点事件出现后弹性扩容不就可以了吗?这个问题其实就涉及了我们刚才分析的第 1 点:故障模式类似,这个关键点隐含了一个前提:我们不可能做到所有业务所有子系统全链路任何一个处理环节都可以做到弹性扩容,只能针对故障模式下的问题点和瓶颈点进行优化。某一年淘宝双十一收货地址故障就是一个典型的例子。
尤其是有状态的服务做弹性计算比较麻烦,以及物理机器容量、带宽等本身不可能无限(对于中小公司来说,能弹性扩容是因为业务量不大,云厂家服务器本身有空余;而对于淘宝支付宝这种量级的业务,双十一前都是要提前准备物理机器的),会大大限制弹性扩容的效果。
基于前面的分析,我们首先来看一下这次热点事件从业务角度来看,与以前的热点事件有什么区别。
以前的明星热点事件,第一种是明星本人的一两条微博是超级热点,第二种是热搜榜单超级热点。而这次的热点事件业务模型是完全不同的。
首先是热点全面开花,很多官方微博、大 V 都在不断的更新,这些微博可能平时量不大,但昨晚量非常大,例如共青团中央、胡锡进、中国新闻等,而且用户不断地在刷这些官方和大 V 的微博、热搜热榜等;
第二是普通用户参与度非常高,不仅仅只是“看微博”而已,大量的用户自己不断通过“发、转发、评论”来表达自己的观点,写入量比明星热点事件要高非常多。
第三是这个热点事件持续时间很长,前后持续 4 个小时以上,不像明星热点事件,普通群众吃完瓜就走了,昨晚是大家不停的在跟踪事态发展,相当于一直处于峰值,这个对系统的压力和要求非常大。
因此我们可以看到,这次事件表面上看是“热点事件”,但本质上是完全不一样的“热点事件”,这次是“政治热点事件”。以前微博针对明星热点事件做的优化,这次热点事件可能很多措施都用不上,或者以前没有优化的地方这次成为了瓶颈,所以,微博又双叒叕崩了,这不是技术水平的问题,换谁都一样大概率会崩。
那么问题来了,微博会针对此次政治热点事件再做一次架构优化,争取能抗住下次这样的热点事件吗?我个人认为小优化是可能的,大投入的优化基本不可能,要顶住昨晚这样的热点事件,架构本身要做很大的重构,而且硬件上要准备很多备用,毕竟物理机器不够的话再怎么动态扩容都没用,这个成本对微博来说我个人觉得是划不来的,毕竟下一次这样热的政治事件多久会发生还不确定呢 :)
下面是曾经在微博工作过的架构师了解了一些信息后,个人做出的技术分析和推断,大家可以看看,基本上验证了我们前面的分析和推论(仅代表个人意见,非官方正式结论):
以前各种明星出轨,热点流量,主要的压力都在基础平台和业务,所以,大家在业界看到的扩容,很多都是 feed 平台,热搜平台的,mapi 是微博 app 的一个统一后端网关,半个网关,半个业务的角色,昨天的问题在于 http dns server 被打满,而 mapi 也会调用 http dns,导致整个 mapi 后端都挂了,所以,微博 app 不能用,但是 pc 端是可以用的,http dns 是一个比较容易忽视的点,而这个点,一旦出问题,尤其是热点流量,mapi 越扩容,扩容的机器越多,给 http dns 的链接压力就更大,所以,不管怎么扩容都恢复不了。
评论