“微博评论”的高性能高可用计算架构
一、 要求
分析“微博评论”这个核心场景的业务特性,然后设计其高性能高可用计算架构,包括但不限于如下内容:
1. 计算性能预估(不需要考虑存储性能);
2. 非热点事件时的高性能计算架构,需要考虑是否要拆分独立的服务;
3. 热点事件时的高可用计算架构。
二、 计算性能预估
用户量
2022 年 6 月 1 日,微博发布 2022 年一季度财报。截至一季度末,微博月活跃用户达到 5.82 亿,同比净增 5100 万,日活跃用户达到 2.52 亿,同比净增 2200 万。
关键行为
1. 发微博;
2. 看微博;
3. 评论微博
三、发评论
考虑到微博是一个看得多发的少的业务,假设平均每天每人发 1 条微博评论(只考虑文字微博),则微博评论每天的发送量约为 2.5 亿条。
大部分的人发评论集中在早上 8:00~9:00 点,中午 12:00~13:00,晚上 20:00~22:00,假设这几个时间段发微博评论总量占比为 60%,则这 4 个小时的平均发微博评论的 TPS 计算如下:
2.5 亿*60%/(4*60*60)≈10K/s
四、看评论
由于绝大部分微博用户看微博评论的对象是大 V 和明星,因此我们假设平均一条微博评论观看人数有 100 次,则观看微博评论的次数为:
2.5 亿*100=250 亿
看微博评论的 QPS 计算如下:
250 亿*60%/(4*60*60)≈1000K/s
五、架构设计
热点事件指某个大 V 或者明星爆料或者官宣,虽然只有一两条微博,但引起大量用户在短时间内访问,给系统造成很大压力。
评论:为了保证微博系统的正常运行,可以暂时不允许评论
看评论热点事件很难预估,和事件的影响力和影响范围有关,可以考虑“多副本缓存”。
1. 负载均衡算法选择
游客都可以直接看评论,因此将请求发送给任意服务器都可以,这里选择“轮询”或者“随机”算法。
2. 业务服务器数量估算
假设 CDN 能够承载 90%的用户流量,那么剩下 10%的读评论的请求进入系统,则请求 QPS 为 1000K/s * 10% = 100K/s,由于读取评论的处理逻辑比较简单,主要是读缓存系统,因此假设单台业务服务器处理能力是 1000/s,则机器数量为 100 台,按照 20%的预留量,最终机器数量为 120 台。
六、 整本架构图

整体架构设计

多级负载均衡整体架构

多级缓存整体架构

多副本缓存
评论