Feed 流推拉設(shè)計(jì)模式

1. 什么是 Feed 流

Feed 是將用戶主動訂閱的若干消息源組合在一起形成內(nèi)容聚合器,幫助用戶持續(xù)地獲取最新的訂閱源內(nèi)容。 Feed 流即持續(xù)更新并呈現(xiàn)給用戶內(nèi)容的信息流。在生活中 Feed 流也是很常見的,比如微信朋友圈、微博等,就是 Feed 流的經(jīng)典實(shí)現(xiàn)。

2. Feed 流的經(jīng)典推拉模式

在了解推拉設(shè)計(jì)模式之前,先看幾個概念:

  • 發(fā)件箱:用于存儲發(fā)出消息的用戶消息的容器
  • 收件箱:用于存儲粉絲訂閱的用戶發(fā)送的消息的容器

有了這兩個概念之后,就引出了拉架構(gòu)推架構(gòu),其中拉架構(gòu)對應(yīng)發(fā)件箱,推架構(gòu)對應(yīng)收件箱。

2.1 推模式/拉模式的交互流程

假設(shè)此時有A用戶和B用戶,其中B是A的粉絲,當(dāng)A發(fā)送一條消息時會把消息投遞到自己的發(fā)件箱和B的收件箱,那么這時候這條消息就產(chǎn)生了兩條Feed。

當(dāng)B用戶登錄成功后查看自己的Feed流時(查看收件箱)可以有兩套技術(shù)選型,分別是拉模式推模式。

2.1.1 拉模式(讀擴(kuò)散)

拉模式是指B用戶要查詢關(guān)注的用戶的列表,再查詢關(guān)注的用戶的發(fā)件箱,從而獲取關(guān)注用戶發(fā)送給B用戶的信息。

優(yōu)點(diǎn):

  1. 關(guān)注的用戶少的時候,可以快速找到發(fā)送給自己的消息

缺點(diǎn):

  1. 如果關(guān)注的用戶很多,那么查詢的消耗是比較大的

2.1.2 推模式(寫擴(kuò)散)

推模式是指A用戶在發(fā)送消息時,會先查詢自己的粉絲列表,再向所有關(guān)注自己的粉絲的收件箱投遞一條信息。

優(yōu)點(diǎn):

  1. 粉絲數(shù)量較少的時候,可以更快的將發(fā)送的消息推送到粉絲的收件箱,粉絲直接查看自己的收件箱即可
  2. 可以異步化的處理消息寫入(實(shí)時性要求不高時)

缺點(diǎn):

  1. 當(dāng)粉絲數(shù)量較多時,用戶發(fā)送一條消息會產(chǎn)生大量的寫入粉絲收件箱的操作,性能較差
  2. 非活躍用戶較多時,不會產(chǎn)生實(shí)際意義的讀取操作,浪費(fèi)磁盤空間

2.2 推拉混合模式

由于只使用推模式或拉模式都有不可避免的一些問題,這里就可以使用推拉混合模式來盡可能的避免在一種模式下的缺點(diǎn)。

其中推拉混合模式的方法是:

  1. 大V不推,只寫入發(fā)件箱,對大V用戶采用拉模式
  2. 非大V用戶采用推模式,讓用戶直接讀取收件箱

此時粉絲在獲取Feed時需要將大V發(fā)件箱的信息和自己收件箱的信息進(jìn)行merge后再展示。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容