Netty如何做負載均衡(集群)架構
背景:
通過SpringBoot + Netty搭建應用作為IM服務,SpringBoot提供IM業務接口,啟動SpringBoot的時候另外起一條線程啟動Netty框架,作為WebSocket鏈接地址。
?
現在問題是:
例如A客戶端跟www.im.xxx.com/ws創建WebSocket鏈接的時候,與A服務端進行長鏈接。B客戶端跟B服務端進行長鏈接。
那么在A與B之間發送文本信息(聊天內容,Hello World),A服務端無法轉發到B服務端...因為他們的Channel沒有共享...
?
那么通過什么方式可以使應用HA(高可用,集群,非單點)???
2019-10-09
這里需要用到redis的消息發布和訂閱。當客戶端A和服務器1建立netty連接時,根據當前連接的管道名稱進行redis消息訂閱,假設客戶端A和服務器1之間的管道名稱為A1。當客戶端B連接到服務器2又想與服務器1通信時,客戶端B可以根據A1向redis發布消息,因為在這之前服務器1已經消息訂閱了A1,這樣服務器1就可以接收到客戶端B的消息。
2019-08-17
回頭你確定了也給我說下
2019-08-17
我們公司也在用這個,我也還在追尋這塊原理。他們說創建連接后,把連接保存到Redis中,通過NGINX做高可用