【系统设计】如何设计 Twitter 时间线和搜索?

如何设计 Twitter 时间线和搜索?

1.业务场景

业务场景如下:

  • 用户发布推文
    • 服务将推文推送给关注者,发送推送通知和电子邮件
  • 用户查看用户时间线(来自用户的活动)
  • 用户查看主页时间线(用户关注的人的活动)
  • 用户搜索关键字
  • 服务具有高可用性

其他场景:

  • 服务将推文推送到 Twitter Firehose 和其他流
  • 服务根据用户的可见性设置删除推文
    • 如果用户没有关注被回复的人,则隐藏回复
    • 尊重“隐藏转发”设置
  • 分析

2.业务要求

假设如下:

  • 流量分布不均
  • 发布推文应该很快
    • 向所有关注者发送推文应该很快,除非你有数百万关注者
  • 1亿活跃用户
  • 每天 5 亿条推文或每月 150 亿条推文
    • 每条推文平均扇出 10 次交付
    • 每天通过扇出发送 50 亿条推文
    • 每月通过扇出发送 1500 亿条推文
  • 每月 2500 亿次读取请求
  • 每月 100 亿次搜索

时间线

  • 查看时间线应该很快
  • Twitter 阅读量大于写入量
    • 优化推文的快速阅读
  • 摄取推文写得很重

搜索

  • 搜索应该很快
  • 搜索是重读

简单的对业务要求进行计算,转换成业务指标

  • 每条推文的大小:
    • tweet_id- 8 个字节
    • user_id- 32 字节
    • text- 140 字节
    • media- 平均 10 KB
    • 总计:~10 KB
  • 每月 150 TB 的新推文内容
    • 每条推文 10 KB * 每天 5 亿条推文 * 每月 30 天
    • 3 年内 5.4 PB 的新推文内容
  • 每秒 10 万个读取请求
    • 每月 2500 亿次读取请求 *(每秒 400 次请求 / 每月 10 亿次请求)
  • 每秒 6,000 条推文
    • 每月
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值