陌陌Feed讀後總結
參考:
http://mp.weixin.qq.com/s?__biz=MzA5Nzc4OTA1Mw==&mid=2659597071&idx=1&sn=cd8df9f8c52dfbfb54e65adbe19fae27&scene=23&srcid=0509WNSUJdcT5Z2HpGaegBaD#rd
下面是Feed系統的整體架構圖:
資源層主要使用Redis、MongoDB、HBase等NoSQL型別資料庫。
儲存層是內部RPC服務,根據業務場景和儲存特性,組合各種資料庫資源。
業務層呼叫儲存層讀寫資料,實現產品邏輯,直接面向使用者使用。
陌陌初期採用Mongodb,主要看重無模式的特性,儲存JSON方便.
Redis 採用Mod取餘Hash的方式.
通過節點資料複製,快速的翻倍擴容,省去了快取預熱的過程。
原文這部分沒有細說.
假如原來有三個redis例項,並且各自帶了Slave.
通過 id mod 3 取餘,判斷存放位置.
擴容的時候,僅僅需要把slave Readonly去掉,
前端通過 id mod 6 取餘,判斷存放位置即可.然後斷掉Redis 主從複製.
因為 id mod 6 == 0 的情況 必定 id mod 3 == 0
比如 10 mod 3 = 1 ,現在改為 10 mod 6 = 4 正好 落在原來的備機上.
待完成之後,需要清理每個例項上一半冗餘的資料.不過一般設定了過期時間,可以等待他自然過期.
陌陌朋友圈開始用的是推的方式,後來改成拉取.
我倒是覺得推拉結合,似乎更好.
比如
使用者9066357的朋友有新訊息.
使用時間戳作為Score,內容就是資料庫中記錄的ID
127.0.0.1:6379> zadd 9066357 20160510112200 101
(integer) 1
127.0.0.1:6379> zadd 9066357 20160510112201 102
(integer) 1
127.0.0.1:6379> zadd 9066357 20160510112203 103
(integer) 1
127.0.0.1:6379> zadd 9066357 20160510112204 104
(integer) 1
127.0.0.1:6379> zadd 9066357 20160510112205 105
(integer) 1
127.0.0.1:6379> zadd 9066357 20160510112206 106
(integer) 1
127.0.0.1:6379> zadd 9066357 20160510112207 107
(integer) 1
127.0.0.1:6379> zadd 9066357 20160510112208 108
(integer) 1
127.0.0.1:6379> zadd 9066357 20160510112209 109
(integer) 1
127.0.0.1:6379> zadd 9066357 20160510112210 110
(integer) 1
使用者登入,獲取最近的5個訊息
127.0.0.1:6379> ZRANGE 9066357 -5 -1
1) "106"
2) "107"
3) "108"
4) "109"
5) "110"
然後除了最近的幾個資料,全部刪除.
127.0.0.1:6379> ZREMRANGEBYRANK 9066357 0 -8
(integer) 3
127.0.0.1:6379> ZRANGE 9066357 0 -1
1) "104"
2) "105"
3) "106"
4) "107"
5) "108"
6) "109"
7) "110"
保留指定個數的內容.避免記憶體佔用過大.
如果Redis快取Miss,則查詢資料庫.
遍歷我的好友,找到最近發表過Feed的人
遍歷最近發表過Feed的人,得到id和time
合併到我的timeline
http://mp.weixin.qq.com/s?__biz=MzA5Nzc4OTA1Mw==&mid=2659597071&idx=1&sn=cd8df9f8c52dfbfb54e65adbe19fae27&scene=23&srcid=0509WNSUJdcT5Z2HpGaegBaD#rd
下面是Feed系統的整體架構圖:
資源層主要使用Redis、MongoDB、HBase等NoSQL型別資料庫。
儲存層是內部RPC服務,根據業務場景和儲存特性,組合各種資料庫資源。
業務層呼叫儲存層讀寫資料,實現產品邏輯,直接面向使用者使用。
陌陌初期採用Mongodb,主要看重無模式的特性,儲存JSON方便.
Redis 採用Mod取餘Hash的方式.
通過節點資料複製,快速的翻倍擴容,省去了快取預熱的過程。
原文這部分沒有細說.
假如原來有三個redis例項,並且各自帶了Slave.
通過 id mod 3 取餘,判斷存放位置.
擴容的時候,僅僅需要把slave Readonly去掉,
前端通過 id mod 6 取餘,判斷存放位置即可.然後斷掉Redis 主從複製.
因為 id mod 6 == 0 的情況 必定 id mod 3 == 0
比如 10 mod 3 = 1 ,現在改為 10 mod 6 = 4 正好 落在原來的備機上.
待完成之後,需要清理每個例項上一半冗餘的資料.不過一般設定了過期時間,可以等待他自然過期.
陌陌朋友圈開始用的是推的方式,後來改成拉取.
我倒是覺得推拉結合,似乎更好.
比如
使用者9066357的朋友有新訊息.
使用時間戳作為Score,內容就是資料庫中記錄的ID
127.0.0.1:6379> zadd 9066357 20160510112200 101
(integer) 1
127.0.0.1:6379> zadd 9066357 20160510112201 102
(integer) 1
127.0.0.1:6379> zadd 9066357 20160510112203 103
(integer) 1
127.0.0.1:6379> zadd 9066357 20160510112204 104
(integer) 1
127.0.0.1:6379> zadd 9066357 20160510112205 105
(integer) 1
127.0.0.1:6379> zadd 9066357 20160510112206 106
(integer) 1
127.0.0.1:6379> zadd 9066357 20160510112207 107
(integer) 1
127.0.0.1:6379> zadd 9066357 20160510112208 108
(integer) 1
127.0.0.1:6379> zadd 9066357 20160510112209 109
(integer) 1
127.0.0.1:6379> zadd 9066357 20160510112210 110
(integer) 1
使用者登入,獲取最近的5個訊息
127.0.0.1:6379> ZRANGE 9066357 -5 -1
1) "106"
2) "107"
3) "108"
4) "109"
5) "110"
然後除了最近的幾個資料,全部刪除.
127.0.0.1:6379> ZREMRANGEBYRANK 9066357 0 -8
(integer) 3
127.0.0.1:6379> ZRANGE 9066357 0 -1
1) "104"
2) "105"
3) "106"
4) "107"
5) "108"
6) "109"
7) "110"
保留指定個數的內容.避免記憶體佔用過大.
如果Redis快取Miss,則查詢資料庫.
遍歷我的好友,找到最近發表過Feed的人
遍歷最近發表過Feed的人,得到id和time
合併到我的timeline
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-2096963/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 陌陌:2020網民閱讀報告
- 陌陌,你變了
- 染陌的2018年度總結
- 直播江湖:陌陌向左,YY向右
- 陌陌財報圖解:2017年Q4陌陌淨利潤達1.1億美元圖解
- 陌陌:2018主播職業報告
- 陌陌:2019主播職業報告
- 陌陌財報圖解:2018年Q2陌陌淨利潤1.178億美元 同比增長94%圖解
- 連續盈利22個季度後,陌陌直播還能再扛大旗嗎
- 陌陌財報圖解:2018年Q1陌陌淨營收達27.6億元 同比增長64%圖解營收
- 陌陌還會重回遊戲懷抱嗎?遊戲
- 陌陌:2020年網民閱讀報告 56.2%網民疫情期間讀書量增加
- iOS曝ZipperDown漏洞 快手、陌陌等均受影響!iOS
- 陌陌:2020陌生人社交行為報告
- 陌陌登入裝置異常怎麼解決
- 【元宵節快樂】Apache ShardingSphere 企業行|走進陌陌Apache
- 從業4年網際網路寒潮下我的面試總結(美團\陌陌\百度\阿里\京東)面試阿里
- 2019年營收超170億,陌陌增長的秘密何在營收
- 解決陌陌註冊新號就提示裝置異常
- 陌陌:2019全年淨營收170.151億元 同比增長27%營收
- 【面經】陌陌-2017年8月28日,散招實習生
- 陌陌:2Q20營收38.68億元 同比減少6.8%營收
- 陌陌:1Q20淨利潤7610萬美元 同比增長86.3%
- 陌陌:2020年全年營收150.242億元 淨利潤28.962億元營收
- 運營級仿微信仿陌陌仿快手app原始碼出售轉讓APP原始碼
- 工信部約談陌陌:要求對ZAO App資料安全問題自查整改APP
- 陌陌:1Q21淨營收34.706億元 淨利潤6.337億元營收
- 陌陌:3Q20淨利潤6.538億元 持續23個季度盈利
- 全球陌生人社交增量空間待挖掘,陌陌借新故事來重塑估值
- 陌陌釋出第二季度財報:移動遊戲營收為1160萬元遊戲營收
- 陌陌:2Q19營收41.5億元,淨利潤12.4億元,月活躍使用者1.1億營收
- MySQL 讀後總結MySql
- MySQL 讀後總結 (三)MySql
- 今日總結 讀後感.
- 陌陌:4Q19財報電話會議實錄 核心業務流量和營收從3月份開始復甦營收
- 染陌足跡——13屆D2前端技術論壇前端
- 《大話資料結構》讀後總結(一)資料結構
- 《大話資料結構》讀後總結(三)資料結構
- 《大話資料結構》讀後總結(八)資料結構