写点什么

架构实战营模块 5 作业

作者:陌生流云
  • 2022-11-19
    北京
  • 本文字数:1013 字

    阅读完需:约 3 分钟

5 一:作业

设计微博系统中”微博评论“的高性能高可用计算架构。

【作业要求】

基于模块 5 第 6 课的微博实战案例,分析“微博评论”这个核心场景的业务特性,然后设计其

高性能高可用计算架构,包括但不限于如下内容:

1. 计算性能预估(不需要考虑存储性能);

2. 非热点事件时的高性能计算架构,需要考虑是否要拆分独立的服务;

3. 热点事件时的高可用计算架构。

二:微博评论计算性能预估

2020.9 月月活 5.11 亿,日活 2.24 亿(参考《微博 2020 用户发展报告》)。

发评论

【业务特性分析】

根据发微博的用户行为建模和性能优化,发评论和发微博差不多:

假设平均每天每人发 1 条评论,则评论每天的发送量约为 2.5 亿条。

大部分的人发评论集中在早上 8:00~9:00 点,中午 12:00~13:00,晚上 20:00~22:00,假设这几个时间段发评论总量占比为 60%,则这 4 个小时的平均发微博的 TPS 计算如下:

2.5 亿 * 60% / (4 * 3600) ≈ 10 K/s。

【架构分析】

评论是写操作,所以不需要缓存,用户量过亿,需要使用多级负载均衡

【架构设计】

因为写评论业务实现最终一致性就可以,延迟秒级的方案,会走写缓冲到 MQ 处理后续各个操作(审核、排序、统计等等),前端假写的方案。

单机 TPS 轻松 2K,10K 的 TPS,只需要 5 台机器,加上 20%的预留量,增加一台机器,总共 6 台机器

查看评论

【业务特性分析】

由于绝大部分微博用户看评论的对象是大 V 和明星的微博,因此我们假设平均一条微博观看人数有 100 次,评论大多数看第一页的场景,正常适合微博的数据同时请求评论的数据

2.5 亿 * 100 = 250 亿。

大部分人看微博评论的时间段和发评论的时间段基本重合,因此看评论的平均 QPS 计算如下:

250 亿 * 60% / (4*3600) = 1000K/s

【架构分析】

用户量过亿,需要使用多级负载均衡

评论是读操作,并且大多情况命中会命中,因此需要多级缓存架构,特别是 CDN 缓存,进程内缓存

【架构设计】

假设 CDN 能够承载 90%的用户流量,那么剩下 10%的读评论的请求进入系统,则请求 QPS 为 1000K/s * 10% = 100K/s,由于读取评论的处理逻辑比较简单,主要是读缓存系统,并且在写评论异步去计算评论的排序规则,用户的请求都会打到进程内缓存和分布式缓存,因此假设单台业务服务器处理能力是 1000/s,则机器数量为 100 台,按照 20%的预留量,最终机器数量为 120 台

三:非热点事件时的高性能计算架构

多级负载均衡架构


多级缓存架构


四:热点事件时的高可用计算架构

发评论热点高可用

令牌桶(控制速率,防刷) + 写缓冲(令牌桶)

看评论热点高可用

进程内缓存 + 多副本缓存热点数据


用户头像

陌生流云

关注

还未添加个人签名 2018-04-26 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营模块 5 作业_架构实战营_陌生流云_InfoQ写作社区