2017-04-13 28 views
1

我設計一個系統,其中一個巨大的從裝置所產生的實時數據的數量優選爲超過的WebSockets被轉移到用戶。我決定使用Spring STOMP WebSockets的,因爲它是更快地建立,理解並支持了類似的RabbitMQ和安全箱的幾件事情。同時也是因爲計劃是使用Spring作爲另一種REST API,所以Spring可以作爲技術堆棧的選擇。 RabbitMQ是我決定的消息代理。然而,我無法找到如何擴展這種系統的大量指導。彈簧STOMP代理中繼+ RabbitMQ的羣集與HA代理對開每一個用於負載平衡

可能的解決方案我想到的是:

  • 要STOMP代理實例的前面添加HAProxy的,也 STOMP經紀人和RabbitMQ的集羣之間,HAProxy的將作爲既是 負載均衡案例。 Spring STOMP經紀人然後將指向HAProxy作爲經紀人中繼主機。要求是具有高可用性並且沒有數據丟失。

因爲我沒有使用Websockets的經驗,所以我想獲得關於這個解決方案聽起來是否正確的指導或者我在這裏缺少什麼?

注:在本系統中,無論是信息的生產者和消費者實際上WebSocket的Java客戶端。我把樣品從代碼和https://github.com/nickebbutt/stomp-websockets-java-client創建兩個單獨的客戶端 - 一個只發送消息即訂閱了這些消息(消費者)設備數據(生產者)和其他。因此,兩者都使用相同的websocket URL連接到相同的STOMP代理。通過上面的系統實現,客戶端將指向HAProxy進行websocket連接。

回答

0

只是一個更新了這一點,我做實驗通過建立上述設置和它的工作就是我能夠連接到的WebSocket跺腳服務器/發送/接收與RabbitMQ的經紀人和使用HAProxy的負載所描述的平衡的數據。在Spring配置的代理主機/端口指着HAProxy的這反過來又被請求轉發到後端的RabbitMQ。同樣,websocket客戶端通過HAProxy連接到Spring STOMP websocket服務器應用程序。