Bootstrap

模块五 - 微博评论系统高性能高可用设计

用户量

2020.9 月月活 5.11 亿,日活 2.24 亿(参考《微博 2020 用户发展报告》)

业务场景

  • 假设平均每天每人发1条微博,则每天微博发送量约为2.5亿,且大部微博发送时间集中在早上8点到9点,中午12点到1点,晚上8点到10点,假设这几个小时微博发送量占比60%;

  • 由于大部分微博用户都是围观大V和明星,则假设每条微博观看人数为100次,大部分人看微博的时间和发微博时间基本重合;

  • 关键行为包括看评论及发评论;

性能预估

看评论:假设有60%的用户在看微博的时候,查看了评论,且每条被查看的微博平均包括30条评论,则看评论的平均QPS为:

2.5亿*100*60%/(4*3600)*60%*30≈1800W/s

发评论:假设在看微博的时候,有10%的用户平均发布了一条评论,则发评论的TPS为:

2.5亿*100*10%/(4*3600)≈17W/s

架构分析

由上面性能预估结果可知,微博评论这个场景属于读多写少,用户发送的评论实时性要求并不高,则可考虑拆分评论查看和发送评论两个服务,读写分离,针对性设计以优化性能,可采用以下设计:

评论查看

评论发送

架构设计

多级缓存架构

多级负载均衡

服务器预估

评论查看

假设经过多级缓存处理后,剩下10%左右的查看请求达到业务服务器,由于查看的业务处理相对简单,则按照每台服务器支持1000读请求/s,则可考虑设置1800W *10% /1000 =1800台,考虑一定冗余,可设置2500台;

评论发送

按照每台服务器可支持800请求/s,可设置17w/800≈220台,增加一定的冗余,则可设置350台即可。