【问题标题】:What happens with SignalR load balanced on Azure across autoscale instances when downscaling?缩减规模时,Azure 上跨自动缩放实例的 SignalR 负载平衡会发生什么情况?
【发布时间】:2015-10-24 08:00:55
【问题描述】:

Azure 网站可以设置为根据负载自动缩放。考虑以下场景:

通常我只运行 2 个实例,但如果需要可以扩展到 10 个。流量很高,所以我有 10 个实例,多个客户端与实例 3-8 建立 websocket 连接。流量下降,实例数回落到 2。

连接到实例 3-8 的客户端会发生什么情况?

【问题讨论】:

  • 您使用的是什么 SignalR 背板?
  • 我正在使用服务总线

标签: c# .net azure signalr


【解决方案1】:

SignalR 尝试打开到特定服务器的套接字连接。因此,如果该特定服务器被拆除(如 Azure 应用服务缩减的情况),则该客户端连接将关闭。

您可以在 JavaScript 中处理 SignalR 生命周期事件,以便在发生这种情况时重新建立连接,从而最大限度地减少对用户的影响。

http://www.asp.net/signalr/overview/guide-to-the-api/handling-connection-lifetime-events

例如,如果您通常运行两个实例并且连接了 10 个用户。这 10 个用户在实例 #1 和 2 上具有 SignalR 连接。然后自动缩放触发器,现在突然供应了第三个实例。又有 10 个用户来了,他们在实例 #1、2 和 3 上获得了 SignalR 连接。五个用户离开并自动扩展,缩减到两个实例。与第三个实例有 SignalR 连接的其余 5 个用户将关闭连接。您需要处理客户端上的关闭生命周期事件,以尝试在实例 #1 或 2 上重新启动 SignalR 连接。

我假设您已经配置了背板,否则您可能会问:“为什么我的用户偶尔收不到消息?!”。 :)

这是一个nice article,我发现它对理解 SignalR 很有用。

【讨论】:

    猜你喜欢
    • 2019-05-20
    • 2023-02-08
    • 1970-01-01
    • 2021-02-16
    • 2018-09-20
    • 2021-09-11
    • 2016-11-03
    • 2020-11-28
    • 2020-08-20
    相关资源
    最近更新 更多