第11章Timeline Feed服务——11.4 推模式与用户收件箱

第11章Timeline Feed服务——11.4 推模式与用户收件箱
John Yaml11.4 推模式与用户收件箱
另一种实现Timeline Feed服务的方式是推模式。与拉模式相反,在推模式下,每个用户都有一个“收件箱”,当某用户成功发布了内容时,系统会将该内容推送到其每个粉丝用户的收件箱中;粉丝用户在获取Feed流时,直接从收件箱中读取内容即可,如图11-2所示。
在推模式下,用户获取Feed流的性能比在拉模式下好,系统不需要获取用户的关注列表,也不需要遍历拉取每个关注者的内容列表。但是推模式也有如下一些核心缺点。
- 存储压力大:在推模式下,要求每个用户都有收件箱,这势必要为收件箱引入存储系统,用户越多,收件箱占用的存储资源就越多。比如某用户有100万个粉丝,该用户发布了一条内容后,在这100万个粉丝的收件箱中都要存储这条内容,这里消耗了大量的存储空间。
- 写扩散:某用户发布了一条内容后,需要将此内容推送到100万个粉丝的收件箱中,也就是系统内部会产生100万个写请求,这里产生了粉丝数倍数的写请求放大,如此巨量的写请求可能会击垮收件箱所依赖的数据库。