Home / ?????? ??????? ??? / 龍笛特色 / 即時(shí)通訊的架構(gòu)選擇

即時(shí)通訊的架構(gòu)選擇

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

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

首先簡(jiǎn)述本文認(rèn)為的IM通信的最基礎(chǔ)的兩大功能:

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

(2)確保接收者能夠即時(shí)準(zhǔn)確地接收到信息

接下來(lái)就是IM系統(tǒng)的實(shí)現(xiàn)方式:

整體的設(shè)計(jì)思路:

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

(2)去中心化寫(xiě)擴(kuò)散的模式

兩種模式區(qū)別實(shí)際上相當(dāng)明顯:

(1)中心化讀擴(kuò)散的模式,很難實(shí)現(xiàn)異地多活的場(chǎng)景,對(duì)于遠(yuǎn)離中心的“域外”支持力有限,超長(zhǎng)距離通信非常不方便

(2)去中心化寫(xiě)擴(kuò)散的模式,難以支持多端同步,寫(xiě)擴(kuò)散造成的存儲(chǔ)成本使得服務(wù)端存儲(chǔ)變得不太現(xiàn)實(shí),跨區(qū)域獲取數(shù)據(jù)場(chǎng)景處理非常麻煩

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

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

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

(1)當(dāng)用戶(hù)在線(xiàn)的時(shí)候,服務(wù)端主動(dòng)推送消息,也就是推的模式(push)

(2)當(dāng)用戶(hù)不在線(xiàn)的時(shí)候,服務(wù)器暫存消息,用戶(hù)斷線(xiàn)重連之后,客戶(hù)端主動(dòng)拉的模式(pull)

當(dāng)前的主流IM軟件當(dāng)前都是使用的push/pull相結(jié)合的消息獲取方式,某信和某Q和不能例外,其中要說(shuō)差別,我只能說(shuō)某信的用戶(hù)在線(xiàn)時(shí)間明顯高于某Q,也就是一個(gè)用推的場(chǎng)景更多一些,而另一個(gè)使用拉的場(chǎng)景更多。

再進(jìn)一步闡述之前,這里要引入一個(gè)長(zhǎng)連接的概念,而上文所提到的用戶(hù)在線(xiàn)狀態(tài)更多的指的并不是用戶(hù)是否連接上了網(wǎng)絡(luò),也不是用戶(hù)是否打開(kāi)了特定的軟件,而是指的用戶(hù)是否連接了特定的長(zhǎng)鏈接服務(wù)。

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

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

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

(1)建立的長(zhǎng)連接通道,方便了服務(wù)端主動(dòng)向下推送消息

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

IM的客戶(hù)端和長(zhǎng)連接之間的互動(dòng)流程包括:

(1)客戶(hù)端登陸,嘗試連接長(zhǎng)連接服務(wù)端

(2)長(zhǎng)連接服務(wù)響應(yīng),雙方連接成功

(3)客戶(hù)端注冊(cè)客戶(hù)端相關(guān)信息(ip,版本,用戶(hù)信息等等),長(zhǎng)連接校驗(yàn)信息,成功后客戶(hù)端在長(zhǎng)連接中注冊(cè)完畢

(4)客戶(hù)端主動(dòng)獲取斷線(xiàn)過(guò)程中丟失的信息

(5)長(zhǎng)連接處理多個(gè)客戶(hù)端之間的通信信息

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

在线午夜| 黄色一级带免费收看| 在线看免费视频| 无码三在线| 内射少妇视频| 日本xxx一区| 亚洲国产精品无码久久一线| 欧美少妇夜夜夜| 精品久久国产视频| 欧美三级在线不卡| 美女av一区| 色呦呦欧美影院777| 欧美性色欧美a在线图片| 国产喷水XXXX| 中文字幕不卡高清视频在线| 久久久久2022| 无码一区精品| 久久天堂一区二区三区| 成人日韩精品一区二区| 黄网站色视频免费观看| 亚洲母乳无码| 刚察县| 久久久久久久久久妇女| 皇色在线你懂的| 99re8这里有精品热视频免费| 国产21自产区| 亚洲免费三级电影| 亚洲综合AV系列| 亚洲 小说 图片| 3p视频在线观看播放| 日本黄色大片免费| 北岛玲久久久| 国内精品久久久久久蜜芽| 亚洲精品啪啪网| 亚洲欧美国产国产综合一区| 乳首 在线| 西城区| 国产无遮挡美女91| 少妇无套色欲| A级毛片免费| 全国最大免费黄色网址|