簡體   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