課程
/后端開發(fā)
/Go
/GO實現(xiàn)千萬級WebSocket消息推送服務(wù)
非常感謝老師的講解,但是還有個疑問:
在分布式環(huán)境下如何進行單點通信?
并不知道目標(biāo)用戶被分配在哪個服務(wù)器上
一有消息就向全部服務(wù)器推送?
2018-08-06
源自:GO實現(xiàn)千萬級WebSocket消息推送服務(wù)
正在回答
????HI同學(xué),向單個用戶推送不建議廣播gateway。
會話層
????這個架構(gòu)需要繼續(xù)演進,允許長連接認(rèn)證(auth),這樣每個長連接就對應(yīng)一個用戶ID(uid)。
????當(dāng)我們要給某個uid推送的時候,需要知道uid對應(yīng)的長連接在哪些服務(wù)器上,所以我們需要實現(xiàn)一個會話層(session layer),最簡單的就是搭建一套redis cluster,把uid與gateway之間的關(guān)系記錄下來,然后基于客戶端心跳,去redis cluster中做刷新,避免關(guān)系過期。
????當(dāng)我們要給uid推送時,可以由logic去session層獲取uid所在gateway,然后定向推送到對應(yīng)gateway,避免集群內(nèi)廣播。
登錄
????實際工程中,我們不會把帳號密碼登錄放在gateway里實現(xiàn),而是寫一個單獨的認(rèn)證服務(wù)(一般會與公司的賬號系統(tǒng)打通),完成認(rèn)證后發(fā)放一個生命期很短的TOKEN,比如JWT,這個TOKEN是可以自驗證的。
????客戶端拿著token建到gateway的連接,然后auth提交token,由gateway直接驗證有效,完成會話的建立。
舉報
分布式高并發(fā)的彈幕架構(gòu)揭秘,直播彈幕系統(tǒng)技術(shù)難點分析
2 回答講師有推出分布式推送服務(wù)實戰(zhàn)課程的計劃么?
1 回答代碼沒錯,應(yīng)該是環(huán)境報錯
1 回答能否通過記錄來尋找是那個網(wǎng)關(guān)?不通過廣播的方式呢?
3 回答有源碼分享嗎?
2 回答能具體說一下怎么實現(xiàn)服務(wù)端主動向客戶端群發(fā)、單發(fā)呢
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2018-08-07
????HI同學(xué),向單個用戶推送不建議廣播gateway。
會話層
????這個架構(gòu)需要繼續(xù)演進,允許長連接認(rèn)證(auth),這樣每個長連接就對應(yīng)一個用戶ID(uid)。
????當(dāng)我們要給某個uid推送的時候,需要知道uid對應(yīng)的長連接在哪些服務(wù)器上,所以我們需要實現(xiàn)一個會話層(session layer),最簡單的就是搭建一套redis cluster,把uid與gateway之間的關(guān)系記錄下來,然后基于客戶端心跳,去redis cluster中做刷新,避免關(guān)系過期。
????當(dāng)我們要給uid推送時,可以由logic去session層獲取uid所在gateway,然后定向推送到對應(yīng)gateway,避免集群內(nèi)廣播。
登錄
????實際工程中,我們不會把帳號密碼登錄放在gateway里實現(xiàn),而是寫一個單獨的認(rèn)證服務(wù)(一般會與公司的賬號系統(tǒng)打通),完成認(rèn)證后發(fā)放一個生命期很短的TOKEN,比如JWT,這個TOKEN是可以自驗證的。
????客戶端拿著token建到gateway的連接,然后auth提交token,由gateway直接驗證有效,完成會話的建立。