2010-04-29 72 views
2

我必須寫一個架構案例,但也有一些事情,我不知道,所以我想在下面的一些指針:商業網站架構問題

網站必須處理5K用戶同時使用。 後端由商業軟件,一些Web服務,一些消息隊列和一個數據庫組成。

我想推薦在後端使用Spring,處理不同的元素,並公開一些Rest服務。

我也想推薦檢票口的前面(不是這裏的點)。

我不知道的是:我必須安裝正面和背面在同一個tomcat服務器或兩個不同?我很想用負載平衡器(在這種情況下不需要會話複製)爲前端放置兩臺服務器。但是如果我有兩臺前置服務器,我必須有兩臺後置服務器嗎?我不想製造某種瓶頸。

根據我在this blog上讀到的內容,一個tomcat只爲第一個提到的網站處理了一筆鉅額費用。但我找不到任何有關這方面的信息,所以我不能說它看起來是否合理。

如果你能讓我高興,那麼我可以繼續在我的案例研究中,這將是非常有用的。

謝謝:)

+2

除了其他人所說的話之外,我認爲值得嘗試指定」同時「連接以何種方式」同步「。你從字面上將有5000個用戶都不斷地在做交易(因此你真正需要保持連接打開),或者你的意思是在這個意義上「同時」 web用戶在瀏覽網站的「同時」,但每個製作每2分鐘請求一次。 – 2010-04-29 19:48:22

+0

在日常工作中進行全面的負載測試,以便您儘可能早地看到符合規格的問題。 – 2010-04-29 19:57:33

+0

這是一個theoritical鍛鍊,有沒有實際的應用程序,所以我不能做任何負載測試.. @Neil:我感興趣的您的評論「同時」連接:它會做出怎樣的差異? (隨時可以真正回答) – 2010-04-29 20:20:30

回答

1

要擴大我的意見:認爲通過該客戶機向服務器請求的典型流程:

  • 它發起連接,這對於客戶端和服務器的開銷;
  • 它通過該連接發出一個或多個請求,在連接期間持有服務器上的資源;
  • 它關閉連接,通常釋放應用程序資源,但通常在連接關閉後仍會在服務器上佔用端口號達數秒。

所以在設計你的架構,你需要考慮的事情如:

  • 多少個連接可你居然同時舉行公開您的服務器上?如果您在每個連接使用一個線程使用Tomcat或其他標準服務器,則可能會遇到5,000個併發線程問題; (另一方面,基於NIO的體系結構可以處理數千個連接,而不需要每個連接一個線程);如果你處於共享環境中,你可能根本無法擁有那麼多的開放連接。
  • 如果客戶端在「會話」期間沒有保持連接打開狀態,請注意請求數量和/或每個連接的時間之間的正確平衡,同時考慮到創建和關閉連接的開銷(初始化加密的會話如果相關,在創建連接網絡的開銷,端口「擠兌」的連接關閉後一段時間)

然後更普遍的,我會說考慮:

  • 在任何如果它們被證明是瓶頸的話,您可以輕鬆地重新構建/替換特定組件?
  • 每個「黑盒子」組件/框架您使用,它解決什麼實際問題對你來說,什麼是它的侷限性? (不要只是使用Tomcat,因爲你的老闆的伴侶的最好的人告訴他們關於它的酒吧...)

我也同意其他人說的話 - 在某些時候你不需要太理論化了。設計一些合理的東西,然後運行一個測試平臺,看看它是如何處理你預期的數據量的。 (您可能沒有整個應用程序設計的,但是你可以開始製作關於「我們將有X客戶端發送請求Ÿ每ž分鐘的預測,以及這些請求的P%將採取n毫秒,寫R行到數據庫「......)

5

可能有兩個具有每一層多臺服務器的主要原因;高可用性和高性能。如果你因爲醫管局的原因沒有這樣做,那麼不幸的答案就是'這取決於'。

有兩個前端服務器不會強制你有兩個後端服務器。後端是否會承受足夠高的負載,以至於需要兩臺服務器?這將取決於它在做什麼,並且最好通過負載測試和/或分析來揭示它。對於處理5000個併發用戶的站點,雖然我的猜測是肯定的......

2

這完全取決於您的應用程序。你的課程有多重? (Wicket因在會議中投入很多而聞名)。您的後端進程有多重。

這可能是一個更好的主意來的東西,可以擴展。負載平衡器可以不斷添加新的服務器進行擴展。

測量是你能做的最好的事情。創建JMeter腳本並找出應用程序中斷的位置。從那裏建立一個計劃。

+0

這是一個理論性的練習,沒有實際的應用程序,所以我不能做任何負載測試。但是你能否多談一下我如何計劃縮放呢?謝謝 :) – 2010-04-29 20:23:10