2012-08-30 44 views
1

我有一個aspx網站,有許多網頁接受用戶輸入,從SQL數據庫中提取數據,做一些繁重的數據處理,然後將數據呈現給用戶。重載網站

該網站是越來越大,並開始把大量的應力的服務器上。

我想要做的是,也許不同的東西一點:

服務器-A將主辦的網站,該網站將接受來自用戶的輸入,這些參數傳遞給在服務器B上運行的應用程序

服務器-B將從SQL獲取數據,執行繁重的數據處理,然後將數據集或數據對象傳遞迴網站。

這可能嗎?

+0

[也許!](http://en.wikipedia.org/wiki/Windows_Communication_Foundation) – asawyer

+0

當然有可能。但可以肯定的是,負載發生在您的Web服務器上?看起來負載實際上在你的數據庫上,除非它們在同一臺機器上運行。 – Schaliasos

+0

如果同一組輸入總是導致相同的輸出(並且在後臺沒有更新/刪除/插入事件發生,緩存解決方案也可能是一個很好的選擇) – BLSully

回答

3

當然,這被稱爲N-Tier Architecture

最明顯的事情分開是一個數據庫服務器,調整以滿足數據庫的需求(快盤,大量的RAM)和一個或多個獨立的Web服務器。

您可以通過將Web服務器和數據庫服務器之間的應用程序層上展開。應用程序層可以接受在Web層收集的用戶輸入,與數據庫交互,執行繁重的處理,並將結果返回到Web層。最典型的情況是,您將使用Windows Communication Foundation(WCF)將應用程序層的功能公開給Web服務器。應用程序服務器可能經常被調整爲具有非常快的CPU,並且可能比數據庫服務器具有更慢的磁盤和更少的內存,具體取決於他們需要做什麼。這種解決方案的優點在於,隨着應用程序負載的增長,您可以添加越來越多的相同應用程序服務器。

+0

Eric J.爲什麼你在回答問題時比我快得多?!LOL ...好的工作。 – BentOnCoding

+0

那麼,db服務器與Web服務器是分開的。我很想知道如何遠程執行大量的數據處理。 – user1481183

+0

@Robotsushi:我猜是幸運的。 –

0

基於業務模型,您需要一些緩存策略來防止每個輸入的繁重計算。 考慮一個股票網站。雖然每分鐘有很多交易,但它們不會更新每個交易的市場趨勢。他們可以根據定義的時間間隔(每小時,每天...),定義的交互次數(基於計數值)等來安排更新。 當服務器負載較低時,應該完成該任務。通過這種方式,訪問者可以在主頁上看到股票趨勢,但它足夠準確。 對於這樣的重負載情況,良好的設計是一切,因爲有時甚至昂貴的硬件也無濟於事。 如果你喜歡,分享一些關於正在做什麼的信息。

0

我會使用負載平衡器像F5

這樣你的架構不會改變, ,但我會用n層的方法來你的網站分成數據和表現層 然後負載均衡器將直接每個請求到最輕的服務器

+0

我還會注意到,數據集很好,但成本很高。不要使用數據集從1列中獲取1個值。使用數據表,而不是輕一點,並始終使用.dispose()方法釋放內存 –