「架构实战营」模块五《如何设计业务高性能高可用计算架构》作业
设计微博系统中“微博评论”的高性能高可用计算架构。
【作业要求】
基于模块 5 第 6 课的微博实战案例,分析“微博评论”这个核心场景的业务特性,然后设计其高性能高可用计算架构,包括但不限于如下内容:
1. 计算性能预估(不需要考虑存储性能);
2. 非热点事件时的高性能计算架构,需要考虑是否要拆分独立的服务;
3. 热点事件时的高可用计算架构。
【提示】
1. 分析方法对照“看微博”和“发微博”的案例。
计算性能估算
2020.9 月月活 5.11 亿,日活 2.24 亿(参考《微博 2020 用户发展报告》)。
评论微博
假设平均每天每人发 1 条微博(只考虑文字微博),平均一条微博评论 10 次,则评论微博的次数为:2.5 亿 * 10 = 25 亿。
大部分人评论微博时间集中在早上 8:00-9:00 点,中午 12:00-13:00 点,晚上 20:00-22:00 点,假设这几个时间段评论微博总量占比为 60%。因此评论微博的平均 TPS 计算如下:25 亿 * 60% / (4*3600) ≈ 100k/s。
看微博评论
假设平均一条微博评论查看人数有 10 次,则看微博评论的次数为:25 亿 * 10 = 250 亿。
大部分人看微博评论的时间段和评论微博的时间段基本重合,因此看微博评论的平均 QPS 计算如下:
250 亿 * 60% / (4*3600) ≈ 1000k/s。
非热点事件时高性能计算架构
业务特性分析
【评论微博】是一个典型的写场景,可以用负载均衡。
【看微博评论】是一个典型的读场景,由于评论微博发了后不能修改(只能删除),因此非常适合用缓存架构,同时由于请求量很大,负载均衡架构也需要。
架构分析
用户量过亿,【评论微博】和【看微博评论】都要用多级负载均衡架构。覆盖 DNS -> F5 -> Nginx -> 网关的四级负载均衡架构。
【看微博评论】需要用多级缓存架构。覆盖 App 缓存/浏览器缓存 -> CDN -> Web 容器缓存 -> 进程内缓存 -> 分布式缓存的五级缓存架构。
架构设计
负载均衡算法选择
【评论微博】依赖登录状态,登录状态一般都是保存在分布式缓存中的,因此将请求发送给任意服务器都可以,这里选择“轮询”或者“随机”算法。
【看微博评论】不依赖登陆状态(游客可直接查看),因此将请求发送给任意服务器都可以,这里选择“轮询”或者“随机”算法。
服务器数量预估
【评论微博】涉及几个关键的处理:内容审核(依赖审核系统)、数据写入存储(依赖存储系统)、数据写入缓存(依赖缓存系统)。因此按照一个服务每秒处理 800 来估算,完成 100k/s 的 TPS,需要 130 台服务器(包含 5 台预留量)。
【看微博评论】业务服务器数量估算假设 CDN 能够承载 90% 的用户流量,那么剩下 10% 的请求进入系统,则请求 QPS 为 1000k/s * 10% = 100k/s。假设单台业务服务器处理能力是 1000/s,需要 105 台服务器(包含 5 台预留量)。
高性能整体架构设计
多级负载均衡架构
多级缓存架构
热点事件时高可用计算架构
热点事件微博【评论微博】可以采用限流,但需要保证评论尽量不丢失。采用漏桶算法进行限流,桶的大小可以设置无限大(保证微博评论写请求不丢失),达到写缓冲的效果。
热点事件微博【看微博评论】存在缓存热点问题,可以采用多副本缓存。
版权声明: 本文为 InfoQ 作者【DaiChen】的原创文章。
原文链接:【http://xie.infoq.cn/article/4a53452c17f245165f224c1bb】。文章转载请联系作者。
评论