极客架构营 2 期模块 5 作业
【设计微博系统中“微博评论”的高性能高可用计算架构】
估算
-发微博评论
微博用户量为月活 5.11 亿,日活 2.24 亿。假设平均每天每人发 1 条微博(只考虑文字微博),则微博每天的发送量约为 2.5 亿条。我们再假设平均一条微博平均有 10 个评论,则每日微博的评论为:2.5 亿* 10 = 25 亿。大部分的人发微博集中在早上 8:00~9:00 点,中午 12:00~13:00,晚上 20:00~22:00,假设这几个时间段发微博总量占比为
60%,则这 4 个小时的平均发微博评论的 TPS 计算如下:
25 亿* 60% / (4 * 3600) ≈ 100 K/s。
-看微博评论
大部分人看微博也一起看评论,因此这里的 QPS 和看微博的相同:1000 K/s
非热点计算架构设计
-发微博评论
发微博评论是一个写操作,因此不能用缓存,可以用负载均衡。
用户量过亿,应该要用多级负载均衡架构。
发评论设计类似发微博,但是由于评论和微博连在一起,存储数据的时候应有相关微博信息。发评论不和发微博共享服务因为逻辑和 TPS 都有区别。
另外发评论可以用写缓冲,假设写缓冲可以削 90%的 TPS,按照一个服务每秒处理 500 来估算,完成 10%*100=10K/s 的 TPS,需要 20-25 台服务器差不多了。
-看微博评论
这里可以和看微博共享服务。 使用缓存架构和负载均衡架构。
热点计算架构设计
无法预估,那就做好预防!
-看微博评论
很明显,热点事件微博存在缓存热点问题,可以考虑“多副本缓存”,由于原有的缓存架构已经采用了“应用内的缓存,总体上来看,缓存热点问题其实不一定很突出。
-发微博评论
可以用写缓冲限流,MQ 长度限制等。
评论