如何运行具有多个服务器实例的WebSockets?

时间:2013-03-19 23:25:19

标签: websocket

运行多个HTTP服务器实例进行扩展非常有用。

但是,似乎这不适用于WebSockets,因为每个服务器实例都有自己的客户端连接集。

如果所有人都需要共享一组公共连接,如何在多个服务器实例上运行WebSockets?

3 个答案:

答案 0 :(得分:2)

我正在寻找同样的东西来开发可随时扩展的websocket应用程序,显然没有多少文章讨论过这个问题。

案例1 建议的方法是使用像Heroku建议的Redis缓存,使用Service Bus或像Scaleout in SignalR中提到的3种方法一样存储到db中。但是有一个问题,必须有轻微延迟,因为为了让第二个实例想知道,应该连续运行调度程序或后台工作者/服务来检测缓存中的新变化/队列/分贝

案例2 在我的情况下,我想高频率几乎实时。因此它应该在实例之间具有持久性连接。然而,挑战,我们不能在无状态Web服务器之间做到这一点。

所以我们仍然需要中间长时间运行的后台/工作服务,并从代码中实现我们自己的net / socket / TCP并维护连接池,但这不是一件容易的事。

我正在考虑在服务器上使用 Websocket客户端(对于此服务),因此与客户端和实例之间进行通信的模式几乎相同。请参阅:1 2。剩下的一件事就是将实例IP / URL更新到分布式缓存或每个实例上/下的db。

最后一个选项是探索新的WebRTC

答案 1 :(得分:1)

我还没有尝试过,但我想让连接变得粘稠可能会解决问题。您可以在负载均衡器中设置此设置。

答案 2 :(得分:0)

到目前为止,我找到的最佳解决方案是http://pusher.com/

易于设置。很棒的文档。