2010-01-05 37 views
2

最佳實踐問題 - 如何用Java最佳地構建非常大的網站。非常大的Java EE網站是如何構建的?

我想知道如何部署自己的結構 -

一些可能的答案:

  • 單耳 - 有/無會話 組成之間共享的 戰爭?
  • 多重戰爭 - 有/無 會話分享?
  • 多個模塊 在部署時被組裝成一個大的戰爭 ?

是否有任何記錄在案的最佳做法?

+0

不滿意任何答案? – 2010-01-21 21:56:46

回答

1

當你說「非常大的網站」,我認爲網站有太多的模塊和子模塊。不是交通繁忙的網站。如果您對交通繁忙的站點感興趣,請更改併發布其他問題或更新此問題。

保持它與多個EAR的/ WAR的模塊化。除非模塊接口發生變化,否則讓模塊爲每個模塊獨立演變提供了機會。如果界面有變化,則依賴模塊也需要更新。儘管不是一個網站,但其中一個例子就是Eclipse IDE。它的每個模塊都是獨立開發和維護的,並且有它自己的版本。擁有網站模塊化還可以在單​​獨的機器/服務器上部署各個模塊,因此可以單獨擴展。

跨EAR/WAR的會話共享將被認爲是不好的主意。這對於服務器來說太過分了。此外,它可能會引入像全局變量一樣難以調試的錯誤。但是讓用戶一次又一次地登錄每個模塊也是非常糟糕的。您需要爲此實施一些「單點登錄(SSO)」解決方案。就實例而言,www.google.com,www.gmail.com,www.orkut.com等都是谷歌服務,每項服務就像一個單獨的模塊。但是,如果您登錄到其中一項服務,然後在未登出的情況下打開另一項服務,那麼您將自動登錄。

儘管組裝成一個大型戰爭的模塊模塊是一個糟糕的主意,但每年您可以擁有所有模塊被部署在一起(不是單獨的WAR而是單獨的)並命名它。在eclipse中可以看到類似的東西。 Eclipse有時間更新每個單獨的模塊,但是每年有一個主要版本升級所有模塊(Europa,Ganymede,Galileo ...)。

每個應用程序是不同的,並有不同的要求。大型網站沒有具體的最佳做法,因爲它取決於正在開發的網站。舉例來說,會話​​共享不是一個好的做法,但業務需求可能會促使你這樣做。或者可以使用一些替代方法來跨模塊共享信息。

2

如果你能找到數據,我敢打賭你會有每個例子(或許還有更多)。

我不知道有一個統一遵循的「最佳實踐」。

您最關心的問題似乎是會話共享和部署。無論如何做,我會說會話數據應該最小化,並在WAR之間共享?請提供一位數據所有者。共享表明您已經跨模塊爲單個用例分發了功能。這將導致有一天的悲傷。

就包裝而言,我認爲包越大,代碼受到更改的影響越大。如果你可以把東西分成兩個獨立的WAR,你可以改變一個,而不要把另一個降低。這對維護更好。