架构实战营模块 5 - 微博评论高性能高可用计算架构
用户行为建模和计算性能估算
用户量
2020.9 月月活 5.11 亿,日活 2.24 亿(参考《微博 2020 用户发展报告》)。
关键行为
发评论
看评论
性能估算
数据参考:已知微博每天的发送量约为 2.5 亿条,由于绝大部分微博用户看微博的对象是大 V 和明星,因此我们假设 平均一条微博观看人数有 100 次,则观看微博的次数为: 2.5 亿 * 100 = 250 亿。
发评论
由于大多数用户的习惯只是看微博,很少进行评论,因此我们假设看微博 10 人次当中有 1 次评论,则评论微博的条数为:250 亿 / 10 = 25 亿条。
大部分的人发微博集中在早上 8:00~9:00 点,中午 12:00~13:00,晚上 20:00~22:00,假设这几个时间段发微博总量占比为 60%,则这 4 个小时的平均发微博的 TPS 计算如下:
25 亿 * 60% / (4 * 3600) ≈ 100 K/s。
看评论
大多数用户在看微博时,不一定去看评论,因此我们假设,每条评论的观看次数为 20 次,则观看评论的总次数为:
25 亿 * 20 = 500 亿。
大部分人看评论的时间段和发评论的时间段基本重合,因此看评论的平均 QPS 计算如下:
500 亿 * 60% / (4*3600) = 2000K/s。
高性能计算架构设计
发评论
业务特性分析
发评论也是一个典型的写操作,因此不能用缓存,可以用负载均衡。
架构分析
用户量过亿,应该要用多级负载均衡架构,覆盖 DNS -> F5 -> Nginx -> 网关的多级负载均衡。
架构设计
负载均衡算法选择
发评论时,虽然是要发到某条确定的微博的下面,但是,具体的业务逻辑判断还是在后台的业务服务器当中进行。
发评论的时候同时还要依赖登录状态,登录状态一般都是保存在分布式缓存中的。
因此发评论的时候,将请求发送给任意服务器都可以,这里选择“轮询”或者“随机”算法。
业务服务器数量估算
发评论和发微博的处理流程相似,同样涉及几个关键的处理: 内容审核(依赖审核系统)、数据写入存储(依赖存储系统)、数据写入缓存(依赖缓存系统),因此按照一个服务每秒处理 500 来估算,完成 100K/s 的 TPS,需要 200 台服务器,加上一定的预留量,250 台服务器可以保证性能。
发评论多级负载均衡架构
看评论
业务特性分析
看评论是一个典型的读场景,评论发了后不能修改,因此非常适合用缓存架构,同时由于请求量很大,负载均衡架构也需要。
架构分析
1. 用户量过亿,应该要用多级负载均衡架构;
2. 看评论的请求量达到 500 亿
当点击每条微博下面的评论时,首先会有 5 条首页热门评论的展示,考虑到首页评论展示的实时性,以及这 5 条评论会随微博一起展示,所以同微博一样,考虑用 CDN 进行缓存,定期刷新(例如 1 小时刷新一次)。
其它评论无需用 CDN,用分布式缓存来缓存评论列表页,因为翻页看后面的评论的人其实不多。
架构设计
负载均衡算法选择
同看微博一样,游客也可以直接看评论,因此将请求发送给任意服务器都可以,这里选择“轮询”或者“随机”算法。
业务服务器数量估算
每条微博下面的 5 条评论,要缓存在 CDN 上,则缓存在 CDN 上的总评论数为:2.5 亿 * 5 = 12.5 亿条,总评论数为 25 亿条,故 CDN 承载了 50%的流量,则看评论请求的 QPS 为:2000K/s * 50% = 1000K/s, 假设单台业务服务器处理能力是 800/s,则机器数量为 1250 台,按照 20%的预留量,最终机器数量为 1500 台。
看评论的架构设计
多级负载均衡架构
多级缓存架构
整体架构设计
分析
多级负载均衡整体架构
多级缓存整体架构
高可用计算架构设计
热点事件: 指某个大 V 或者明星爆料或者官宣,虽然只有一两条微博,但引起大量用户在短时间内访问,给系统造成很大压力。
热点事件用户行为建模和性能估算
发评论
造成热点事件的微博下面会有海量评论,具体数量很难预估。
看评论
和发评论一样很难预估,也和事件的影响力和影响范围有关。
热点事件业务特性分析
发评论
发评论是一个典型的写操作,因此不能用缓存,可以用负载均衡。
看评论
看评论主要集中在首页热门评论,或者前几页评论上面。
热点事件高可用架构分析
核心架构设计思想: 既然无法预估,那就做好预防!
架构设计分析
发评论
热点事件微博可能会有海量评论,所以可以考虑用“漏桶算法”的变种“写缓冲”来应对海量评论,这样可以尽量少丢弃请求,保证较高的可用性,因为重新写评论会给用户带来较差的用户体验。
看评论
热点事件也会存在热点评论,所以同微博一样,也存在缓存热点问题,可以考虑“多副本缓存”,由于原有的缓存架构已经采用了“应用内的缓存”,总体上来看,缓存热点问题其实不一定很突出。
热点时间高可用架构示意图
版权声明: 本文为 InfoQ 作者【源】的原创文章。
原文链接:【http://xie.infoq.cn/article/f808459a46f8c3a4c3289cbe4】。文章转载请联系作者。
评论