微信朋友圈設計架構


 

微信朋友圈的數據有四個核心的表:

①  發布表,發布表記錄了來自所有用戶的所有feed,比如一個用戶發布了幾張圖片,沒張圖片的URL,圖片在CDN里的URL,它有哪些元屬性,誰可以看,誰不可以看等等。

②  相冊,相冊是每個用戶獨立的,記錄了該用戶所發布的所有內容。

③ 評論, 評論就是針對某個具體發布的朋友評論和點贊操作。

④ 時間線,所謂“刷朋友圈”,就是刷時間線,就是一個用戶所有的朋友的發布內容。

 

 

微信朋友圈的工作流程概述

 

比如有兩個用戶A和B, A和B各自都有各自的相冊(可以理解為A和B各自的朋友圈內容),可能在同一台服務器上,也可能在不同服務器上。現在A上傳了一張圖片到自己的朋友圈。上傳圖片不經過微信服務器,而是直接上傳到最近的CDN節點去,所以非常快。圖片上傳到CDN后,小王的微信客戶端會通知,這里有一個新的發布(比如叫K2),這個發布的圖片CDN URL是什么,誰能看這張圖片等等此類的元數據。來把這些數據寫入發布表中。

 

在發布表寫完之后,會把K2的發布索引到A的相冊表中,所以相冊表記錄得就是每個內容索引指針,相冊表寫好后會觸發一個批處理動作,這個動作就是去跟A的每個好友說,A有一個新的發布,請把這個發布插入到每個好友的時間線里去。

 

現在B上朋友圈了,而B是A的一個好友,B拉自己的時間線的時候,時間線會獲得K2的新發布通知,然后B的微信客戶端就會取根據K2的元數據去獲取發布表中的一些信息比如:CDN URL,把圖片拉到本地。

 

在這個過程中,發布是很重要的,因為一方面要寫一個自己的數據副本,並寫入自己的時間線,還要把這個副本的指針插到所有好友的時間線里面去,如果一個用戶有幾百個好友的話,這個過程會比較慢一些。這是一個單數據副本寫擴散的過程。但是相對應的,讀取就很簡單。每個用戶只需要讀取自己的時間線這一個動作就行,不需要去遍歷所有的好友相冊表。這個是否有一定得數據冗余??

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM