最佳實踐問題 - 如何用Java最佳地構建非常大的網站。非常大的Java EE網站是如何構建的?
我想知道如何部署自己的結構 -
一些可能的答案:
- 單耳 - 有/無會話 組成之間共享的 戰爭?
- 多重戰爭 - 有/無 會話分享?
- 多個模塊 在部署時被組裝成一個大的戰爭 ?
是否有任何記錄在案的最佳做法?
最佳實踐問題 - 如何用Java最佳地構建非常大的網站。非常大的Java EE網站是如何構建的?
我想知道如何部署自己的結構 -
一些可能的答案:
是否有任何記錄在案的最佳做法?
當你說「非常大的網站」,我認爲網站有太多的模塊和子模塊。不是交通繁忙的網站。如果您對交通繁忙的站點感興趣,請更改併發布其他問題或更新此問題。
保持它與多個EAR的/ WAR的模塊化。除非模塊接口發生變化,否則讓模塊爲每個模塊獨立演變提供了機會。如果界面有變化,則依賴模塊也需要更新。儘管不是一個網站,但其中一個例子就是Eclipse IDE。它的每個模塊都是獨立開發和維護的,並且有它自己的版本。擁有網站模塊化還可以在單獨的機器/服務器上部署各個模塊,因此可以單獨擴展。
跨EAR/WAR的會話共享將被認爲是不好的主意。這對於服務器來說太過分了。此外,它可能會引入像全局變量一樣難以調試的錯誤。但是讓用戶一次又一次地登錄每個模塊也是非常糟糕的。您需要爲此實施一些「單點登錄(SSO)」解決方案。就實例而言,www.google.com,www.gmail.com,www.orkut.com等都是谷歌服務,每項服務就像一個單獨的模塊。但是,如果您登錄到其中一項服務,然後在未登出的情況下打開另一項服務,那麼您將自動登錄。
儘管組裝成一個大型戰爭的模塊模塊是一個糟糕的主意,但每年您可以擁有所有模塊被部署在一起(不是單獨的WAR而是單獨的)並命名它。在eclipse中可以看到類似的東西。 Eclipse有時間更新每個單獨的模塊,但是每年有一個主要版本升級所有模塊(Europa,Ganymede,Galileo ...)。
每個應用程序是不同的,並有不同的要求。大型網站沒有具體的最佳做法,因爲它取決於正在開發的網站。舉例來說,會話共享不是一個好的做法,但業務需求可能會促使你這樣做。或者可以使用一些替代方法來跨模塊共享信息。
如果你能找到數據,我敢打賭你會有每個例子(或許還有更多)。
我不知道有一個統一遵循的「最佳實踐」。
您最關心的問題似乎是會話共享和部署。無論如何做,我會說會話數據應該最小化,並在WAR之間共享?請提供一位數據所有者。共享表明您已經跨模塊爲單個用例分發了功能。這將導致有一天的悲傷。
就包裝而言,我認爲包越大,代碼受到更改的影響越大。如果你可以把東西分成兩個獨立的WAR,你可以改變一個,而不要把另一個降低。這對維護更好。
不滿意任何答案? – 2010-01-21 21:56:46