spring - Spring websocket/broker 故障转移
问题描述
我有以下设计:
- 机器1
- WebsocketApp
- ActiveMQ 代理
- 机器2
- WebsocketApp
- ActiveMQ 代理
- 机器3
- WebsocketApp
- ActiveMQ 代理
- 机器4
- WebsocketApp
- ActiveMQ 代理
客户端将通过 F5 负载均衡器使用 STOMP over WebSockets 连接到 ActiveMQ 代理。它们可以根据负载系数降落在任何机器上。
对于故障转移场景,我们如何在 ActiveMQ 之间共享 Web 套接字会话。否则,如果代理关闭,它所持有的所有会话都将关闭。
解决方案
STOMP 是一个非常简单的协议。它不支持故障转移。
如果 STOMP 客户端连接到的代理在您的环境中发生故障,则该客户端的连接将断开,并且该代理上的所有消息将不可用,直到代理恢复。客户端将需要通过 F5 URL 重新连接到另一个代理。
STOMP 连接不像 HTTP。它们是有状态的。客户端“会话”数据不在代理之间共享。如果客户端的代理出现故障,那么它就不能简单地继续下去,就好像 HTTP 用例通常没有发生任何事情一样。
推荐阅读
- python - 如何在python中循环两个条件?
- memory - 在结构中创建安全的重叠/联合字段
- java - 对象坐标没有出现在正确的位置
- swiftui - SwiftUI - 检索数据后导航查看
- android - Youtube Ping url 信息 android
- c# - 如何使用 c# 在 IIS 中获取站点的物理路径?
- javascript - 一种判断函数表达式是否使用 es6 箭头语法的方法
- javascript - 我们如何使用 JavaScript “const variables” “in for..in” & “for..of” 循环,尽管它们的值在重复过程中发生变化?
- python - TypeError:列表索引必须是整数或切片,而不是连接 4 游戏上的 NoneType
- java - 如何在java中创建一个返回设备角度的Android类