2010-07-27 307 views
6

我正在研究asp.net(新手),我想了解爲網站做什麼「負載平衡」。該網站將被多個用戶和資源(數據庫,Web服務,..)使用。ASP.Net負載平衡

如果有人可以幫助我理解asp.net網站的負載平衡概念,我會非常感激。
謝謝。

回答

1

這是什麼? 負載平衡只是指在兩臺或多臺計算機之間分配工作負載。作爲一個概念,它不是asp.net獨有的。儘管爲您的數據庫和Web服務器分別安裝不同的計算機可稱爲「負載平衡」,但它通常指的是使用多臺計算機爲單個角色服務,例如具有多個Web服務器。

你應該擔心嗎?可能不是。你已經有性能問題了嗎?你的數據庫和Web服務器在他們自己的機器上?如果您確實發現服務器資源緊張,則可能會比擴展(負載平衡)更容易擴展(功能更強大的單個機器)。現在,如果你的代碼體面,一個專用的盒子可以處理大量的流量。

+0

有一件事需要考慮「你應該擔心嗎?」問題:如果你正在爲客戶建立網站,那麼理解這些東西總是很好的。過去,我一直在通過讓客戶決定在多個負載平衡的網絡服務器上託管一個站點來解決這個問題,但從未考慮過這個問題。如果你自己不控制託管環境,理解所有可能性是很好的。 – Carson63000 2010-07-28 01:08:41

+0

的確如此。但是如果客戶有一個自稱爲新手的人試圖用這種可能性來解決問題,那麼不管他是否試圖規劃負載均衡,情況都不會很好。能夠預測這種事情並且執行得好並不是一件簡單的事情。 – Larsenal 2010-07-28 05:39:11

0

在編程意義上,負載均衡不適用於ASP.NET;它適用於嘗試將服務器負載分佈在兩臺或更多臺機器上的技術,而不是將其全部用在一臺機器上。除非你有成千上萬(幾百萬?)的用戶,否則你可能不需要擔心。

查看Wikipedia article瞭解更多信息。

0

負載平衡並非專門針對任何技術堆棧,無論是asp.net,jsp等。負載均衡是通過多臺服務器將傳入請求分發到網站。這通常使用軟件或硬件負載平衡器來完成。負載均衡器位於兩個或更多Web服務器的前端,並委派傳入流量。雖然這種技術不限於網絡服務器。 Load Balancing

享受!

-2

我想補充一點,它確實不值得擔心。當你需要一個負載均衡器的時候,你可能買得起一個neato新手,並且會話很緊張,所以你甚至不需要處理會話boogeyman。

4

您可能希望在開發時注意到一個與負載平衡相關的問題:存儲會話狀態的位置。 This MSDN article可以很好地概括你的選擇。

如果您使用「out-of-process」或「sql-server-mode」會話狀態管理實現您的asp.net系統,那麼稍後如果您決定引入負載平衡器到您部署的系統:

  1. 您的負載均衡器不需要處理會話親緣關係。正如上面提到的一個海報,所有現代負載平衡器無論如何處理,所以這是一個小問題。
  2. Web-gardens(一種IIS /服務器實現的負載平衡器)需要使用「進程外」或「sql-server-mode」會話狀態管理。所以如果你的系統已經配置好了,你可以更近一步地使用網絡花園。
0

我從來沒有使用它,但一個選項是IIS Application Request Routing

IIS應用程序請求路由(ARR) 2.0使Web服務器管理員,託管服務提供商和內容 分發網絡(CDN),以增加通過基於規則的 路由,客戶機和主機 Web應用程序的可擴展性和 可靠性命名 親和力,HTTP 服務器請求的負載均衡和分佈式磁盤緩存

0

在一個典型的Web服務器/數據庫的情況下,該數據庫幾乎是ALWA ys保證先裝入機器。這是因爲處理數據存儲需要更多的資源。在開始考慮負載均衡Web服務器之前,您需要考慮如何負載平衡數據庫。

跨多個服務器傳播一個數據庫比負載均衡Web服務器困難得多。可以使用的技術之一是sharding(或水平分區)。這是一些記錄存儲在一臺服務器上的地方,其他記錄則存放在另一臺服務器上。例如ID爲1-900000的記錄位於服務器1上,記錄900001-位於服務器2上。

與DB負載平衡相比,跨多個ASP.NET服務器分佈負載不會過於複雜。大多數會話問題可以通過使用進程外會話和/或從不直接與Application.Cache交談來輕鬆緩解。另一方面,數據負載平衡很難,需要大量的計劃和試驗和錯誤。在大多數情況下,與負載均衡DB交談需要使用支持它的ORM(例如NHibernate)或您自己的數據訪問層。原因在於您需要從使用數據庫的代碼中建立連接,以便決定與哪個DB交談的決定在一個地方處理。

0

確切的解決方案是使用存儲過程將會話保存到SQL Server中。閱讀會話調用'SessionCheck'存儲過程。