【问题标题】:Spring websocket/broker fail overSpring websocket/broker 故障转移
【发布时间】:2020-12-03 12:49:42
【问题描述】:

我有以下设计:

  • 机器1
    • WebsocketApp
    • ActiveMQ 代理
  • 机器2
    • WebsocketApp
    • ActiveMQ 代理
  • 机器3
    • WebsocketApp
    • ActiveMQ 代理
  • 机器4
    • WebsocketApp
    • ActiveMQ 代理

客户端将通过 F5 负载均衡器使用 STOMP over WebSockets 连接到 ActiveMQ 代理。它们可以根据负载系数降落在任何机器上。

对于故障转移场景,我们如何在 ActiveMQ 之间共享 Web 套接字会话。否则,如果代理关闭,它所持有的所有会话都会关闭。

【问题讨论】:

  • 感谢您的回复。一些格式问题。三台机器,每台都有 websocket spring 应用程序和一个代理。 Websocket 应用程序将通过 spring 代理连接配置与代理进行交互。客户将通过 F5 与经纪人互动。我回答问题了吗?如何使代理失败安全。如果某个代理节点出现故障,将如何保留代理的活动会话。
  • 什么是“spring broker 连接配置”?此外,通过 F5 负载均衡器的客户端是否会使用 WebSockets?他们将使用什么消息传递协议?跺脚? AMQP?
  • 春季经纪人计划使用 stomp。是的,客户端将为 websockets 使用 F5 负载平衡。跺脚。
  • 那么 WebSocketApp 和通过 F5 的客户端都将使用 STOMP over WebSockets?很抱歉一直问,但目前还不清楚。
  • 没问题。您在论坛中提供帮助,除非您有更多详细信息,否则您无能为力。可能是我在 STOMP 中对术语的使用不正确。 WebsocketApp 将连接到 ActiveMQ 代理(不确定是 STOMP 还是其他方式)。客户端将使用 F5 连接到 Active MQ 代理。 URL 将以 wss:// 开头,如果我们将使用 activemq.js 进行连接。

标签: spring websocket activemq spring-websocket failover


【解决方案1】:

STOMP 是一个非常简单的协议。它不支持故障转移。

如果与 STOMP 客户端连接的代理在您的环境中出现故障,则该客户端的连接将断开,并且该代理上的所有消息都将不可用,直到该代理恢复运行。客户端需要通过 F5 URL 重新连接到另一个代理。

STOMP 连接不像 HTTP。它们是有状态的。客户端“会话”数据不在代理之间共享。如果客户端的代理出现故障,那么它就不能简单地继续下去,就好像 HTTP 用例通常可能没有发生任何事情一样。

【讨论】:

  • 谢谢。我有一个分布式一致性缓存。消除所有这些,我将能够只使用 spring websocket 应用程序和一致性缓存。我会将会话信息存储在一致性缓存中。如果 websocket 应用程序发生故障,客户端将使用原始订阅 id 重新连接,我们可以恢复会话信息。这样我就不需要设置代理,而且它对故障转移没有多大帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多