Timeline引擎

TimeLine引擎

一種基於範圍(如關注賬號、關係圈,附近的人等)推送,範圍裏面的人發佈各種內容,內容按照不同的組織形式展現的流。如將用戶關注的賬號的動態流或內容流整合後,按照時間等條件排序,顯示成流狀的形式。如:微淘,微博,朋友圈、訂閱號等類似場景。




基本概念

feed:一條內容,如一條微博、朋友圈。

這裏把Feed看做 Email,每個用戶都有一個收件箱,每個公衆號(或商家)都有一個發件箱。

Inbox收件箱:用戶收到的內容箱子

Outbox發件箱:公衆號(或商家)已發佈的內容箱子




常見的Timeline模式

1、拉模式

發佈:存到公衆號(或商家)自己的Outbox(輕)

查看:所有關注公衆號(或商家)的Outbox(重)


缺點:

只適用於天生基於穩定的賬號關係(公衆號-粉絲用戶),無法支持如個性化廣告定向推送的功能,比如,公衆號就希望給某些用戶推送Feed,而不管用戶和公衆號之間的關係。




2、推模式

發佈:存到所有關注自己的用戶的Inbox(重)

查看:直接訪問用戶自己的Inbox(輕)


缺點:

拉模式以公衆號outbox爲維度存儲,一條Feed只存一份索引信息;推模式以用戶inbox爲維度存儲,一條Feed要存許多份索引信息,存儲空間成倍增長。




3、推拉模式結合

queue推送隊列:每個用戶有一個接收公衆號(或商家)推送的隊列queue,公衆號(或商家)定向推送的內容就存儲在該queue中。

inbox投遞郵箱(跟最上面說的inbox不一樣):每個用戶有一個記錄已經投遞內容的郵箱inbox,內容包括拉的timeline和推的queue兩部分,主要用於記錄已經推送給客戶端的數據,不會再被推送,且歷史順序穩定。


 

timeline系統參數

5-10ms
100多臺機器
10萬級別商家發件箱,存在熱點數據,單機全量熱點數據緩存。
多級緩存:本地堆外緩存(ohc、kv-v爲list、98%命中率、lru)> tair(mdb) > DB(分庫分表)
插入時失效緩存,查詢時更新。
數據結構以索引爲單位,可排序和過濾。
先排序(list自帶sort)、過濾(ANTR表達式)、返回數據

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章