×
新網 > 建站推廣 > 正文

網站即時通訊功能的架構是什么

  • 作者:新網
  • 來源:新網
  • 瀏覽:100
  • 2018-03-06 16:43:25

網站即時通訊功能的架構是什么?很多SEO人員為了提高用戶體驗,會給網站加通訊功能,看過我以前文章內容的人對于網站即時通訊功能的實現(xiàn)方法肯定是都知道了,這里為大家介紹一下網站即時通訊功能的架構。

網站即時通訊功能的架構是什么?很多SEO人員為了提高用戶體驗,會給網站加通訊功能,看過我以前文章內容的人對于網站即時通訊功能的實現(xiàn)方法肯定是都知道了,這里為大家介紹一下網站即時通訊功能的架構。
 

22c6000402bba5ff1692.gif

即時通訊系統(tǒng)架構
簡單地介紹一下大型商業(yè)應用的IM系統(tǒng)的架構。設計這種架構比較重要的一點是低耦合,把整個系統(tǒng)設計成多個相互分離的子系統(tǒng)。我把整個系統(tǒng)分成下面幾個部分:(1)狀態(tài)消息系統(tǒng) (2)好友系統(tǒng) (3)P2P系統(tǒng) (4)其他擴展業(yè)務系統(tǒng)
先看狀態(tài)消息系統(tǒng)
(1)connd
client接入服務器,可以支持UDP,也可以支持TCP,一般建議優(yōu)先選擇TCP。connd可以布置多臺,client接入時,可以用簡單的DNS輪詢的方式實現(xiàn)負載均衡。connd功能是維護連接和轉發(fā)消息包。
(2)pconnd
proxy connd, 代理接入服務器,是connd的擴展,除了有connd的功能外,支持服務器的接入,比如web server。
(3)msgd
消息處理服務器,主要功能是用戶狀態(tài)管理,消息轉發(fā)(包括合理性驗證)以及離線消息保存。
說一個用戶登錄成功后,對所有好友的狀態(tài)通知過程。我設計的系統(tǒng)中,把用戶狀態(tài)也簡單看成類似文本聊天消息。下面用戶U的上線過程,他有好友F1, F2。
(1) connd收到U上線消息,將消息發(fā)給U所在的msgd。
(2) msgd獲取U的好友,F(xiàn)1, F2;如果F1, F2和U不在同一個msgd上,msgd將消息通過connd轉給F1, F2所在的msgd。
(3) 最終的msgd把上線通知通過connd發(fā)給F1, F2。
msgd的U是通過什么方式獲取最新的好友呢? 這個問題我要著重描述一下。
用戶的好友數(shù)據(jù)都在另外一個子系統(tǒng)中:好友子系統(tǒng)。 msgd通過TCP的方式(為什么用TCP呢?)主動從好友系統(tǒng)獲取。同時,msgd也緩存一份好友數(shù)據(jù)。msgd獲取用戶好友時,如果cache是最新的,直接從cache取,否則要從好友子系統(tǒng)那邊取。現(xiàn)在重點問題出來了,如何確定用戶的好友是最新的?這類問題我們要根據(jù)不同的業(yè)務不同的特點靈活采用不同的方法。請看一種高效的處理方式:
(1) 好友子系統(tǒng)為每個用戶的好友算個hash值(可以用MD5)。
(2) client獲取好友時,同時也拿到這個hash值;發(fā)和好友相關的消息時,把hash值帶給msgd。
(3) msgd第一次從好友子系統(tǒng)獲取某個用戶好友時,也獲取這個hash值;像要轉發(fā)狀態(tài)消息,獲取好友時,把client帶過來的hash1和自身的hash2比較一下。。。
像IM這種業(yè)務特點是,對好友數(shù)據(jù)的寫很少,讀很多,相對于讀的消耗,寫基本可以忽略的。用上面的方法,基本上每次兩者的hash值是相等的,直接從cache拿好友數(shù)據(jù)。這種處理方法也可以引入到其他應用業(yè)務中。建議不要每次都粗暴地跨進程獲取類似好友數(shù)據(jù)。
網站即時通訊功能的架構是什么?以上就是對網站即時通訊功能的架構的相關描述了,這些你都學會了嗎?
 

免責聲明:本文內容由互聯(lián)網用戶自發(fā)貢獻自行上傳,本網站不擁有所有權,也不承認相關法律責任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內容,請發(fā)送郵件至:operations@xinnet.com進行舉報,并提供相關證據(jù),一經查實,本站將立刻刪除涉嫌侵權內容。

免費咨詢獲取折扣

Loading