Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 缩小规模时,Azure上的SignalR负载在自动缩放实例之间平衡会发生什么?_C#_.net_Azure_Signalr - Fatal编程技术网

C# 缩小规模时,Azure上的SignalR负载在自动缩放实例之间平衡会发生什么?

C# 缩小规模时,Azure上的SignalR负载在自动缩放实例之间平衡会发生什么?,c#,.net,azure,signalr,C#,.net,Azure,Signalr,Azure网站可以根据负载设置为自动缩放。考虑下面的场景: 通常我只运行2个实例,但如果需要,可以扩展到10个。流量很高,所以我有10个实例,多个客户端与实例3-8建立websocket连接。流量减少,实例数减少到2 连接到实例3-8的客户端会发生什么情况?信号器尝试打开到特定服务器的套接字连接。因此,如果特定服务器被拆除(比如Azure应用程序服务规模缩小),则该客户端连接将被关闭 您可以在JavaScript中处理SignalR生存期事件,以便在发生这种情况时重新建立连接,从而最大限度地减少

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

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


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

信号器尝试打开到特定服务器的套接字连接。因此,如果特定服务器被拆除(比如Azure应用程序服务规模缩小),则该客户端连接将被关闭

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

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

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


这里有一个我发现对理解信号机很有用的例子。

您使用的是什么信号机背板?我使用的是服务总线