簡體   English   中英

ASP.Net - 在負載平衡環境中處理會話數據?

[英]ASP.Net - Handling session data in a load balanced environment?

ASP.Net如何在負載平衡環境中處理會話數據? 假設用戶在瀏覽幾頁時會發出多個請求? 是否所有請求都轉到負載均衡器中的同一台服務器?

如果他們並非都指向同一台服務器,我該怎么辦? 我該如何處理會話數據?

您需要確保您的NLB能夠啟用“粘性”會話。

如果這不是一個選項,那么您需要查看使用ASP.Net會話模式來配置會話服務器或某些后備存儲,如SQL Server。

通常,大多數負載均衡器嘗試持久連接,但出於您的目的,您無法保證它。 您最好使用類似SQL后端的東西來維護狀態或創建一個單獨的類來管理會話數據。 在任何一種情況下,您都可以重建會話數據,如果它恰好是您想要的其他時間。 我傾向於使用getter來檢查null並在必要時重建。 在實踐中,我沒有做任何指標,看看它重建的頻率,但我猜不常。 正如他們所說,最好是安全而不是抱歉。

負載均衡器通常可以配置基礎設施人員稱為sticky sessionsticky bit 在這種類型的環境中,一旦將請求分配給服務器; 它在整個會話期間與該服務器保持一致。

如果未以這種方式配置Load Balancers,ASP.NET將提供多個會話狀態提供程序。 一個非常流行的是SQL Server State Provider ,它允許將會話信息存儲在數據庫中。 為了使其工作,放置在Session對象中的所有對象必須是Serializable,以便它們可以存儲在表中。

正如我所說,還有其他幾種選擇; 例如,有些人喜歡使用不同的方法,例如memcached或類似的產品。

您可以使用Windows中的NLB或其他產品,如BIG-IP F5,HA代理,有很多選項。

使用Out-of-Proc(狀態服務器)並確保所有服務器上的machinekey設置相同。 還要確保在共享磁盤驅動器(如NAS)上執行IO。

這是一個鏈接,其中包含一些提示: 負載平衡和ASP.NET

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM