【问题标题】:What If SignalR hub is hosted on multiple server?如果 SignalR 集线器托管在多台服务器上怎么办?
【发布时间】:2023-03-29 02:02:01
【问题描述】:

我有一个复杂的场景。

我有一个将容纳 SignalR HUB 的 Web 应用程序。

此应用程序将托管在多个服务器上。

例如。 Hub1 将托管在 ServerA 和 ServerB 上。

假设我在 ServerA 和 ServerB 上的客户端都很少。

如果有人在 ServerA 上广播了一些消息,那么 ServerB 将能够得到该消息 (即使我通过了适当的 ConnectionID)?

【问题讨论】:

    标签: signalr signalr-hub


    【解决方案1】:

    我认为在 SignalR 2.0 中你可以看看 Introduction to Scaleout in SignalR。

    我尚未对其进行测试,但文档报告称,例如 Microsoft.AspNet.SignalR.SqlServer 将使用 SQL Server 为您处理负载平衡。

    参考:http://www.asp.net/signalr/overview/signalr-20/performance-and-scaling/scaleout-in-signalr

    编辑

    目前我在生产中使用 REDIS 背板,它非常棒,易于设置和注入您的代码https://docs.microsoft.com/en-us/aspnet/signalr/overview/performance/scaleout-with-redis

    【讨论】:

      【解决方案2】:

      可以,但您需要使用背板。有一些受支持的,例如 Redis 或 SQL。

      我使用了 SQL 背板,它使用一个表和一个 BLOB 数据列,可以在 SignalR 的所有实例之间同步任何用户/组/集线器/消息。在 application_start 上,您只需添加一行代码即可使用 SQL 背板,这一切都在幕后为您处理。

      如果性能非常受关注,请使用 Redis。如果您想要简单和易于配置,请使用 SQL。

      http://www.asp.net/signalr/overview/signalr-20/performance-and-scaling/scaleout-with-sql-server

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多