写点什么

模块五作业

用户头像
Geek_1cdcf6
关注
发布于: 2021 年 06 月 01 日

设计微博系统中的"微博评论"高性能高可用架构。

用户行为建模和性能估算

参考《微博 2020 用户发展报告》,2020 年 9 月月活 5.11 亿,日活 2.24 亿。

假设平均每人每天发 1 条微博,则微博每天发送量约为 2.5 亿。假设平均每人每天评论 3 条微博,则每天评论量约为 7.5 亿。

假设大部分人(60%)发微博及评论微博主要集中在早上 8:00~9:00,中午 12:00~13:00,晚上 20:00~22:00。则这四个小时内平均评论微博的 TPS: 7.5 亿*60%/(4*3600) 约为 30k。

高性能计算架构设计

架构分析

评论微博是一个典型的写操作,主要用负载均衡。用户量过亿,TPS 约为 30k,使用多级负载均衡架构,覆盖 DNS->F5->Nginx->网关。

微博评论还可考虑使用写缓冲。

架构设计

负载均衡算法选择

微博评论所依赖的登录状态一般都是保存在分布式缓存中的,因此采用"轮询"或者"随机"算法,将请求发送给任意服务器。

业务服务器数量估算

微博评论主要依赖几个关键系统: 内容审核,数据写入存储,数据写入缓存。按照每个服务器每秒可处理 500 评论请求来计算,需要 60 台服务器,考虑预留量,预备 70 台服务器。

多级负载均衡架构


任务分配

多机房保证高可用。

任务分解

发微博和评论微博的处理量级相差不大,可以考虑将发微博和评论微博合并入同一服务,提供不同 API 进行处理。


读取微博评论内容则应与看微博处于同一服务,默认情况下只需要读取存储的评论数,当加载具体微博评论被请求,则返回分页 list。加入类似于看微博功能的多级缓存。

热点事件

针对热点事件,评论请求飙升,可以考虑进行一定限流,同时使用"漏桶算法"来尽量平滑流量,加入消息队列进行异步及排队处理。对于服务器集群数量,可以进行弹性扩容。同时,针对特殊时间点,可以利用历史数据进行一定预测。


发布于: 2021 年 06 月 01 日阅读数: 16
用户头像

Geek_1cdcf6

关注

还未添加个人签名 2021.01.18 加入

还未添加个人简介

评论

发布
暂无评论
模块五作业