运行多个HTTP服务器实例用于扩展。
然而,这似乎不会与WebSockets工作,因为每个服务器实例将有自己的一组连接到客户端。
如何在多个服务器实例上运行WebSockets,如果它们都需要共享一组公共连接?
我正在寻找同样的东西来开发websocket应用程序准备好扩展,显然没有多少文章讨论这个。
案例1 推荐的方法是像Heroku建议的那样使用Redis缓存,使用服务总线或存储到数据库中,就像SignalR中Scaleout中提到的3种方法一样。然而,有一个问题,必须有一个轻微的延迟,因为为了使第二个实例想要知道,调度程序或后台worker/service应该持续运行,以检测缓存/队列/db中的新变化。
案例2 在我的情况下,我想要高频几乎实时。因此,实例之间应该有一个持久连接。然而,挑战是,我们不能在无状态的web服务器之间做到这一点。
所以我们仍然需要中间长时间运行的后台/worker服务,从代码中实现我们自己的net/socket/TCP,并维护连接池,但这不是一件容易的事。
我正在考虑在服务器(用于此服务)上使用Websocket客户端,因此与客户端和实例之间的通信模式几乎相同。看这个:12。剩下的一件事是在每个实例up/down时更新实例IP/URL到分布式缓存或db。
最后一个选项是在一个新的 webbrtc上进行探索
我还没有尝试过,但我正在考虑使连接粘可能解决问题。您可以在负载均衡器中设置此设置。
目前为止我找到的最佳解决方案是http://pusher.com/。
易于设置。大文档。