当前位置:网站首页>为何微博又双叒叕崩溃了?
为何微博又双叒叕崩溃了?
2022-08-03 16:35:00 【InfoQ】
昨晚(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 的链接压力就更大,所以,不管怎么扩容都恢复不了。

边栏推荐
- Which thread pool does Async use?
- C专家编程 第2章 这不是Bug,而是语言特性 2.3 误做之过
- MATLAB | 七夕节快到了,还不给朋友安排上这个咕呱小青蛙?
- [Unity Getting Started Plan] Basic Concepts (6) - Sprite Renderer Sprite Renderer
- EasyExcel实现动态列解析和存表
- error:Illegal instruction (core dumped),离线下载安装这个other版本numpy
- After using Stream for many years, does collect still have these "saucy operations"?
- 自动化部署+整合SSM项目
- MySQL窗口函数 PARTITION BY()函数介绍
- uniapp的webview滑动缩放
猜你喜欢
随机推荐
Kubernetes 笔记 / 入门 / 生产环境 / 容器运行时
设置海思芯片MMZ内存、OS内存详解
【There is no tracking information for the current branch. Please specify which branch you want to 】
leetcode:189. 轮转数组
世界顶级级架构师编写2580页DDD领域驱动设计笔记,属实有牌面
新版本 MaxCompute 的SQL 中支持的 EXTRACT 函数有什么作用?
protobuf 反射使用总结
C专家编程 第3章 分析C语言的声明 3.1 只有编译器才会喜欢的语法
node连接mongoose数据库流程
protobuf 中数据编码规则
ORACLE CLOUD 在国内有数据中心吗?
通俗理解apt-get 和pip的区别是什么
MarkDown常用代码片段和工具
想进阿里?先来搞懂一下分布式事务
生产环境如何删除表呢?只能在SQL脚本里执行 drop table 吗
最强分布式锁工具:Redisson
Yuan xiaolin: Volvo focus on travel security, and put it perfectly
附录A 程序员工作面试的秘密
【系统学习编程-编程入门-全民编程 视频教程】
#夏日挑战赛# HarmonyOS 实现一个绘画板









