Home / ?????? ????? ??????????? ???? / 龍笛特色 / 即時通訊的架構選擇

即時通訊的架構選擇

既然大家都需要一個用戶之間/用戶與客服之間的簡單即時通信(IM)能力,那么如何獲得一個這樣的能力成為不少成長型公司的巨大的問題。如果將這樣的能力接入其他公司的成熟系統(tǒng),當然市場上的產品完全能夠滿足要求,但是無可避免的需要付出部分代價:IM服務的提供方將會完全掌握你們之間的通信信息,這個無論對方如何承諾安全性和專業(yè)性都是無法避免的(后續(xù)有機會專門講述一下安全性問題)。

本篇的核心就在介紹IM通信系統(tǒng)最核心、最簡單的功能和架構。

首先簡述本文認為的IM通信的最基礎的兩大功能:

(1)確保發(fā)送端能夠完成信息發(fā)送

(2)確保接收者能夠即時準確地接收到信息

接下來就是IM系統(tǒng)的實現方式:

整體的設計思路:

(1)中心化讀擴散的模式

(2)去中心化寫擴散的模式

兩種模式區(qū)別實際上相當明顯:

(1)中心化讀擴散的模式,很難實現異地多活的場景,對于遠離中心的“域外”支持力有限,超長距離通信非常不方便

(2)去中心化寫擴散的模式,難以支持多端同步,寫擴散造成的存儲成本使得服務端存儲變得不太現實,跨區(qū)域獲取數據場景處理非常麻煩

了解了這些你可能就明白了某些主要用作IM的軟件一些奇奇怪怪的規(guī)則,比如某些軟件為什么只能單端登錄。

消息發(fā)送成功之后并不是萬事大吉了,IM系統(tǒng)仍然需要確保消息觸達到用戶。

仍然拿上述的某信/某Q為例,簡述IM系統(tǒng)推送信息的兩種模式,主要的方式是:

(1)當用戶在線的時候,服務端主動推送消息,也就是推的模式(push)

(2)當用戶不在線的時候,服務器暫存消息,用戶斷線重連之后,客戶端主動拉的模式(pull)

當前的主流IM軟件當前都是使用的push/pull相結合的消息獲取方式,某信和某Q和不能例外,其中要說差別,我只能說某信的用戶在線時間明顯高于某Q,也就是一個用推的場景更多一些,而另一個使用拉的場景更多。

再進一步闡述之前,這里要引入一個長連接的概念,而上文所提到的用戶在線狀態(tài)更多的指的并不是用戶是否連接上了網絡,也不是用戶是否打開了特定的軟件,而是指的用戶是否連接了特定的長鏈接服務。

先上定義:長連接,指在一個連接上可以連續(xù)發(fā)送多個數據包,在連接保持期間,如果沒有數據包發(fā)送,需要雙方發(fā)鏈路檢測包。

長連接多用于操作頻繁,點對點的通訊,而且連接數不能太多情況。其好處是顯而易見的:節(jié)約了多次TCP的握手分手的一系列動作,減少頻繁的通信會造成socket錯誤。

對于IM系統(tǒng)而言長連接有一些特殊的意義和作用:

(1)建立的長連接通道,方便了服務端主動向下推送消息

(2)建立長連接的過程中可以方便的獲得設備的信息和設備的連接狀態(tài)

IM的客戶端和長連接之間的互動流程包括:

(1)客戶端登陸,嘗試連接長連接服務端

(2)長連接服務響應,雙方連接成功

(3)客戶端注冊客戶端相關信息(ip,版本,用戶信息等等),長連接校驗信息,成功后客戶端在長連接中注冊完畢

(4)客戶端主動獲取斷線過程中丟失的信息

(5)長連接處理多個客戶端之間的通信信息

至此,消息發(fā)送/接收這兩個IM最核心的流程,以及客戶端、長連接、服務端這三個IM最重要的三個部分之間關系全部介紹完畢,這個IM的大框架也就基本介紹完成,后續(xù)的細節(jié)就不在本篇中贅述了。

开心网色播| 永久看一二三四线| 中国熟女一二三区| 欧美一级在线观看久| 在线成人AV免费播放| 国产精品青青青在线观看| 婷婷姑娘六月天| 国产精品民宅偷窥盗摄| 91精品国产自产| 国产一区二区三区欧美| 国产精品宾馆自拍| 国产精品JIZZ在线观看无码 | 99久久精品国产交换| 天堂在线污| 国产 精品 日韩| 丝袜美腿av白浆| 亚洲欧洲国产视频| 成年人在线麻烦观看| 亚洲色大成| 久亚洲r| AV免费天堂| 最新AV日韩无码| 精品人妻一区二区三区| 国产在线专区黄片| 亚洲色大成网站WWW尤物| 一级好看的黄色网址| 亚洲AV无码乱码在线观看性色 | 色五月之亚洲综合网| 在找视频日韩精品| 免费高清av| 大鸡巴操屁股视频| 99xxxxx| 人人尻人人爽| 90人妻精品| 国产精品免费看久久久| 日韩高清一区蜜臀| 欧美专区第一页| 使劲操我在线看| 国产盗摄XXXX视频XXXX| 国产手机看片日韩版| 马边|