1. 程式人生 > >類似人人網 "新鮮事"(好友動態、SNS)架構:

類似人人網 "新鮮事"(好友動態、SNS)架構:

推的模式和拉的模式。兩個模式區別在於什麼地方?推的模式意思就是說當一個事件產生的時候,我把這個事件產生時間點做N次拷貝發給他想要的人。拉是另外一種方法,當一個使用者登陸頁面的時候,首頁要顯示所有好友關注人的新鮮事。這個時候用拉的模式實現。


整個架構基於memcached + mysql,圖中分了ABC三個區域。所有的訊息儲存在mysql中,無論推送給多少人,只儲存一份。另外有一個索引表,用來記錄推送關係,推送給1000個人,就增加1000條記錄,也就是圖中的A。當發生查詢時,從索引表中根據使用者編號進行一次簡單查詢(基於使用者編號為索引和條件的select),拿到索引結果後,進入B,從memcached

中讀取實際資訊。如果不存在或者不全,進入C,根據索引資訊讀取網友實際發表或者轉載的內容,用模板生成訊息並存儲到memcached中,然後返回來。