互聯(lián)網(wǎng)時(shí)代下,“即時(shí)通訊”(簡(jiǎn)稱IM)已經(jīng)是系統(tǒng)平臺(tái)最簡(jiǎn)單的社交功能,用戶更個(gè)性化的需求及大量通訊用戶的涌入催生出更復(fù)雜的IM技術(shù)架構(gòu)體系,IM區(qū)域人工與智能的相結(jié)合,讓人與人之間的距離。企業(yè)互聯(lián)網(wǎng)下,只有將技術(shù)與業(yè)務(wù)結(jié)合在一起,才可以使“即時(shí)通訊”服務(wù)在企業(yè)中發(fā)揮的作用最大化。用友UAP平臺(tái)中提供的IM功能已經(jīng)將企業(yè)業(yè)務(wù)中所出現(xiàn)的常用信息處理場(chǎng)景進(jìn)行了人工與智能方式的窮舉,并提煉出適用于企業(yè)集成的技術(shù)解決方案。
主流IM設(shè)計(jì)按平臺(tái)可以劃分為桌面IM、移動(dòng)IM和WEB IM。從協(xié)議和連接實(shí)現(xiàn)角度劃分可分為基于長(zhǎng)連接的IM和基于短連接的IM。這兩種實(shí)現(xiàn)方式也衍生出很多適用于不同場(chǎng)景實(shí)現(xiàn)方案,例如:模擬長(zhǎng)連接、特定協(xié)議連接等。桌面IM、移動(dòng)IM實(shí)現(xiàn)方式相對(duì)固定,往往無(wú)法實(shí)現(xiàn)跨平臺(tái)通訊。WEB IM跨平臺(tái)能力強(qiáng)并具有發(fā)展前景,但性能相對(duì)一般。因此,無(wú)論是桌面IM,還是移動(dòng)IM和WEB IM,都存在一定的短板需要解決。
桌面IM和移動(dòng)IM:架構(gòu)設(shè)計(jì)非常靈活,可以基于TCP 或 UDP之上編寫(xiě)自己定義的應(yīng)用層協(xié)議,傳輸與部署效率高,開(kāi)發(fā)者如需構(gòu)建網(wǎng)絡(luò)服務(wù)主要精力應(yīng)放在線程控制、編解碼、鎖與資源、粘包丟包、壓縮與加密、內(nèi)存管理等問(wèn)題上,同時(shí)業(yè)務(wù)上需要支持可插拔機(jī)制,下表為設(shè)計(jì)通訊服務(wù)首要考慮內(nèi)容。
瀏覽器處理能力和終端性能的提升使WEB IM 作為IM獨(dú)立的分支作用日趨重要,碎片化的WEB IM插件可以鍥入到任意WEB平臺(tái)中實(shí)現(xiàn)信息流通。目前主流WEB IM的設(shè)計(jì)包括四種模式:
RIA Socket、WEB Socket、Ajax輪詢、Long Polling & Comet。服務(wù)端常見(jiàn)開(kāi)源框架包括Comet4J、Pushlet、Dwr。
以上IM實(shí)現(xiàn)都受限于特定場(chǎng)景,除了桌面IM、移動(dòng)IM和WEB IM,特定協(xié)議在開(kāi)發(fā)中也起到關(guān)鍵要素。拋開(kāi)TCP、UDP和應(yīng)用層的HTTP協(xié)議,目前主流用于IM協(xié)議的還包括XMPP和MQTT 兩種,基于這兩種協(xié)議實(shí)現(xiàn)的項(xiàng)目均已證明足以穩(wěn)定支撐大量用戶接入并進(jìn)行通訊,下面是對(duì)這兩種協(xié)議流程實(shí)現(xiàn)的示意:
服務(wù)端 <--> XMPP協(xié)議 <--> 客戶端
客戶端 --> 服務(wù)端 --> RSMB隊(duì)列服務(wù)器 --> 客戶端
談了如此多IM的實(shí)現(xiàn)方式,不難發(fā)現(xiàn)各有千秋。目前企業(yè)系統(tǒng)都在向互聯(lián)網(wǎng)化轉(zhuǎn)型,希望將所有和企業(yè)業(yè)務(wù)相關(guān)的信息都收集起來(lái),以發(fā)現(xiàn)更多商機(jī)。那么社交化是不可獲取的一個(gè)部分。
企業(yè)即時(shí)通訊不再是新技術(shù),而我們今天要說(shuō)的是,如何在互聯(lián)網(wǎng)趨勢(shì)下,使企業(yè)即時(shí)通訊與時(shí)俱進(jìn),和企業(yè)不斷變化的業(yè)務(wù)相聯(lián)系,和不斷發(fā)展的新技術(shù)相結(jié)合,讓它發(fā)揮出更大作用。用友UAP計(jì)算平臺(tái),在十幾年時(shí)間中,一直以服務(wù)大型企業(yè)和組織為主,為他們構(gòu)建企業(yè)信息化平臺(tái)。幫10000多家企業(yè)解決了系統(tǒng)集成、數(shù)據(jù)挖掘、移動(dòng)開(kāi)發(fā)、云服務(wù)等問(wèn)題。在企業(yè)互聯(lián)網(wǎng)驅(qū)使下,用友UAP又不斷研究企業(yè)社交,為企業(yè)挖掘社交中的大數(shù)據(jù)。
那么,企業(yè)級(jí)“即時(shí)通訊”應(yīng)具備什么能力?如何滿足企業(yè)通訊的訴求呢?用友UAP通過(guò)研究和實(shí)踐認(rèn)為:首先,作為IM本身,需要融合桌面IM、移動(dòng)IM和WEB IM各自特點(diǎn),技術(shù)實(shí)現(xiàn)上可以認(rèn)為通訊服務(wù)支持不同終端接入,同時(shí)智能適配不同終端的通訊接口;其次,企業(yè)級(jí)IM要具備企業(yè)應(yīng)用的業(yè)務(wù)特性,提供業(yè)務(wù)接口,滿足企業(yè)業(yè)務(wù)流的快速接入;最后,企業(yè)IM要能滿足智能和自身云化,智能包括自然語(yǔ)言處理、語(yǔ)音識(shí)別和圖像分析,云化則要滿足自身可以包裹成SAAS應(yīng)用或BAAS服務(wù)。同時(shí),用友UAP提醒,在具體操作上給出以下幾點(diǎn)建議:
第一,在技術(shù)實(shí)現(xiàn)方案上,要具備一定的通用性,可以通過(guò)使用開(kāi)源體系框架和技術(shù)進(jìn)行快速實(shí)現(xiàn),支持多端適配和自定義協(xié)議。這里可以從客戶端和服務(wù)端兩個(gè)技術(shù)角度去討論,關(guān)注的側(cè)重點(diǎn)也是不同。
第二,客戶端方面,需具備通訊模塊插件化,保障用戶可以通過(guò)不同終端和瀏覽器與其他用戶正常通訊,需要集成桌面IM、移動(dòng)IM和WEB IM的端實(shí)現(xiàn)細(xì)節(jié),而其中協(xié)議可以不同,這個(gè)需要服務(wù)端提供網(wǎng)關(guān)進(jìn)行轉(zhuǎn)義。
第三,在服務(wù)端,重點(diǎn)考慮接入網(wǎng)關(guān)的設(shè)計(jì)和處理高并發(fā)高TPS的場(chǎng)景。接入網(wǎng)關(guān)主要用于適配不同終端的連接方式,滿足數(shù)據(jù)正常傳輸,同時(shí)數(shù)據(jù)即可是字節(jié)流也可是字符流,數(shù)據(jù)格式和協(xié)議可自定義。在處理高并發(fā)高TPS場(chǎng)景時(shí),行業(yè)內(nèi)已經(jīng)給出了非常多的技術(shù)解決方案,通過(guò)框架可以輕易實(shí)現(xiàn)進(jìn)程與線程模型、資源復(fù)用、異步處理等核心問(wèn)題,某些編程語(yǔ)言的出現(xiàn)如:Erlang、GoLang、NodeJS也是開(kāi)發(fā)高性能通訊服務(wù)的一個(gè)備選方案。
第四,集群通訊場(chǎng)景的構(gòu)建是企業(yè)級(jí)IM服務(wù)在規(guī)?;l(fā)展過(guò)程中所不可以避免的。傳統(tǒng)單服務(wù)器的IM需要進(jìn)行較大的改造才可以適應(yīng)集群環(huán)境下的高性能。比如,當(dāng)用戶A連接服務(wù)器A,用戶B連接服務(wù)器B時(shí),用戶A給用戶B發(fā)消息,服務(wù)器A需要知道用戶B在哪一臺(tái)服務(wù)器才可以進(jìn)行通訊,當(dāng)用戶B在服務(wù)器A時(shí)可以進(jìn)行進(jìn)程線程間通訊,若不在則需要訪問(wèn)中心注冊(cè)服務(wù)、調(diào)度服務(wù)或者自行探測(cè)。滿足這樣一個(gè)簡(jiǎn)單的場(chǎng)景,IM服務(wù)也是需要發(fā)生巨大的變化,同時(shí)從架構(gòu)層面上還需增加中間數(shù)據(jù)管理節(jié)點(diǎn)。
用友UAP就以往的項(xiàng)目經(jīng)驗(yàn)發(fā)現(xiàn),企業(yè)級(jí)“即時(shí)通訊”是否接地氣主要取決于業(yè)務(wù)集成的好壞。IM服務(wù)在客戶端需要實(shí)現(xiàn)自定義數(shù)據(jù)擴(kuò)展機(jī)制和數(shù)據(jù)事件機(jī)制,UAP建議,開(kāi)發(fā)者可以基于“信息流”中的關(guān)鍵字將數(shù)據(jù)封裝成功能,并為功能注冊(cè)處理機(jī)制。關(guān)鍵字的提供主要由服務(wù)端提供,模型可以從文字、視頻、音頻和圖片中挖掘抽取。舉一個(gè)恰當(dāng)?shù)膱?chǎng)景,用戶之間進(jìn)行聊天的過(guò)程中,用戶A想讓用戶B處理一張自己的單據(jù),這時(shí)候用戶A的IM客戶端會(huì)自動(dòng)關(guān)聯(lián)本地或遠(yuǎn)程單據(jù)資源使用戶完成單據(jù)處理。通過(guò)數(shù)據(jù)擴(kuò)展和數(shù)據(jù)事件機(jī)制,IM終端將成為了用戶日常主要辦公的平臺(tái)。
企業(yè)互聯(lián)網(wǎng)下,只有將技術(shù)與業(yè)務(wù)看似緊密又不緊密的放在一起,才可以使“即時(shí)通訊”服務(wù)在企業(yè)中發(fā)揮的作用最大化。用友UAP平臺(tái)中提供的IM功能已經(jīng)將企業(yè)業(yè)務(wù)中所出現(xiàn)的常用信息處理場(chǎng)景進(jìn)行了人工與智能方式的窮舉,并提煉出適用于企業(yè)集成的技術(shù)解決方案。