鹿晗关晓彤公开恋情,是如何把新浪微博的服务器搞垮的?(知乎问题)

链接

鹿晗关晓彤公开恋情,是如何把新浪微博的服务器搞垮的?(知乎问题)_第1张图片
盗来的图.jpg

分析1:Server的锅
A:微博的架构并不是简单的分布式server+DB。数据库不可能临时弹性伸缩,能弹性伸缩的无非就是HTTP Server,各中间层服务,缓存和消息队列,所以最后加一千台服务器暂时顶住了。大概是微博自动扩容算法没写好,或者没敢全交给算法来做,否则程序出bug要白支付很多钱,多半是这个量级的扩容需要运维手工来确认。
B:数据库的吞吐量远大于web server,分布式大系统 bin log都有自动清理机制。微博扩容算法写的太好了,如果流量短时间内暴涨的太厉害,稍作Delay几百毫秒,灾情就会过去;如果反应非常灵敏,流量上来就马上扩容增机,很快服务器集群池就会耗尽,等到最后一台服务器被100%征用以后,任何一个用户的回复就成了压倒骆驼的最后一根稻草,一个服务器垮了,流量迅速压向其他服务器,引发多米诺骨牌效应,服务器们指数级迅速宕下。
C:如果人数过多,点击过高,服务器承受不了,就会响应超时,刷新,评论什么的没反应。

鹿晗关晓彤公开恋情,是如何把新浪微博的服务器搞垮的?(知乎问题)_第2张图片
微博团队说,临时加了一千台服务器,也就用了几个小时。每台按最小配置100元计算,这1000台也是10万的费用。.jpg

分析2:数据库的锅
A:数据库垮掉了。事发当时需要写入数据库的请求太多,以及大部分写落在同一条微博上,而且某些写操作还要出发相应的其他写行为。如果缓存做的好,还是可以满足核心数据读请求的。如果数据库压力过大时,可以对于部分写请求异步化,或者暂时考虑抛弃部分请求换取稳定性。
B:建议对系统,缓存,数据库进行重构,必要时可以牺牲部分流量来支持热搜词,保证整个平台的稳定性。
C:微博用的肯定是NoSQL的存储,换句话说是某种Document DB,每条微博,微博回复,微博转发都是一个document,而且所有的数据都引用同一个document对象。因此瓶颈应该出在document DB或者缓存服务上面,I/O扛不住了,所以才挂。

你可能感兴趣的:(鹿晗关晓彤公开恋情,是如何把新浪微博的服务器搞垮的?(知乎问题))