【问题标题】:High Availability Websockets Server高可用性 Websockets 服务器
【发布时间】:2017-05-08 16:12:02
【问题描述】:

我想知道在高可用性 (.NET Core) 微服务​​基础架构中设置 WebSockets 服务器的最佳方式。

我目前的计划是让我的 WebSockets 服务器的两个实例位于负载均衡器后面,具有会话亲和性,这样一旦打开连接,后续消息就会返回到同一个实例。然后如果一个实例失败,客户端将重新连接到另一个实例。

这是最好的设置方法还是有更好的方法?我主要关心的是高可用性,但我也希望能够水平扩展。

此外,如果需要将消息广播到浏览器客户端,那么我是否应该使用某种可靠的消息队列来确保 WebSockets 服务器的所有实例都知道该消息,以防它们拥有与该浏览器客户端的连接?我为此想到的另一种选择是,如果服务器以某种方式是无状态的,并且连接信息存储在其他地方(Redis 集群?),那么我不需要通知所有实例,因为它们都不会“拥有”与那个客户?这可能吗?

感谢您的帮助:)

克里斯

【问题讨论】:

    标签: .net websocket microservices high-availability


    【解决方案1】:

    你的设计听起来不错。使用 haproxy,您可以限制与任何给定实例的客户端连接数,这对于 websocket 来说是一个大问题。我会采用无状态方法并使用代码处理错误。当客户端检测到故障时,只需重新连接到任何实例。将所有持久数据保存在某种全局存储中。正如您所提到的,根据用例,Redis 会很好用。

    附带说明,Websockets 保持持久连接打开,并且根据容量,您可能需要一个 haproxy 实例池。建议至少有两个作为可用性的起点。

    【讨论】:

    • 优秀。谢谢你
    猜你喜欢
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    • 2020-03-09
    • 2020-09-06
    • 1970-01-01
    • 2012-10-11
    • 2023-03-22
    相关资源
    最近更新 更多