功能要求
用户需求:
- 用户可以收发文章
- 用户有粉丝和关注的人
- Feeds会根据关注的人同步更新 (新的文章或删除旧文章)
- 有新的文章会有notification
数据假设
- 1 亿/天 活跃用户
- 5亿/天 文章, 平均一篇文章会传给20个人,100 亿/天的文章转发
- 有大V 超过千万的粉丝数 ( 没有大V e.g 朋友圈会怎样)
- Feeds 以时间排序 (抖音推荐算法排序会怎么样)
存储
基本需求:
- 可靠存储用户发送的消息,不能丢失。
- 可读取某个人发布过的所有消息
- 数据永久保存
NoSQL:水平扩展能力强,
- 消息存储库:存储发布者的数据,永久保存。
- 用户元数据库:用户信息
- 存储关系表:用户关系表,永久保存
消息存储库
Key column | partition key | 主键 | |
---|---|---|---|
name | user_id | message_id | content |
解释 | 文章的发布者 | 文章ID | 内容 |
用户元数据库
Key column | 主键 |
---|