阿里开发者招聘节 | 面试题09

  • 时间:
  • 浏览:1
  • 来源:大发5分排列3_大发5分排列3官方

选取选取还是选取

比较三根2019年鹿晗的比较热门的微博

关于鹿晗和关晓彤事件的相关信息

2017年鹿晗关晓彤事件,新浪从阿里云服务器临时增加10000台机器抗住了压力

最终结果那三根微博为 转发416万次,评论1000万,点赞21000万

鹿晗的最新粉丝数:100000万 关晓彤210000万

亲戚亲戚你们你们 不考虑新浪后台的过滤,1000万的转发,116万的评论,4116万的点赞

资料二:能查到对鹿晗微博的分析

 上面环节

如短时间几滴 的RPC调用,技术服务,列表长度,消息队列等几滴 环节,另有一个个尽我所能分析

亲戚亲戚你们你们 先假设微博把5亿用户的前3页内容给缓存起来是那先 数量级

考虑到微博一般就有图文,还动不动以后长微博,也假设你有7五个好友,每个好友三天发三根微博,以三根1000k计算

5亿751000k=371000T

实际上cache 内存百T级,相差另有一个数量级,杂办 办?更暂且还有更多的相关的评论等

2017 鹿晗关晓彤 46 1000 21000

2019 鹿晗 1000 16 45

2019 范冰冰 20 25 103

微博宕机分析

首先,定性的讲,微博崩溃肯定是可能短时间,访问过于密集导致 的。但可能居于问题数据,无法比较平时和高峰时,具体的数据差异,但从有限的资料可知

2017年服务宕机,微博找阿里云临时调配10000台服务器,才最终扛过压力可知,你这个差异是很大的

关于微博

微博的整体负载量级

微博平时的量级:日活1.6亿,平台接口日 百亿级别 cache 内存百T级 cache 访问万亿级

核心记录千亿级 单个核心数据 cache qps 百万级

又你这个资料:

资料一:截止目前17点10分,鹿晗关晓彤 的第三根评论的子评论,第二页依旧无法刷新。 显示该评论已被删除,事实上这条评论并未被删除。一般热点数据,首屏就有会缓存的,以后可能把每三根评论都缓存,代价就太高,你这个当访问第二页没人 被缓存的评论时,会穿透访问数据库,这时可能服务限流或降级导致 ,没人 获取到第二页的评论,这之前 就展示兜底数据评论被删除。

微博的整体架构

还都还里能看得人,你这个微博的覆盖人次,有8亿人,你这个肯定所含你这个非活跃用户,可能收到热门事件影响,几滴 非活跃用户冷启动加载数据,数据库确实 扛不住

整个微博的转发,评论,点赞等,会涉及到几滴 的上面环节

三根正常的微博发出来,会居于那先

拈连tweet,这里有了解到架构是:

Tweet 第一版

中心化的tweets,每此人 插入就有那里,读取的之前 读取此人 的和此人 follow的,随着规模扩大,无法完成

以下分析,纯属我此人 查阅资料派发后的猜测评估

 数据库和缓存

按理说新浪的微博肯定会有良好的缓存设计,但新浪涉及到的数据有你这个

1000w*75

假设MQ使用kafka,10w/s的防止性能,假设消费者性能跟得上的清况 下,约5分钟。可能考虑到消费者更新此人 时间线的消耗,但实际每个用户更新此人 的时间线,可能先更新缓存,再异步落库,应该还都还里能解耦,使得缓存提供服务

参考之前 新浪的数据量,所有的数据完全缓存肯定是可能的,继续分析

由新浪微博崩溃想开的

前言:微博又崩了,这是每当演艺界 有那先 热点新闻时,常常总出 的清况 ,从鹿晗关晓彤在一同,到最近范冰冰李晨,新浪微博作为大厂,为那先 你这个间题没人 多年还屡屡总出 ?

亲戚亲戚你们你们 先假设新浪微博和tweet技术方案一致进行分析,另有一个明星发微博,确实 以后在中心时间线加入了三根数据,在良好缓存机制清况 下,应该你这个儿间题都没人 。

说明没人 多评论击穿到数据库,确实 是服务降级了,可能后续还都还里能通过更细粒度的热门微博评论控制提升服务质量

微博用户目前在5亿左右,日活1.6亿,但这1.6亿在全天的登录,会有高峰,但不至于很大差别。

亲戚亲戚你们你们 之前 提到,大帕累托图的普通用户是单独的时间线维护,可能把所有的用户所有时间线完全缓存

Feed多次缓存架构

用户分析

看上去数量级上,相差以后没人 来越多,为那先 你这个导致 新浪崩溃,你这个反而没间题呢?

Tweet 第二版

为每另有一个用户维护另有一个时间线,每另有俩此人 发了tweet,后会推送到他的followee上,那先 用户都更新此人 的时间线,插进缓存

有那先 间题?

另有一个大明星更新清况 ,前要给几千万的用户作推送,以后tweet的目标是5s内完成,你这个不太现实

Tweet最终版

为大帕累托图人采用维护单独时间线的法律辦法 ,平均另有俩此人 7五个followee,但为大V等人,采用单独的服务器,采用方案1的中心时间线, 每另有一个用户读取tweets的之前 , merge此人 的时间线和大V的中心时间线,最终返回