0
点赞
收藏
分享

微信扫一扫

feed流的读扩散与写扩散

早安地球 2022-03-25 阅读 47
java

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

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

写扩散(push):

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

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

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

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

                即可。

读扩散(pull):

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

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

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

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

举报

相关推荐

0 条评论