亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

分布式環境下單點通信的問題

非常感謝老師的講解,但是還有個疑問:

在分布式環境下如何進行單點通信?

并不知道目標用戶被分配在哪個服務器上

一有消息就向全部服務器推送?

正在回答

1 回答

????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直接驗證有效,完成會話的建立。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

分布式環境下單點通信的問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號