feed流的读扩散与写扩散

inbox:收件箱,所有关注的人发送消息到收件箱,每个follwer都会收到一份

outbox:发件箱,所有发送的消息,只发送一份

写扩散(push):

该方式为每个用户维护一个订阅列表,记录该用户订阅的消息索引(一般为消息id、类型、发表时间等一些元数据)。每当用户发布消息是,都会更新其follower的订阅列表

优点:读很轻,初始化时仅需要读取自己的inbox即可

缺点:写很重,每发布一个消息,会导致大量的写操作

注:一般来说,用户发布消息,并不会更新所有followers的订阅列表,仅更新在线followers

即可。

读扩散(pull):

该方式为每个用户维护一个发送列表,记录该用户所有发表过的消息索引。

优点:写很轻,节省空间,用户每发布一条 消息,仅需要更新自己的outbox。

缺点:读操作很重,计算量大。假设你收听了1K用户,则初始化时,需要从1K个用户

的outbox拉取消息,然后计算获得最新的n条消息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值