拿到一个系统设计题,需要确定以下事项:

  1. 确定需求
  2. 确定用户量
  3. 计算出存储和网络资源
  4. 特殊 Feature 的设计

确定需求

Twitter 中的一些常见操作有:

  1. 发推文
  2. 查看自己 Timeline
  3. follow 用户
  4. like 、dislike
  5. 查看某个用户的 Timeline

确定用户量

这一步很重要,用户量决定了采用什么样的设计。假设 DAU 有一千万

计算出存储和网络资源

特殊 Feature 的设计

用户查看 Timeline 的时候,考虑用户量以及体验,我们添加缓存来加快用户的 Timeline 的访问。

混合模式
大V:Fan out on write(推)
针对大V用户,每发一条推文,我们就主动将这条推文,使用定时任务将它推到每个关注者Timeline 的缓存中。这样当用户获取 Timeline 时,可以快速的获取到。

普通:Fan in on wirite(拉)
针对普通用户,只要在获取 Timeline 时,merge 所有推文返回即可。

Hot data 热数据
对于热数据,

系统层面的优化

  1. 可靠性。分库分表,负载均衡,数据缓存