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

多级负载均衡架构

多级缓存架构

热点事件时高可用计算架构
热点事件微博【评论微博】可以采用限流,但需要保证评论尽量不丢失。

热点事件微博【看微博评论】存在缓存热点问题,可以采用
