什么是 news feed,news feed 是一个在你的个人主页中不断更新的故事列表, news feed 包括你在 Facebook 上关注的人、页面和小组发布的状态更新信息, 照片、视频、链接、应用活动和点赞。
news feed API
POST /v1/me/feed
进行发布帖子,GET /v1/me/feed 用来获取 news feed
帖子服务,将帖子持久化到数据库和缓存中。
广播服务,把新内容推送到好友的news feed中,news feed数据存储在缓存中以便快速获取。
通知服务,告知好友有新内容,并发送推送通知。
news feed在幕后如何构建,高层级设计
集中讨论 Web服务 和 广播服务
Web 服务器与客户端通信外,进行 验证用户身份 和 限流,阻止发布垃圾信息和滥用内容很重要。
广播服务,广播是把一个帖子发给所有好友的过程,有两种模型:
写广播,在写入的时候就预先计算好用户发布的帖子被哪些好友订阅,用户在发新帖子立刻被传递 到好友的news feed缓存中。
读广播,直到读取的时候才生成news feed,这是一种按需模型,当用户加载主页 时再拉取最近的动态。
利用混合方案,快速获取news feed很重要,对大部分用户使用推送模型,对于名人或有很多好友 和粉丝的用户,让粉丝按需拉取新内容来避免系统过载。
下面展示了获取 news feed 的详细流程,多媒体内容 图片、视频 等存在CDN中 以便快速获取。
缓存对news feed系统很重要,把缓存分为5层