负载均衡时的Websocket

时间:2018-10-08 21:43:03

标签: websocket load-balancing haproxy java-websocket

我知道围绕该主题进行了很多讨论,但是我无法确切找到要搜索的内容。这是问题所在:

假设:

  • 我们有一个Web应用程序,该应用程序与负载均衡器(HAProxy)后面的Web服务建立了Websocket连接,并且我们有其中两个Web服务
  • 每个网络服务都可能触发一些事件,例如保存到数据库中,我们希望通过websocket通知我们的客户(网络应用)有关该事件。

这是问题所在:可能使用1个Web服务建立了Web套接字连接,并且该事件可能正在另一事件上发生。因此,在这种情况下,我们将无法通知客户。

我将如何解决这个问题的几个想法:

  • 使负载平衡器对客户端透明地建立与所有服务器的Web套接字连接。因此,一个客户端建立一个连接,而LB建立多个连接到后端。据我了解,像HAProxy这样的典型负载均衡器是不可能的
  • 客户端建立多个Web套接字连接,与Web服务后端一样多。不是最佳做法,但可能会起作用。有没有办法传递某种报头来告诉HAProxy建立与某个后端的连接?
  • 具有某种外部持久性队列和1个可处理Web套接字连接的工作器。出现HA问题。一个人如何处理这种处理程序等的部署?另一种选择是处理所有Web服务实例中的事件,并仅在该Web服务上存在Web套接字连接时才向Web应用发送消息。

很多想法,每个想法都值得商question。也许我缺少一些解决此类(大概)常见问题的明显方法。任何指针都将受到高度赞赏。

谢谢!

0 个答案:

没有答案