繁体   English   中英

缩减规模时,跨自动缩放实例在Azure上平衡SignalR负载会发生什么情况?

[英]What happens with SignalR load balanced on Azure across autoscale instances when downscaling?

可以将Azure网站设置为根据负载自动缩放。 请考虑以下情形:

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

连接到实例3-8的客户端会怎样?

SignalR尝试打开与特定服务器的套接字连接。 结果,如果该特定服务器被拆除(例如在Azure App Service缩减的情况下),则该客户端连接将被关闭。

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

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

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

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

我发现这是一篇很好的文章 ,有助于理解SignalR。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM