課程
/后端開發(fā)
/Go
/GO實現(xiàn)千萬級WebSocket消息推送服務(wù)
上一節(jié)課,不是說可以維護,用戶連接,房間一個映射關(guān)系嗎,通過這個映射關(guān)系推送到指定的網(wǎng)管層,與直接廣播到所有的網(wǎng)管節(jié)點有啥利弊呢
2018-07-31
源自:GO實現(xiàn)千萬級WebSocket消息推送服務(wù) 5-3
正在回答
前置前置再前置,把合并越推向原點,對系統(tǒng)整體優(yōu)化效果更佳,掌握這一點即可!
字數(shù)限制。
實際上內(nèi)部通訊也需要合并推送,這個出于簡化原因我沒有實現(xiàn)在開源代碼里。 所有的無狀態(tài)logic應(yīng)該按room推送消息到消息隊列(按room分區(qū)),然后通過pusher服務(wù)去完成房間粒度的消息合并,并廣播給gateway。
思考架構(gòu)問題需要考慮場景,切忌空談性能,在具體場景下有具體的難點和具體的應(yīng)對方案,這個思想很重要。
嗯,這個問題很有意思,引申出了這個分布式系統(tǒng)后續(xù)的一些走向,我簡單延伸一下。
如果是定向給某個用戶推送,我們一般會在邏輯服務(wù)器后面設(shè)計一層session服務(wù),記錄用戶在哪些gateway上,從而減少不必要的廣播。
如果是定向給某個房間推送,需要我們主動的連接調(diào)度,用戶進入房間前先詢問服務(wù)端,由服務(wù)端指派網(wǎng)關(guān)節(jié)點地址,這樣盡量來把同一個房間的用戶聚集在一起,你可以想一下增加這個特性的性價比有多少。
我覺得在彈幕場景里,內(nèi)部節(jié)點之間的廣播消息量并不是瓶頸(特指內(nèi)網(wǎng)帶寬瓶頸),因為100萬人*10個網(wǎng)關(guān)在線,你推送1條彈幕的瓶頸永遠在網(wǎng)關(guān)層。
所以,在考慮生產(chǎn)環(huán)境的擴展性架構(gòu)決策時,gateway+logic應(yīng)該作為一個服務(wù)單元(我們也稱為set),通過部署多套set來實現(xiàn)大規(guī)模集群部署,具體一個房間只需要調(diào)度到某個set即可保障其高可用和高吞吐。
i歲月無聲 提問者
小魚兒老師 回復(fù) i歲月無聲 提問者
精慕門4429612
精慕門4429612 回復(fù) 精慕門4429612
i歲月無聲 提問者 回復(fù) 小魚兒老師
舉報
分布式高并發(fā)的彈幕架構(gòu)揭秘,直播彈幕系統(tǒng)技術(shù)難點分析
1 回答能否通過記錄來尋找是那個網(wǎng)關(guān)?不通過廣播的方式呢?
1 回答邏輯上有些關(guān)鍵處理缺少
1 回答4-1無法播放了
1 回答不太明白內(nèi)容
3 回答Golang 的 channel 不close掉,會自動被GC回收掉嗎?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2018-08-01
前置前置再前置,把合并越推向原點,對系統(tǒng)整體優(yōu)化效果更佳,掌握這一點即可!
2018-08-01
字數(shù)限制。
實際上內(nèi)部通訊也需要合并推送,這個出于簡化原因我沒有實現(xiàn)在開源代碼里。 所有的無狀態(tài)logic應(yīng)該按room推送消息到消息隊列(按room分區(qū)),然后通過pusher服務(wù)去完成房間粒度的消息合并,并廣播給gateway。
思考架構(gòu)問題需要考慮場景,切忌空談性能,在具體場景下有具體的難點和具體的應(yīng)對方案,這個思想很重要。
2018-08-01
嗯,這個問題很有意思,引申出了這個分布式系統(tǒng)后續(xù)的一些走向,我簡單延伸一下。
如果是定向給某個用戶推送,我們一般會在邏輯服務(wù)器后面設(shè)計一層session服務(wù),記錄用戶在哪些gateway上,從而減少不必要的廣播。
如果是定向給某個房間推送,需要我們主動的連接調(diào)度,用戶進入房間前先詢問服務(wù)端,由服務(wù)端指派網(wǎng)關(guān)節(jié)點地址,這樣盡量來把同一個房間的用戶聚集在一起,你可以想一下增加這個特性的性價比有多少。
我覺得在彈幕場景里,內(nèi)部節(jié)點之間的廣播消息量并不是瓶頸(特指內(nèi)網(wǎng)帶寬瓶頸),因為100萬人*10個網(wǎng)關(guān)在線,你推送1條彈幕的瓶頸永遠在網(wǎng)關(guān)層。
所以,在考慮生產(chǎn)環(huán)境的擴展性架構(gòu)決策時,gateway+logic應(yīng)該作為一個服務(wù)單元(我們也稱為set),通過部署多套set來實現(xiàn)大規(guī)模集群部署,具體一個房間只需要調(diào)度到某個set即可保障其高可用和高吞吐。