架构实战营:模块五作业
题目
设计微博系统中”微博评论“的高性能高可用计算架构。
【作业要求】基于模块 5 第 6 课的微博实战案例,分析“微博评论”这个核心场景的业务特性,然后设计其高性能高可用计算架构,包括但不限于如下内容:
1.计算性能预估(不需要考虑存储性能);
2.非热点事件时的高性能计算架构,需要考虑是否要拆分独立的服务;
3.热点事件时的高可用计算架构。
1.用户量预估
微博用户日活 2.24 亿。
2.用户行为建模
【发微博】
假设每天每人发 1 条微博。则每天微博数量约为 2.24 亿条
【评论微博】
假设 1 条微博观看人数有 100 次,100 个人中有 10 个人发表评论的人对微博进行评论。且评论集中在 8:00~9:00 点,中午 12:00~13:00,晚上 20:00~22:00,
3.性能需求计算
假设这几个时间段微博评论总量占比为 60%,则这 4 个小时的平均发微博的 TPS 计算如下:
2.24 亿*60% *10 / (4 *3600) ≈ 90k/s
4.高性能架构设计
【业务特性分析】
微博评论是写操作,不用缓存,用负载均衡。
【架构分析】
用户量过亿、,使用多级负载均衡,覆盖 DNS->F5->Nginx ->网关。
【架构设计】
(1) 负载均衡算法
发微博的时候依赖登录状态,登录状态一般都是保存在分布式缓存中的,因此评论微博的时候,将请求发送给任意服务器都可以。评论服务“按服务器性能分配”,服务器列表除了评论服务器,也可以包含一部分发微博服务器,两边的性能的阈值有所不同。
(2)业务服务器数量预估
发微博涉及几个关键的处理:内容审核(依赖审核系统)、数据写入存储(依赖存储系统)、数据写入缓存(依赖缓存系统),因此按照一个服务每秒处理 500 来估算,完成 90K/s 的 TPS,需要 187 台服务器,加上 20%预留量,230 台服务器差不多。
【架构图】
5.热点时间的高可用架构
使用消息队列对评论限流
评论