架构模块 5 作业
设计微博系统中“微博评论”的高性能高可用计算架构
1. 计算性能预估(不需要考虑存储性能)
1.1 用户量预估
2020.9 月月活 5.11 亿,日活 2.24 亿(参考《微博 2020 用户发展报告》)
1.2 用户行为建模
假设平均每天每人发 1 条微博
每条微博平均有 50 条评论
大部分的人发微博集中在早上 8:00~9:00 点,中午 12:00~13:00,晚上 20:00~22:00
这几个时间段发微博总量占 比为 60%
1.3 性能需求计算
2.5 亿 * 50 * 60% / (4 * 3600) ≈ 5 万/s
2. 非热点事件时的高性能计算架构,需要考虑是否要拆分独立的服务
2.1 业务特性分析
写操作
可以用负载均衡
由于时效性不必太强,可以用写缓存
2.2 架构分析
用户量过亿,应该要用多级负载均衡架构,覆盖 DNS->F5->Nginx->网关的多级负载均衡
写评论时,可以先发到消息队列,再异步写入到最终存储
2.3 架构设计
2.3.1 负载均衡算法选择
写评论的时候依赖登录状态,登录状态一般都是保存在分布式缓存中的,因此写评论的时候,将请求发送给任意服务器都可以, 这里选择“轮询”或者“随机”算法
2.3.2 业务服务器数量估算
由于有消息队列,按照一个服务每秒处理 1000 来估算,完成 50K/s 的 TPS,需要 50 台服务器
2.3.3 是否要拆分独立的服务
如果是大公司,大概率会独立出来
如果是初创公司,和发微博服务合并
2.3.4 架构图
TODO
3. 热点事件时的高可用计算架构
自动扩容
进行发评论限流
评论