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