直擊QCon:網易云信匠心注入IM云服務
2016年10月20日,2016 QCon全球軟件開發大會上海站在上海寶華萬豪酒店正式拉開帷幕,來自全球頂尖的互聯網科技公司和百位海內外權威大咖,圍繞監控系統、大數據分析及可視化、熱門前端技術以及最具前景的云服務等,分享了各自的技術創新思路和實踐經驗。其中,網易云信CTO闕杭寧帶來的《即時通訊云服務之路》主題演講,成為了此次QCon上海2016和近日業內熱議的焦點話題。他不僅全方位的解讀了即時通訊研發所面臨的疑難雜癥,還首次闡述網易云信是如何針對IM開發痛點做“毫厘”級別的360°優化。透過這些實戰經驗,讓我們更加清晰地看到網易云信在即時通訊云服務平臺上的核心思路。
(網易云信CTO闕杭寧)
在全球互聯網+浪潮的推動下,越來越多的創業者和傳統企業都在為爭取乘上時代大勢的順風車而紛紛發力和轉型,而即時通訊云及其衍生的各種微服務已經逐漸成為這股浪潮中,如同工業時代水、電、煤一樣的剛性需求。也因此,近年在互聯網科技領域,誕生了一批提供即時通訊云服務的專業平臺。這種以幫助客戶通過集成客戶端SDK和云端OPEN API,實現快速接入即時通訊功能,降低客戶人力、物力成本的業務模式,成為了云服務領域又一個新藍海。
即便業內早已對即時通訊云服務的光明前景有所預見,但剛涉入一年就成為這一市場的大黑馬,網易云信在過去十二個月迅猛的發展速度依然令人乍舌。從2015年10月13號上線至今,網易云信已成功接入10萬+APP開發者,覆蓋用戶達到驚人的4億+;在網絡和區域上面覆蓋了196個國家,567個地區。除此之外,還獲得了國內即時通訊云服務領域的首個CSA-STAR和ISO27001認證,并已擁有56項認證專利。
闕杭寧表示,對于任何一家平臺的研發團隊而言,相比起PC時代,進入移動互聯網時代的即時通訊面臨著極其復雜的環境因素,譬如移動信號的強弱、連接狀態的關注點、移動終端的流量及電量的敏感性,還有不同操作系統平臺甚至不同版本的系統ROM造成的運行環境的復雜性,等等。這也就意味著即時通訊研發必須要面臨的現狀是:技術難度大,整體開發和調優周期較長,即時通訊研發的細節業務較多,對線上環境的維護復雜度越來越高。而且作為即時通訊云服務不是面向某一個軟件,或某一個平臺去提供服務,而是會有上萬甚至更多的軟件,接入客戶的用戶量的增長都會帶來用戶量級的增長,而且用戶分布及其手機環境更是異常復雜。即時通訊云服務商會面對更大的數據量級,要求更全的網絡覆蓋和更高的兼容性應對,需要處理更復雜的業務,也有更快的擴容速度要求,還包括不同應用之間的隔離。
那么網易云信到底是如何以“闖局者”和“后來者”的身份做到如今的成就的?闕杭寧說:“要想做好即時通訊研發,就要抓住3個核心關鍵點:連接管理、業務協議和高并發高可用的需求。在此基礎上,作為IM云服務商,云信最關注的核心維度其實是兩件事情:第一是穩定;第二是實時性。”闕杭寧在2016上海QCon大會上非常直接地點明了網易云信的核心思路。網易云信致力于打造“真正穩定的IM云服務”。而穩定,也正是IM云服務的生命線。圍繞云服務的核心:資源和競爭,闕杭寧闡述了云信保證穩定的實踐。資源保障上,在云計算的便利性和技術趨勢下,云信目前生產環境全部構建在網易云上,通過網易蜂巢的容器技術,可以快速的在生產環境資源上創建新的運行節點和部署服務鏡像,做到分鐘級的擴容。在容量水位監控下,通過蜂巢API,做了一定容量自動伸縮策略。在不同應用的資源競爭應對上,一方面是上述的容量水位監控自適應調整算法和自動伸縮機制來確保足夠容量來保障競爭的溫和,另一方面通過在微服務架構上再演進了一步,通過自適應協議路由來提供單元化服務域。應對不同的業務服務單元需求,通過不同的微服務模塊與容量規格配比,組合成獨立的服務域,將特殊的應用域進行隔離,一方面可以確保高運維可用率要求的服務不受其他服務干擾,另一方面可以將有意外狀況的應用快速隔離至獨立的服務域,避免對其他服務的入侵。
對于實時性,闕杭寧認為:“這是即時通訊的本質需求,也是其最具有競爭力的一個價值所在”。實時性的技術本質是網絡拓撲建設的優化、網絡鏈路調度的優化,以及消息路由投遞的效率優化三個方面。在移動互聯網的特殊網絡環境下,要確保通信的穩定可靠,消息送達的準確率,乃至音視頻通訊的低延遲并非易事。千奇百怪的網絡環境下,往往有很多問題,例如不可控的客戶端網絡無法由單一的網絡入口滿足,“弱網”條件不可避免,如何保持連接和使用。如何突破重圍,闕杭寧分享了網易云信的解決策略:用更可靠的服務端網絡代替部分特殊客戶網絡;優化連接探活和重連效率;精簡數據包大小,增強對弱網的支持。以云信打造“延遲0容忍”的實時互動音視頻為例,為保證實時互動業務的低延遲和數據時效性,首先網絡調度調優,其次適配不同的網絡情況推出自研的抗抖動算法和動態碼率,值得一提的是自研的抗抖算法,在借鑒優秀開源算法的基礎上進行深入優化與融合,并投入了大量的測試做參數校準,不同丟包、延遲條件下,通過人耳感受流暢程度來獲取較優體驗下的不同參數規格??梢越鉀Q在800ms的網絡抖動引起的通話卡頓、與延時累計問題。而網易云信“無人數上限”的直播聊天室采用了四層分層架構,客戶端SDK層:SDK多平臺適配、移動弱網絡優化、安全加密壓縮。網關接入層:長連接管理優化、支持平滑升級、支持跨網絡切換、廣播分包。路由層:把網關接入層收到的客戶端請求,通過路由層來做到后面的具體業務微服務。業務層:來處理具體的聊天室業務請求,并返回結果。
通過闕杭寧的演講我們可以看到,在技術上網易云信一直堅持強化穩定和實時性核心優勢,潛心強化內功,小到一個參數,大到整體的架構設計,對所有細節不斷打磨和優化。在過去一年里,云信所取得的耀眼成績與這份“匠心”密不可分。通過網易云信的努力,客戶減少了開發成本,縮短了產品研發周期,降低了線上維護成本,讓用戶有限的研發產能在互聯網當下唯快不破的生存環境下更多的往自身業務方面輸出,從而促進整個行業的互聯網+發展。