十几万人同时在线的直播间聊天,如何设计服务端架构?
問題
以下內(nèi)容源自oschina的一篇討論帖:
問題:這是在知乎上看到的關(guān)于如何搭建視頻直播系統(tǒng)時想到的一個問題,在此不考慮其他直播上的問題,僅考慮聊天系統(tǒng),一個熱門視頻直播間人數(shù)可能達到幾十萬人,一個人發(fā)消息幾十萬人接收,幾十萬人發(fā)消息幾十萬人接收,這個流量相當驚人,服務端要如何設(shè)計才能保證系統(tǒng)流暢?
各路雷鋒的思(che)路(dan)
(點擊查看大圖)
于是,云信君看不下去了
1
聊天室架構(gòu)應滿足哪些條件
高可用:任何一個節(jié)點故障都不應該引起服務不可用;
易擴展:具有水平擴展的特性,對不同量級的在線用戶數(shù)都有應變的能力;
高并發(fā)低延遲:能支持大量的用戶同時收發(fā)消息,消息從發(fā)出到送達所有在線端的延時在毫秒級;
客戶端兼容性:新型的應用都是能同時跨多種設(shè)備實現(xiàn)消息互通的,比如網(wǎng)頁端,手機端和桌面端,甚至智能電視等。
2
設(shè)計架構(gòu)
(點擊查看大圖)
客戶端層
處理各種設(shè)備的兼容問題,包括對ios,Android,Windows, Web等各種開發(fā)平臺的語言適配;消息通道的管理維護,包括移動設(shè)備上的弱網(wǎng)絡(luò)管理,斷線重連等;保證數(shù)據(jù)安全,所有上行下行的數(shù)據(jù)包都需要加解密處理,規(guī)避數(shù)據(jù)泄露或中間人攻擊等各種安全風險。
網(wǎng)關(guān)接入層
管理大量客戶端連接,單個節(jié)點可以維護的客戶端數(shù)量在數(shù)十萬量級;處理不同類型客戶端的協(xié)議兼容,由于客戶端實現(xiàn)技術(shù)的多樣性,導致客戶端與網(wǎng)關(guān)之間底層的數(shù)據(jù)通信協(xié)議存在差異,需要由不同的接入網(wǎng)關(guān)做協(xié)議轉(zhuǎn)換;處理數(shù)據(jù)安全邏輯;跨網(wǎng)絡(luò)的高可用邏輯,網(wǎng)絡(luò)級別的主備(誰知道哪天網(wǎng)線會被藍翔的畢業(yè)生挖斷呢?);廣播消息的高效下行分發(fā),將收到的廣播消息分發(fā)到所有連接在本節(jié)點上的客戶端。
路由層
作為業(yè)務層接入的中轉(zhuǎn),同時承擔負載均衡和高可用的作用,單個業(yè)務節(jié)點處理能力達到瓶頸時更方便的擴容,路由層使業(yè)務層擴容對前置網(wǎng)關(guān)層完全透明;當一個網(wǎng)絡(luò)的業(yè)務集群出現(xiàn)網(wǎng)絡(luò)故障時,可以切換到備用網(wǎng)絡(luò),保證服務可用性。
業(yè)務層
處理聊天室內(nèi)的業(yè)務消息,一個集群內(nèi)有眾多節(jié)點,節(jié)點角色相互對等,任何一個節(jié)點的故障會使整個集群的處理能力下降,但不會引起服務的中斷,因為其他節(jié)點可以繼續(xù)接管業(yè)務數(shù)據(jù)包的處理;業(yè)務集群同樣有多個網(wǎng)絡(luò)環(huán)境的熱備,以應對可能出現(xiàn)的區(qū)域性網(wǎng)絡(luò)故障。
3
難點在哪里
客戶端多樣性
目前的應用都存在跨平臺的需求,iOS、安卓和PC端,網(wǎng)頁端,甚至IOT物聯(lián)網(wǎng)設(shè)備,能連多少是多少,多多益善;但是不同開發(fā)平臺之間的技術(shù)差異性極大,不是所有公司都有這么全的全棧程序猿的;如果團隊開發(fā)的話單就客戶端開發(fā)人員就不是幾個人可以完成的。
數(shù)據(jù)安全的保證
當前的網(wǎng)絡(luò)安全形勢異常復雜,開發(fā)應用時如果不在通信安全上花心思,那你的用戶就是在互聯(lián)網(wǎng)上裸奔;開發(fā)者需要針對不同的平臺,不同的通信技術(shù)實現(xiàn)可靠的安全方案,避免用戶數(shù)據(jù)在傳輸過程中泄露,避免中間人攻擊等安全風險。
跨機房網(wǎng)絡(luò)級的高可用方案
當機房網(wǎng)絡(luò)出現(xiàn)故障時把責任推給市政施工隊或者“網(wǎng)絡(luò)抽風”已經(jīng)不流行了,用戶需要的是故障無感知。
所有環(huán)節(jié)的單點故障排除
任何硬件和軟件都存在故障的可能,我們無法避免應用罷工,那就需要隨時準備替補上場。
能應對任何用戶量級的需求
架構(gòu)級做到水平擴展的能力,當用戶量增長時隨時可以通過堆服務器來解決,而不是將架構(gòu)推倒重來。
4
這么難?我做不出來
技術(shù)發(fā)展到現(xiàn)在已經(jīng)不流行重復造輪子了,因為輪子的結(jié)構(gòu)越來越復雜,功能性和非功能性的指標要求越來越高;而我們的用戶卻不會再等我們了。當我們還在畫輪子的圖紙的時候,競爭對手可能已經(jīng)把車子都造好,在路上跑了。雖然我們不是非得自己造輪子,但是了解如何完成一個完美的輪子的制作過程和質(zhì)量標準卻是非常有必要的,這也是我前面和你介紹了這么多的原因。
就像近幾年大數(shù)據(jù)技術(shù)非常流行,如果你對這個領(lǐng)域有所了解你就會發(fā)現(xiàn)幾乎所有公司都在使用現(xiàn)有的平臺,比如Hadoop;或者直接使用,或者在上面做二次改造,原因無非就是上面說的幾點。現(xiàn)在你遇到的也是同樣的問題,聊天室這種功能在最近兩年又火了起來,主要還是視頻直播業(yè)務的大規(guī)模擴張;所以能借用目前已有的平臺或工具是最快捷的路徑,應用需要關(guān)注的是怎么以最快的速度抓住用戶。
所以,最后一句就是硬得不能再硬的廣告了:“試試網(wǎng)易云信吧,我們已經(jīng)把輪子造好了,而且造得還不錯!”
END
【推薦閱讀】
視頻云直播:場景、技術(shù)及優(yōu)化
Po校園接入云信,多機位“有毒”直播燃爆LIVE
網(wǎng)易云信∣直播+聊天室一鍵打造
ID:neteaseim ?長按識別,關(guān)注精彩
總結(jié)
以上是生活随笔為你收集整理的十几万人同时在线的直播间聊天,如何设计服务端架构?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “学霸”是怎样炼成的?
- 下一篇: 认仕医生接入云信,医友交流随时随地