websocket (java)集群方案

2021-09-10 02:51:54 字數 1493 閱讀 3323

redis 用來存使用者與伺服器的關係(redis可以任意替換為一種儲存形式)

伺服器 a 會訂閱topic 為 websocket-a 的訊息

伺服器 b 會訂閱topic 為 websocket-b 的訊息

kafka 用來接收推送訊息(替換為任意一種mq)

如果使用者1需要給使用者3傳送資訊,如果在單機情況下,由於使用者3沒有與server-a建立鏈結,所以推送不到。但是現在因為在redis儲存了使用者3和server-b的關聯關係,所以直接推送到websocket-b主題之中即可。由server-b接受訊息並推送給使用者3。

優點:

1. 解決了集群情況下跨機器通訊問題。

缺點:

1. 沒有達到隨意增減節點的需求,新加機器需要配置server-id。

2. 程式設計複雜,需要手動註冊kafka-listener訊息節點。

再宕機的情況下,假如a伺服器宕機了,websocket-a的訊息就沒有消費者了,所以只要在能重啟一台伺服器名繼續叫做a的機器即可,因為在**中多了一次判斷,呼叫邏輯如下

即即便是a伺服器接收到了這條訊息,我們也不確定客戶是否在此中間重連了,所以需要去redis拿到當前客戶真實的伺服器,但是如果客戶不斷的重練,可能會導致訊息一直傳送不出去。但是這種也是能被接收的。

實現:再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!

redis 用來存使用者與伺服器的關係(redis可以任意替換為一種儲存形式)

伺服器 a 會訂閱topic 為 websocket-a 的訊息

伺服器 b 會訂閱topic 為 websocket-b 的訊息

kafka 用來接收推送訊息(替換為任意一種mq)

如果使用者1需要給使用者3傳送資訊,如果在單機情況下,由於使用者3沒有與server-a建立鏈結,所以推送不到。但是現在因為在redis儲存了使用者3和server-b的關聯關係,所以直接推送到websocket-b主題之中即可。由server-b接受訊息並推送給使用者3。

優點:

1. 解決了集群情況下跨機器通訊問題。

缺點:

1. 沒有達到隨意增減節點的需求,新加機器需要配置server-id。

2. 程式設計複雜,需要手動註冊kafka-listener訊息節點。

再宕機的情況下,假如a伺服器宕機了,websocket-a的訊息就沒有消費者了,所以只要在能重啟一台伺服器名繼續叫做a的機器即可,因為在**中多了一次判斷,呼叫邏輯如下

即即便是a伺服器接收到了這條訊息,我們也不確定客戶是否在此中間重連了,所以需要去redis拿到當前客戶真實的伺服器,但是如果客戶不斷的重練,可能會導致訊息一直傳送不出去。但是這種也是能被接收的。

實現:

MySQL cluster集群 NDB集群學習

公司主業務用的mysql集群是官方自帶的mysql cluster,mysql自帶的集群模式,這個集群的模式和mgr pxc 主從 有點不一樣。一 儲存引擎不是innodb,mysql cluster用的是ndb引擎 二 資料儲存方式不同,mysql的其他集群方式資料是存在磁碟上的,中間資料的快取用...

zookeeper集群部署 kafka集群部署

wget wget 解壓到目錄 tar zxvf apache zookeeper 3.5.8 bin.tar.gz c usr local 進入目錄 cd usr local 建立軟連線 ln s usr local apache zookeeper 3.5.8 zookeeper 複製配置檔案 ...

redis搭建集群(偽集群)

1 建立6個資料夾 2 複製redis.conf檔案,並修改redis.conf 配置檔案 3 建立集群 4 連線客戶端 5 檢視狀態 建立 6個資料夾來存放redis.conf,因為redis集群最小需要的是,三組三從,每個資料夾代表一台伺服器,6007跟6008可忽略 先複製乙個到6001資料夾...