写点什么

模块 5 设计微博系统中”微博评论“的高性能高可用计算架构

用户头像
Chris Cheng
关注
发布于: 2021 年 06 月 06 日

业务量估算

  • 可用写评论

考虑微博是一个写少看多的系统,假设每个人每天平均发两条微博评论,则微博评论量大概每天为 2.5 亿 2 =5 亿条。大部分人写评论集中在早上 8 点~9 点,中午 12 点到 13 点,和晚上 8 点到 10 点。这几个时段占总量的 60%。则平均发评论的的 TPS 5 亿 * 60%/ (4 *3600) = 20K/s

  • 读评论

评论一般集中在热名帖子。假设每个评论平均被浏览 100 次。看评论和发评论的时间端基本重合。

QPS = 5 亿 * 60% * 100/ (4 *3600) = 2000k/s


构架分析

  • 写评论

业务特征分析

写评论是写操作, 不需要缓存,但需要负载均衡

  • 构架分析

用户量过亿, 需要用多级负载均衡(F5->Nginx->Gateway)

  • 构架设计

  • 负载均衡算法

轮询,随机多可以

  • 业务服务器估算

写评论涉及几个步骤,内容审核,写入存储,写入缓存。按一个服务可以处理 500 请求计算,处理 TPS :20k/S 需要 40 台服务器,加上预留量 10%, 44 台服务器即可。


  • 读评论

业务特征分析

读评论是典型读操作,一般评论很少修改,适合用缓存架构。业务量巨大,需要用负载均衡

  • 构架分析

用户量过亿, 需要用多级负载均衡(F5->Nginx->Gateway)

请求量达到 2M/s ,需要用多级缓存架构,特别是 CDN

业务量

  • 构架设计

  • 负载均衡算法

轮询,随机多可以

  • 业务服务器估算

假设 CDN 能处理 90%的流量,业务服务器要处理 10% 的流量 2000K/S * 10% = 200k/s

读评论逻辑比较简单。按一个服务可以处理 1000 请求计算,处理 TPS :200k/S 需要 200 台服务器,加上预留量 10% 220 台服务器即可。

总体构架:

由于写评论和读评论请求量级差异太大,建议拆分独立的服务

热点事件

业务量估算

热点事件 指大 V , 突发事件,明星爆料或者官宣。但热点事件发生时候会有针对某几个微博的大量的评论发布和浏览。

  • 写评论

会有大量的用户围观某一两个微博,假设有 10% 的人会发布评论

  • 读评论

很难评估。取决于事件的影响力和范围。

构架分析

热点事件无法预估只能预防。

  • 写评论

短时间写评论集中在某几个微博上。但 因为对评论实时性要求不高。可以用写缓冲。甚至可以限流,可用漏桶算法

  • 读评论

短时间读评论集中在某几个微博上。为了解决缓存热点问题,可以用多副本缓存。因为构架已使用本地缓存,热点问题不一定很明显



用户头像

Chris Cheng

关注

还未添加个人签名 2018.04.07 加入

还未添加个人简介

评论

发布
暂无评论
模块5 设计微博系统中”微博评论“的高性能高可用计算架构