运行多个HTTP服务器实例进行扩展非常有用.
但是,似乎这不适用于WebSockets,因为每个服务器实例都有自己的客户端连接集.
如果所有人都需要共享一组公共连接,那么如何在多个服务器实例上运行WebSockets?
我一直在寻找同样的东西来开发可扩展的 websocket 应用程序,显然没有太多文章讨论这一点。
案例 1 推荐的方法是像Heroku建议的那样使用 Redis 缓存,使用 Service Bus 或像SignalR 中的 Scaleout中提到的 3 种方法一样存储到数据库中。但是有一个问题,必须有轻微的延迟,因为为了第二个实例想要知道,调度程序或后台工作程序/服务应该连续运行以检测缓存/队列/数据库中的新更改。
案例 2 在我的案例中,我想要几乎实时的高频。因此它在实例之间应该有持久连接。然而挑战在于,我们无法在无状态 Web 服务器之间做到这一点。
因此,我们仍然需要中间长时间运行的后台/辅助服务,并从代码中实现我们自己的 net/socket/TCP 并维护连接池,但这不是一件容易的任务。
我正在考虑在服务器上使用 Websocket 客户端(用于此服务),因此与客户端以及实例之间通信的模式几乎相同。请参阅:1 2。剩下的一件事是将实例 IP/URL 更新到每个实例上/下的分布式缓存或数据库中。
最后一个选择是探索新的WebRTC
| 归档时间: |
|
| 查看次数: |
7379 次 |
| 最近记录: |