持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第15天,点击查看活动详情
新鲜事系统是啥?
各种各样的新鲜事系统,如 Facebook,Twitter,微博,微信朋友圈,以微博为例:
- 时间线,就是打开一个用户的首页,看到的以时间为序列展示的,该用户的微博、转发等等
- 新鲜事,你打开微博,看到的你所关注的用户、明星、大V等发布的内容,以时间为序列展示在你的首页的内容。
4S分析法解构问题
场景 - Scenario
分析该系统需要设计哪些功能,得设计多流弊?
最简单的,就是将这些功能列举出来:
- 发布/转发新鲜事;
- 时间线/新鲜事;
- 用户关注/取消关注;
- 登录/注册;
- 搜索新鲜事;
- 用户 Profile 的展示与编辑;
- 上传图像/视频
- ……
加粗的是我认为在一个新鲜事系统里最重要部分。在系统设计面试中,要快速选择出功能列表中哪些功能是该系统中最核心功能。
挑选出核心功能,后面一步就是要分析、推断、预测出系统中的用户规模与访问量。如下是 Twitter 月活跃用户统计图表:
Twitter 的 MAU 差不多在 300M,MAU(月活) 与 DAU(日活)的数量根据经验值约是两倍关系,可推出 DAU 为 150M 。根据 150M 的 DAU,假设用户每天平均请求的次数为 60 次,可计算出平均每秒并发访问量约为:150M * 60 / 86400 = 100 K/s。而通常每日访问的峰值大约在平均每秒并发访问量的 2~9 倍,因此,访问峰值的合理估计数值在 200 K/s ~ 900 K/s 之间。
大约可推断出如下与系统规模相关数字:
- DAU:150M
- MAU:300M
- 平均每秒并发访问量:300K
- 读 QPS:300K(读一定比写多)
- 写 QPS:5K
当然,以上数字全部都是估计与推断的结果,重要的不是这个推断出来的结果,有时这个推断过程更加重要,言之有理能够给出合理解释即可。系统的性能瓶颈由系统中各个部分的最短板决定。