網(wǎng)易云信CTO 闕杭寧
當(dāng)前,越來越多的創(chuàng)業(yè)者和傳統(tǒng)企業(yè)都在為爭(zhēng)取乘上時(shí)代大勢(shì)的順風(fēng)車而紛紛發(fā)力和轉(zhuǎn)型,而即時(shí)通訊云及其衍生的各種微服務(wù)已經(jīng)逐漸成為這股浪潮中的剛性需求。也因此,近年在互聯(lián)網(wǎng)科技領(lǐng)域,誕生了一批提供即時(shí)通訊云服務(wù)的專業(yè)平臺(tái)。這種以幫助客戶通過集成客戶端SDK和云端OPEN API,實(shí)現(xiàn)快速接入即時(shí)通訊功能,降低客戶人力、物力成本的業(yè)務(wù)模式,成為了云服務(wù)領(lǐng)域又一個(gè)新藍(lán)海。
即便業(yè)內(nèi)早已對(duì)即時(shí)通訊云服務(wù)的光明前景有所預(yù)見,但剛涉入一年后的網(wǎng)易云信,發(fā)展速度令人側(cè)目。從2015年10月13號(hào)上線至今,網(wǎng)易云信已成功接入10萬+APP開發(fā)者,覆蓋用戶達(dá)到驚人的4億+;在網(wǎng)絡(luò)和區(qū)域上面覆蓋了196個(gè)國(guó)家,567個(gè)地區(qū)。除此之外,還獲得了國(guó)內(nèi)即時(shí)通訊云服務(wù)領(lǐng)域的首個(gè)CSA-STAR和ISO27001認(rèn)證,并已擁有56項(xiàng)認(rèn)證專利。
闕杭寧表示,進(jìn)入移動(dòng)互聯(lián)網(wǎng)時(shí)代的即時(shí)通訊面臨著極其復(fù)雜的環(huán)境因素,譬如移動(dòng)信號(hào)的強(qiáng)弱、連接狀態(tài)的關(guān)注點(diǎn)、移動(dòng)終端的流量及電量的敏感性,還有不同操作系統(tǒng)平臺(tái)甚至不同版本的系統(tǒng)ROM造成的運(yùn)行環(huán)境的復(fù)雜性,等等。
這些外部的錯(cuò)綜復(fù)雜的因素,這即時(shí)通訊研發(fā)提出了挑戰(zhàn),主要表現(xiàn)在:技術(shù)難度大,整體開發(fā)和調(diào)優(yōu)周期較長(zhǎng),即時(shí)通訊研發(fā)的細(xì)節(jié)業(yè)務(wù)較多,對(duì)線上環(huán)境的維護(hù)復(fù)雜度越來越高。而且即時(shí)通訊云服務(wù)不是面向某一個(gè)軟件,或某一個(gè)平臺(tái)提供服務(wù),而是會(huì)有上萬甚至更多的軟件,接入客戶的用戶量的增長(zhǎng)都會(huì)帶來用戶量級(jí)的增長(zhǎng),而且用戶分布及其手機(jī)環(huán)境更是異常復(fù)雜。即時(shí)通訊云服務(wù)商會(huì)面對(duì)更大的數(shù)據(jù)量級(jí),要求更全的網(wǎng)絡(luò)覆蓋和更高的兼容性應(yīng)對(duì),需要處理更復(fù)雜的業(yè)務(wù),也有更快的擴(kuò)容速度要求,還包括不同應(yīng)用之間的隔離。
那么,網(wǎng)易云信是如何以“后來者”的身份在這一領(lǐng)域成為“闖局者”?
闕杭寧說:“要想做好即時(shí)通訊研發(fā),就要抓住3個(gè)核心關(guān)鍵點(diǎn):連接管理、業(yè)務(wù)協(xié)議和高并發(fā)高可用的需求。在此基礎(chǔ)上,作為IM云服務(wù)商,云信最關(guān)注的核心維度其實(shí)是兩件事情:第一是穩(wěn)定;第二是實(shí)時(shí)性?!?/p>
網(wǎng)易云信致力于打造“真正穩(wěn)定的IM云服務(wù)”。資源和競(jìng)爭(zhēng)是云服務(wù)的核心,在資源保障上,云信目前生產(chǎn)環(huán)境全部構(gòu)建在網(wǎng)易云上,通過網(wǎng)易蜂巢的容器技術(shù),可以快速的在生產(chǎn)環(huán)境資源上創(chuàng)建新的運(yùn)行節(jié)點(diǎn)和部署服務(wù)鏡像,做到分鐘級(jí)的擴(kuò)容。在容量水位監(jiān)控下,通過蜂巢API,做了一定容量自動(dòng)伸縮策略。
在不同應(yīng)用的資源競(jìng)爭(zhēng)應(yīng)對(duì)上,一方面是上述的容量水位監(jiān)控自適應(yīng)調(diào)整算法和自動(dòng)伸縮機(jī)制來確保足夠容量來保障競(jìng)爭(zhēng)的溫和,另一方面通過在微服務(wù)架構(gòu)上再演進(jìn)了一步,通過自適應(yīng)協(xié)議路由來提供單元化服務(wù)域。應(yīng)對(duì)不同的業(yè)務(wù)服務(wù)單元需求,通過不同的微服務(wù)模塊與容量規(guī)格配比,組合成獨(dú)立的服務(wù)域,將特殊的應(yīng)用域進(jìn)行隔離,一方面可以確保高運(yùn)維可用率要求的服務(wù)不受其他服務(wù)干擾,另一方面可以將有意外狀況的應(yīng)用快速隔離至獨(dú)立的服務(wù)域,避免對(duì)其他服務(wù)的入侵。
對(duì)于實(shí)時(shí)性,闕杭寧認(rèn)為:“這是即時(shí)通訊的本質(zhì)需求,也是其最具有競(jìng)爭(zhēng)力的一個(gè)價(jià)值所在”。實(shí)時(shí)性的技術(shù)本質(zhì)是網(wǎng)絡(luò)拓?fù)浣ㄔO(shè)的優(yōu)化、網(wǎng)絡(luò)鏈路調(diào)度的優(yōu)化,以及消息路由投遞的效率優(yōu)化三個(gè)方面。
在移動(dòng)互聯(lián)網(wǎng)的特殊網(wǎng)絡(luò)環(huán)境下,要確保通信的穩(wěn)定可靠,消息送達(dá)的準(zhǔn)確率,乃至音視頻通訊的低延遲并非易事。千奇百怪的網(wǎng)絡(luò)環(huán)境下,往往有很多問題,例如不可控的客戶端網(wǎng)絡(luò)無法由單一的網(wǎng)絡(luò)入口滿足,“弱網(wǎng)”條件不可避免,如何保持連接和使用。如何突破重圍,闕杭寧分享了網(wǎng)易云信的解決策略:用更可靠的服務(wù)端網(wǎng)絡(luò)代替部分特殊客戶網(wǎng)絡(luò);優(yōu)化連接探活和重連效率;精簡(jiǎn)數(shù)據(jù)包大小,增強(qiáng)對(duì)弱網(wǎng)的支持。
以云信打造“延遲0容忍”的實(shí)時(shí)互動(dòng)音視頻為例,為保證實(shí)時(shí)互動(dòng)業(yè)務(wù)的低延遲和數(shù)據(jù)時(shí)效性,首先網(wǎng)絡(luò)調(diào)度調(diào)優(yōu),其次適配不同的網(wǎng)絡(luò)情況推出自研的抗抖動(dòng)算法和動(dòng)態(tài)碼率,值得一提的是自研的抗抖算法,在借鑒優(yōu)秀開源算法的基礎(chǔ)上進(jìn)行深入優(yōu)化與融合,并投入了大量的測(cè)試做參數(shù)校準(zhǔn),不同丟包、延遲條件下,通過人耳感受流暢程度來獲取較優(yōu)體驗(yàn)下的不同參數(shù)規(guī)格,可以解決在800ms的網(wǎng)絡(luò)抖動(dòng)引起的通話卡頓、與延時(shí)累計(jì)問題。
而網(wǎng)易云信“無人數(shù)上限”的直播聊天室采用了四層分層架構(gòu),客戶端SDK層:SDK多平臺(tái)適配、移動(dòng)弱網(wǎng)絡(luò)優(yōu)化、安全加密壓縮。網(wǎng)關(guān)接入層:長(zhǎng)連接管理優(yōu)化、支持平滑升級(jí)、支持跨網(wǎng)絡(luò)切換、廣播分包。路由層:把網(wǎng)關(guān)接入層收到的客戶端請(qǐng)求,通過路由層來做到后面的具體業(yè)務(wù)微服務(wù)。業(yè)務(wù)層:來處理具體的聊天室業(yè)務(wù)請(qǐng)求,并返回結(jié)果。
在技術(shù)上,網(wǎng)易云信一直堅(jiān)持強(qiáng)化穩(wěn)定和實(shí)時(shí)性核心優(yōu)勢(shì),潛心強(qiáng)化內(nèi)功,小到一個(gè)參數(shù),大到整體的架構(gòu)設(shè)計(jì),對(duì)所有細(xì)節(jié)不斷打磨和優(yōu)化。在過去一年里,云信所取得的成績(jī)與這份“匠心”密不可分。