網(wǎng)易云信Android端高級技術(shù)架構(gòu)師 周江華
企業(yè)級IM云服務(wù)市場的黑馬
當(dāng)前,基于移動產(chǎn)品服務(wù)和互聯(lián)網(wǎng)+浪潮在國內(nèi)的發(fā)展態(tài)勢,眾多互聯(lián)網(wǎng)公司、新創(chuàng)業(yè)團(tuán)隊乃至傳統(tǒng)行業(yè)都將目光瞄向了移動互聯(lián)市場。而在越來越講求用戶粘度和在線互動的當(dāng)下,從網(wǎng)絡(luò)購物到在線教育,從協(xié)同辦公到在線醫(yī)療,各個行業(yè)各種產(chǎn)品的IM即時通訊服務(wù)已經(jīng)成為如同工業(yè)時代水電煤一般基本卻重要的剛性需求。
《中國公有云平臺白皮書》數(shù)據(jù)顯示,中國云服務(wù)市場增速連續(xù)幾年在65%左右,越來越多的企業(yè)和廠商正在進(jìn)行轉(zhuǎn)型,將會進(jìn)一步拉動云服務(wù)市場的快速發(fā)展。正是看到了這一趨勢的勢不可擋,網(wǎng)易憑借在即時通訊領(lǐng)域長達(dá)16年的經(jīng)驗與技術(shù)積累,推出了網(wǎng)易云信。
據(jù)介紹,網(wǎng)易云信是網(wǎng)易公司集16年IM經(jīng)驗打造的即時通訊云服務(wù)(PaaS),是網(wǎng)易云第一個開放給市場的云服務(wù)產(chǎn)品。開發(fā)者通過集成客戶端SDK和云端OPEN API,即可快速實現(xiàn)強大的IM功能,作為PaaS服務(wù)模式的網(wǎng)易云信全面支持Android、iOS、Web、PC等多平臺。
截至2016年9月,獲得56項技術(shù)專利,通過CSA-STAR和ISO27001雙重國際權(quán)威認(rèn)證的網(wǎng)易云信,已經(jīng)有9萬+開發(fā)者接入,覆蓋用戶3億,在教育、醫(yī)療、O2O、游戲、社交等行業(yè)都擁有眾多用戶支持,包括學(xué)而思網(wǎng)校、網(wǎng)易云音樂、寶寶樹等知名APP均已接入網(wǎng)易云信的IM服務(wù)。
移動IM之痛
周江華表示,相對于PC端,IM在移動端的情況更為復(fù)雜。首先是移動網(wǎng)絡(luò)三大特點——慢、斷、貴,這也就需要更多考慮到用戶需求的復(fù)雜性。而且移動終端,尤其是Android系統(tǒng)自身的資源限制。內(nèi)存、電量、流量,都很珍貴。一方面,Android系統(tǒng)的Low Memory Killer機(jī)制隨時有可能強制關(guān)閉IM以釋放更多內(nèi)存,另一方面移動網(wǎng)絡(luò)的弱網(wǎng)環(huán)境,乃至閑置斷聯(lián),都對IM長時間在線提出了考驗。
此外,還有復(fù)雜的Android生態(tài)環(huán)境,尤其是各家ROM逐步加大了對后臺應(yīng)用的控制力度,導(dǎo)致IM在后臺保活保連難度越來越大。
“即時性要求有新消息時能夠立即收到,如果程序在后臺,則要能立即收到推送通知。而通信則要求穩(wěn)定可靠,系統(tǒng)不宕機(jī),程序不崩潰,傳遞消息時不會被攔截監(jiān)聽,消息不丟,順序不亂,不重復(fù)。如果包含音視頻聊天,則要求延遲低,流暢不卡頓。這兩點說起來容易,但是,要真正做出一套穩(wěn)定可靠的商用級IM系統(tǒng),挑戰(zhàn)非常之多?!敝芙A說。
多維度技術(shù)優(yōu)化策略保障穩(wěn)定
長期以來,提升消息推送達(dá)到率和到達(dá)速度,優(yōu)化網(wǎng)絡(luò)利用效率,節(jié)省系統(tǒng)資源,一直都是Android開發(fā)的核心和基礎(chǔ),不過,新技術(shù),新方法也都在不停的涌現(xiàn)。
針對移動場景的弱網(wǎng)環(huán)境,為了確保真正的穩(wěn)定,網(wǎng)易云信在多個維度上采取了優(yōu)化措施,首先采用了特殊設(shè)計的高性能二進(jìn)制網(wǎng)絡(luò)協(xié)議,并使用了非常精簡的協(xié)議頭,盡量減少數(shù)據(jù)包大小。心跳間隔根據(jù)網(wǎng)絡(luò)情況動態(tài)調(diào)整。掉線后,會有自動重連和快速重登,為了節(jié)省流量電量,以及防止造成對服務(wù)器的信令風(fēng)暴,重連間隔會指數(shù)隨機(jī)倍增退避。
在弱網(wǎng)環(huán)境下,快速的上傳下載,更少的等待時間可以帶來更好的用戶體驗。網(wǎng)易云信擁有斷點續(xù)傳、Pipeline技術(shù)、邊錄邊傳三大特色。斷點續(xù)傳可以減少因網(wǎng)絡(luò)原因?qū)е碌闹貜?fù)傳輸,減少傳輸時間,節(jié)省流量。Pipeline技術(shù)則可以重疊利用http請求的響應(yīng)等待時間,加快傳輸速度。發(fā)送語音消息時,錄一段就發(fā)送一段,等到錄制完畢時,只需要發(fā)送最后一段數(shù)據(jù),可以做到錄完就傳完發(fā)送的效果。
同時,為了能夠保證程序在后臺的存活,云信SDK還采用的獨特的分層架構(gòu),并設(shè)立了獨立的長連接結(jié)合多元化的推送通道的方式,不僅大大減少了CPU和內(nèi)存資源的占用,更提高了信息到達(dá)率,真正做到?;畋_B。