2013-03-05 43 views
1

當負載平衡器分配不同的機器來請求服務器時,將觸發什麼事件。使用負載平衡器的ASP.NET應用程序生命週期

說客戶端第一次請求一個page1,負載均衡器分配了Server1來爲請求提供服務。整個應用程序/頁面生命週期將被執行。

現在,如果客戶端A發送另一個請求獲得第2頁,但如果負載均衡分配Server2上服務的要求,整個應用程序/頁面生命週期是否會得到執行或者不執行這個時候。如果不是,那麼在這種情況下會觸發哪些事件。

轉到更具體的問題: - 它會再次執行session_start嗎?

編輯:對不起,忘了提及我使用的是Azure,並且不要求 控制設置/更改平衡器的配置。而且, 我們的管理員不會這樣做。我們在應用 發展方面。

另請注意:我們是不是允許用於proc會話。所以不能 使用sql azure來管理會話。

+0

這取決於負載平衡器配置。如果可能的話,我不會依賴會話來提高可擴展性 – Dreamwalker 2013-03-05 09:53:39

+0

@Dreamwalker,我們無法更改平衡器的配置。屆時會議的選擇是什麼?我們不能使用cookies,因爲它不是寧靜的 – 2013-03-05 10:06:24

+0

如果這是您的意思,您可以在寧靜的服務中使用cookie?如果cookie不行,您唯一可以做的事情是在您的請求中發送信息,以便識別用戶。但基本上它仍然是一個你剛從請求標題中移除它的cookie。 – Dreamwalker 2013-03-05 10:09:33

回答

0

的Windows Azure使用輪循負載均衡方案因此在進程內會話在Windows Azure中(尤其是雲服務)的一個「NO GO」。在上面提到的場景中,當客戶端請求從「服務器2」獲取服務的「page2」時,session_start事件將被觸發。

你可能想看看在Windows Azure中Windows Azure Caching功能和使用,作爲替代進程內會話管理。實際上,有一個使用此緩存的自定義會話狀態提供程序:http://msdn.microsoft.com/en-us/library/windowsazure/gg185668.aspx

+0

現在還有緩存角色http://social.technet.microsoft.com/wiki/contents/articles/11829.how-to-use-worker-cache-role-in-windows-azure.aspx – Dreamwalker 2013-03-05 11:05:56

0

至於說,爲了使會議在webfarms的機器密鑰必須在所有服務器http://msdn.microsoft.com/en-us/library/ff649308.aspx#paght000007_webfarmdeploymentconsiderations 默認Asp.net會話共享共享,在PROC是不允許太多的可擴展性(直到你不」 T移至SQL會話),但這是可以很容易地改變被淘汰進程內,與會話是從您的應用程序獨立的,解決有多個服務器,http://msdn.microsoft.com/en-us/library/ms972429.aspx的問題導致。

如果您需要擴展並有一定的現金支出,請考慮使用StateServer會話(進程外)或Memcached之類的東西。

這表示,asp.net生命週期總是得到完全按要求執行的,不管有多少服務器的農場。但是asp.net會議的工作方式保持不變(在session_start將每個會話一次總是觸發)什麼樣的變化是它的配置(SQL,StateServer的等)。 Have a look at this article,有一些信息你會發現有用的。

+0

「Session_start每次會話總會觸發一次「,這裏server2沒有保存clientA的任何會話信息,所以這意味着它會再次觸發Session_start? – 2013-03-05 10:53:30

+0

我們是否需要爲memchach安裝任何外部dll? – 2013-03-05 10:54:57

+0

@anilpurswani爲memcache檢查他們的文檔。簡而言之,Session_start:通過In-proc,你有多次開始會話。使用sqlsession/stateserver,您可以獲得1個會話和1個Session_Start(會話存儲在不同的服務器上,並且服務器場中的服務器將使用它)。 – 2013-03-05 12:36:53

1

這些話來自微軟自己:

微軟並沒有在Azure上發佈的負載均衡算法和 不作任何保證,這將是循環賽。在內部,我們 知道它不像循環賽那麼簡單。在制定最合適的 資源來指導您的請求時,需要考慮多個 因素。例如,網絡鄰近度 會被考慮在內,前提是該機器有能力爲 提供此請求,因此您可能會在算法 中看到某種偏見,具體取決於服務的位置。在算法中包含一些內部優化,以利用內部結構,網絡性能和可用容量,負載類型,平衡器(軟件/硬件)等的知識等。負載平衡 算法的目標是將您的請求路由到可用資源的最有效方式是 。產品團隊稱之爲「大致輪迴 羅賓」算法。

唯一記錄的負載平衡算法在Traffic Manager 可用於控制用戶流量分佈。

+1

+1,其中一個重要因素是「保持活力」 - http://stackoverflow.com/a/12621531/57428 – sharptooth 2013-03-05 15:09:39