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