2009-11-18 59 views
4

我需要爲任務委派創建Web應用程序,監視並生成組織報告。我應該爲10,000個併發用戶實現哪個.net架構以用於Web應用程序

我在想ASP.Net和MVC應該是支持這麼多併發用戶的體系結構。有沒有其他更好的建築,我應該尋找?

什麼樣的服務器配置將需要持有這個應用程序? 在啓動此應用程序之前,如何測試連接的用戶數量,是否提供免費/經濟測試工具?

在此先感謝。 anil

+0

10,000併發(同時)是很多用戶! – Rippo 2009-11-18 07:51:01

+0

你的建議 – 2009-11-18 07:54:11

+1

我認爲Rippo詢問你是指總共10,000個用戶還是10,000個同時登錄和工作的用戶 - 這就是併發的含義。這是很多用戶。我認爲你將需要一個能夠模擬10,000個併發用戶的嚴肅實驗室。 – serialhobbyist 2009-11-18 13:11:51

回答

4

MVC與webforms的選擇與應用程序處理負載的能力幾乎沒有任何關係。您的問題將是讀取/寫入數據庫,並且不管您選擇哪一個都不會改變。 提高處理負載能力的想法:

首先也是最重要的:絕對最小值是兩臺服務器:Web服務器和數據庫服務器,它們絕不應該在同一個盒子上運行。

DB: 高效查詢數據庫,DB中的索引,非常規化表中的命中,CACHE,CACHE CACHE,在集羣中運行數據庫,哦,我提到了CACHING嗎?

處理: 如果你需要大量處理,這樣做是可以在網絡服務器上獨立的機器上運行的Web服務,使您可以擴展(購買更多的服務器,並把它們背後負載平衡器如果需要的話)

WEB: 避免需要服務器關聯(以便在任何給定時間哪個Web服務器爲給定用戶提供服務並不重要),這意味着使用DB或StateServer存儲會話,將MachineKey同步到服務器上。

使用MVC或不會對處理10,000個併發用戶的能力沒有影響,但它的,如果你希望自己的網站被單位可測試使用MVC一個巨大的好處的決定

記住:應用程序將被可測試或可憎的,您的選擇

0

對於這個大的設置,我強烈推薦使用分佈式內存緩存提供程序來分層放置在數據庫之上。我也真的建議使用一個支持內存緩存的ORM,比如NHibernate,因爲在這個規模的應用程序中,你最大的瓶頸肯定是你的數據庫。

如果單個服務器足夠強大,並且在不久的將來某個時候您很可能會增長一個盒子,那麼您很可能需要一個webfarm,這就是爲什麼在首先分配緩存,這樣您就可以擴展您的農場,而不必重新構建整個系統。

2

緩存緩存緩存:-)一個智能緩存策略將使得即使一臺服務器也有很長的路要走......除此之外,你需要找出瓶頸將會發生的地方。如果您的應用程序數據庫很大,那麼您需要考慮通過集羣或分片來擴展數據庫。如果您希望Web服務器成爲瓶頸(例如,如果您正在進行大量處理,如圖像處理等),那麼您可以使用負載平衡器在Web羣中的N個服務器之間分配請求。

+1

完全同意。通過向我們的Web應用程序添加分層緩存機制,我們將服務器負載降低了大約80%。 – Patonza 2009-11-18 20:40:56

+0

你能提出任何智能緩存策略嗎? – 2009-11-19 11:13:22

+0

這取決於數據的波動性。如果數據不經常改變,那就積極地緩存它。如果數據可能經常發生變化,那麼當數據發生變化時,您可以考慮像SqlDependencyCache一樣使其無效 – 2009-11-19 13:37:45

相關問題