我知道围绕这个主题有很多讨论,但我无法找到我正在搜索的内容 . 这是问题所在:

假使,假设:

  • 我们有一个Web应用程序,它与负载均衡器(HAProxy)后面的Web服务 Build websocket连接,我们有2个这样的Web服务

  • 每个Web服务都可能触发一些事件,比如保存到数据库中,我们希望通过websockets通知我们的客户(Web应用程序)有关该事件 .

问题在于:可以使用1个Web服务 Build Web套接字连接,并且可能在另一个Web服务上发生该事件 . 所以在这种情况下,我们将无法通知客户 .

我将如何解决这个问题:

  • 使负载均衡器与客户端透明地 Build 到所有服务器的Web套接字连接 . 因此,客户端 Build 一个连接,LB使几个连接到后端 . 据我所知,对于像HAProxy这样的典型负载 balancer 器是不可能的

  • 客户端 Build 了多个Web套接字连接,与Web服务后端一样多 . 不是最好的做法,但可能有效 . 有没有办法传递某种 Headers 来告诉HAProxy Build 与某个后端的连接?

  • 拥有某种外部持久队列和1个可处理Web套接字连接的worker . 这里出现了一个HA问题 . 如何处理这样的处理程序的部署等?另一种选择是在所有Web服务实例中处理这些事件,并且仅当该Web服务上存在Web套接字连接时才向Web应用程序发送消息 .

很多想法,每一个都很值得怀疑 . 也许我错过了这种(可能是)常见问题的一些明显的解决方案 . 任何指针都非常感激 .

提前致谢!