IM系統(tǒng)看似簡單,沒錯,很多老板認為開發(fā)個qq和微信也就是幾萬塊錢的事...,實責是眾多技術(shù)的應用合體,包括網(wǎng)絡編程、移動開發(fā)、后端開發(fā)、高并發(fā)、高可用、高安全等技術(shù)范疇,再加上多端使用不同的編程語言,想要湊齊一個典型的IM產(chǎn)品技術(shù)棧那也不是個容易事。
本系列文章將盡量從理論概念入手,通俗易懂的梳理IM中的基礎技術(shù)概念和熱門技術(shù)點,希望能幫你理清看似一團亂麻的IM知識體系,幫助您了解。
快速了解一個主流IM系統(tǒng)的應用場景、技術(shù)特點和功能組成,快速建立對IM系統(tǒng)的主觀認知。
IM的應用場景
IM其實并不局限于聊天、社交這類“典型”應用中,實際上它已經(jīng)廣泛運用于我們身邊形形色色的軟件中。
聊天、直播、在線客服、物聯(lián)網(wǎng)等所有需要實時互動、高實時性的場景等等,都需要應用到IM技術(shù)。
下面這些場景是我們大家都熟悉的,都用到了IM技術(shù):
1:微信、qq、釘釘?shù)戎髁鱅M應用:這是IM技術(shù)的典型應用場景;
2:微博、知乎等社區(qū)應用:它們利用IM技術(shù)實現(xiàn)了用戶私信等點對點聊天;
3:抖音、快手等直播/短視頻應用:它們利用IM技術(shù)實現(xiàn)了與主播的實時互動;
4:米家等智能家居物聯(lián)網(wǎng)應用:利用IM技術(shù)實現(xiàn)實時控制、遠程監(jiān)控等;
5:滴滴、Uber等共享家通類應用:利用IM技術(shù)實現(xiàn)位置共享;
6:在線教育類應用:利用IM技術(shù)實現(xiàn)在線白板。
IM技術(shù)的特點
IM技術(shù)的特點主要就是以下4點:
1:實時性
對于IM系統(tǒng),“實時”二字是精髓,也是這項技術(shù)存在關鍵意義所在。它保證的是消息的實時觸達。
舉個例子:如果跟你的好友微信或qq聊天,我發(fā)的消息他不能即時收到,或者他發(fā)的信息你也不知道什么時候能收到,這基本上也就沒法聊下去了,干嗎不痛快打個電話呢。
2:可靠性
保證消息的不丟失和不重復,是IM系統(tǒng)的另一個關鍵技術(shù)特點。試想,當你在用qq或微信跟女朋友聊天,好不容易鼓起勇氣向“她”表白,結(jié)果這消息要是丟包了,那肯定得卸載應用了,搞不好砸手機都有可能。當然,好話不說二遍,消息重復也同樣惱人。
3:一致性
對于單聊消息而言,保證同一個設備的時間順序、不同設備的漫游同步,也是相當重要的一環(huán)。
IM系統(tǒng)中的消息交互,就到底就是人跟人在“說話”,前言不搭理后言、或者胡言亂語式的消息展現(xiàn),那不是人瘋了就是程序瘋了,總之就是沒法再聊下去了。
4:安全性
保證數(shù)據(jù)傳輸安全、數(shù)據(jù)存儲安全、消息內(nèi)容安全,也是IM系統(tǒng)必不可少的特性。尤其在私聊場景下,如果不能做到安全性,聊天的體驗跟被人偷窺的感覺是沒有區(qū)別的。
IM的功能組成
1:聯(lián)系人列表
這個很好理解,使用IM系統(tǒng)的第一步,就是要解決“跟誰聊”的問題。從功能表象上來說,聯(lián)系人列表也就是社交關系列表,無非就是個信息列表界面,有什么特殊的地方?
聯(lián)系人列表看似簡單,實際上它是一系列IM系統(tǒng)的社交關系確立動作的結(jié)果體現(xiàn)。
總的來說,聯(lián)系人列表的建立,是一個IM系統(tǒng)聊天關系確立的表現(xiàn),不可或缺。
2:聊天界面
聊天界面看似很平常,實際它就是IM系統(tǒng)客戶端的核心功能所在,所有主要的IM功能都是通過它展現(xiàn)。
它應該具備的能力有:
1:各種聊天功能按鈕:語音留言、圖片、文字、表情、文件、實時電話、實時視頻等;
2:各種聊天消息顯示:各種消息都有不同的UI顯示元素和處理邏輯;
3:流暢的使用體驗:大量不同類型的消息顯示時,不能卡頓;
4:即時顯示聊天消息:網(wǎng)絡線程收到的消息,要馬上在UI上顯示出來;
5:歷史消息的加載:上次聊過的內(nèi)容也得顯示出來吧。
以上只是簡單羅列,這看似簡單的聊天界面,能把上面列表的事情做好,工作量也不小吧。
消息存儲
消息存儲這個功能好理解,聊天的消息如果存儲,下次再聊的時候就不知道之前聊過什么,做不到這一點,這個IM系統(tǒng)的聊天體驗好不起來。
那么,哪些情況下需要進行消息存儲呢:
1:對方不在線時:聊天消息應該存儲,這叫離線消息存儲。
2:對方在線時:聊天消息也要存到本地存儲,這叫消息緩存)。
3:對方在線或不在線時:聊天消息都要存到服務端,用于實現(xiàn)多設備的消息漫游和同步。
IM系統(tǒng)的應用場景已經(jīng)不單單是IM聊天應用這一種形態(tài),它已經(jīng)融入到互聯(lián)網(wǎng)應用的方方面面,必竟誰都想自已的應用具備“實時”交互這種能力,因為體驗太好了。
IM系統(tǒng)典型架構(gòu)無非就是網(wǎng)絡接入層、業(yè)務邏輯層、數(shù)據(jù)存儲層,除開網(wǎng)絡接入層,其它各層其實跟普通的應用系統(tǒng)看起來差別并不是太大。
IM系統(tǒng)的技術(shù)特點來說,就是實時性、可靠性、一致性、安全性,除了實時性對于多數(shù)應用來說并不關心,其它的指標也很好理解。