几十万人同时在线的直播间聊天,如何设计服务端架构?
一個(gè)熱門視頻直播間人數(shù)可能達(dá)到幾十萬甚至上百萬人,幾十萬人發(fā)消息,幾十萬人接收,流量相當(dāng)驚人,那么服務(wù)端要如何設(shè)計(jì)才能保證系統(tǒng)流暢?本文作者將結(jié)合他在網(wǎng)易云信多年IM開發(fā)的經(jīng)驗(yàn)進(jìn)行深度分析。
?
推薦閱讀
高并發(fā)IM系統(tǒng)架構(gòu)優(yōu)化實(shí)踐
IM即時(shí)通訊:如何跳出傳統(tǒng)思維來設(shè)計(jì)聊天室架構(gòu)?
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 聊天室架構(gòu)應(yīng)滿足哪些條件
高可用:任何一個(gè)節(jié)點(diǎn)故障都不應(yīng)該引起服務(wù)不可用;
易擴(kuò)展:具有水平擴(kuò)展的特性,對不同量級的在線用戶數(shù)都有應(yīng)變的能力;
高并發(fā)低延遲:能支持大量的用戶同時(shí)收發(fā)消息,消息從發(fā)出到送達(dá)所有在線端的延時(shí)在毫秒級;
客戶端兼容性:新型的應(yīng)用都是能同時(shí)跨多種設(shè)備實(shí)現(xiàn)消息互通的,比如網(wǎng)頁端,手機(jī)端和桌面端,甚至智能電視等。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 聊天室架構(gòu)如何設(shè)計(jì)
客戶端層
處理各種設(shè)備的兼容問題,包括對ios,Android,Windows, Web等各種開發(fā)平臺的語言適配;消息通道的管理維護(hù),包括移動(dòng)設(shè)備上的弱網(wǎng)絡(luò)管理,斷線重連等;保證數(shù)據(jù)安全,所有上行下行的數(shù)據(jù)包都需要加解密處理,規(guī)避數(shù)據(jù)泄露或中間人攻擊等各種安全風(fēng)險(xiǎn)。
網(wǎng)關(guān)接入層
管理大量客戶端連接,單個(gè)節(jié)點(diǎn)可以維護(hù)的客戶端數(shù)量在數(shù)十萬量級;處理不同類型客戶端的協(xié)議兼容,由于客戶端實(shí)現(xiàn)技術(shù)的多樣性,導(dǎo)致客戶端與網(wǎng)關(guān)之間底層的數(shù)據(jù)通信協(xié)議存在差異,需要由不同的接入網(wǎng)關(guān)做協(xié)議轉(zhuǎn)換;處理數(shù)據(jù)安全邏輯;跨網(wǎng)絡(luò)的高可用邏輯,網(wǎng)絡(luò)級別的主備(誰知道哪天網(wǎng)線會被藍(lán)翔的畢業(yè)生挖斷呢?);廣播消息的高效下行分發(fā),將收到的廣播消息分發(fā)到所有連接在本節(jié)點(diǎn)上的客戶端。
路由層
作為業(yè)務(wù)層接入的中轉(zhuǎn),同時(shí)承擔(dān)負(fù)載均衡和高可用的作用,單個(gè)業(yè)務(wù)節(jié)點(diǎn)處理能力達(dá)到瓶頸時(shí)更方便的擴(kuò)容,路由層使業(yè)務(wù)層擴(kuò)容對前置網(wǎng)關(guān)層完全透明;當(dāng)一個(gè)網(wǎng)絡(luò)的業(yè)務(wù)集群出現(xiàn)網(wǎng)絡(luò)故障時(shí),可以切換到備用網(wǎng)絡(luò),保證服務(wù)可用性。
業(yè)務(wù)層
處理聊天室內(nèi)的業(yè)務(wù)消息,一個(gè)集群內(nèi)有眾多節(jié)點(diǎn),節(jié)點(diǎn)角色相互對等,任何一個(gè)節(jié)點(diǎn)的故障會使整個(gè)集群的處理能力下降,但不會引起服務(wù)的中斷,因?yàn)槠渌?jié)點(diǎn)可以繼續(xù)接管業(yè)務(wù)數(shù)據(jù)包的處理;業(yè)務(wù)集群同樣有多個(gè)網(wǎng)絡(luò)環(huán)境的熱備,以應(yīng)對可能出現(xiàn)的區(qū)域性網(wǎng)絡(luò)故障。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 難點(diǎn)在哪里
客戶端多樣性
目前的應(yīng)用都存在跨平臺的需求,iOS、安卓和PC端,網(wǎng)頁端,甚至IOT物聯(lián)網(wǎng)設(shè)備,能連多少是多少,多多益善;但是不同開發(fā)平臺之間的技術(shù)差異性極大,不是所有公司都有這么全的全棧程序猿的;如果團(tuán)隊(duì)開發(fā)的話單就客戶端開發(fā)人員就不是幾個(gè)人可以完成的。
數(shù)據(jù)安全的保證
當(dāng)前的網(wǎng)絡(luò)安全形勢異常復(fù)雜,開發(fā)應(yīng)用時(shí)如果不在通信安全上花心思,那你的用戶就是在互聯(lián)網(wǎng)上裸奔;開發(fā)者需要針對不同的平臺,不同的通信技術(shù)實(shí)現(xiàn)可靠的安全方案,避免用戶數(shù)據(jù)在傳輸過程中泄露,避免中間人攻擊等安全風(fēng)險(xiǎn)。
跨機(jī)房網(wǎng)絡(luò)級的高可用方案
當(dāng)機(jī)房網(wǎng)絡(luò)出現(xiàn)故障時(shí)把責(zé)任推給市政施工隊(duì)或者“網(wǎng)絡(luò)抽風(fēng)”已經(jīng)不流行了,用戶需要的是故障無感知。
所有環(huán)節(jié)的單點(diǎn)故障排除
任何硬件和軟件都存在故障的可能,我們無法避免應(yīng)用罷工,那就需要隨時(shí)準(zhǔn)備替補(bǔ)上場。
能應(yīng)對任何用戶量級的需求
架構(gòu)級做到水平擴(kuò)展的能力,當(dāng)用戶量增長時(shí)隨時(shí)可以通過堆服務(wù)器來解決,而不是將架構(gòu)推倒重來。
?
看完文章還是不知道怎么做?那么可以嘗試借用目前已有的平臺或工具,現(xiàn)在應(yīng)用需要關(guān)注的是怎么以最快的速度抓住用戶。網(wǎng)易云信是一個(gè)面對開發(fā)者的很好的IM云平臺。十余年的研發(fā)積累,使其在即時(shí)通訊技術(shù)方面處于全國領(lǐng)先水平。網(wǎng)易云信至今已申請了60余項(xiàng)IM專利,遠(yuǎn)超市場同類產(chǎn)品。歡迎大家與我們討論IM技術(shù),也歡迎大家多多關(guān)注網(wǎng)易云信。
另外,想要獲取更多產(chǎn)品干貨、技術(shù)干貨,記得關(guān)注網(wǎng)易云信博客哦~
總結(jié)
以上是生活随笔為你收集整理的几十万人同时在线的直播间聊天,如何设计服务端架构?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 法国时隔20年再折桂!“网易云信:世界杯
- 下一篇: AV1为何有信心打败H.265?