對我來說,羣集意味着系統的許多特質,但它歸結爲容錯 - 服務器,網絡和數據持久性。有鬆散和緊密耦合的系統,以及其間的所有風味。緊密耦合的系統在靠近硬件的位置執行集羣。許多舊的集羣系統與應用程序更緊密地結合在一起,通常不會意識到它們是集羣式的。
鬆耦合系統是當今的常態,完全可以在軟件層完成很大程度的容錯。羣集中的系統只能共享網絡連接以實現容錯。通常有一些專門的負載均衡器使用專門的硬件(有時候只是軟件)將請求路由到各個集羣服務器來完成此任務。
你提到的所有例子都有某種「聚類」。這將需要很長的回答來描述每個架構如何完成這個任務的詳細信息。對我而言,不同之處在於當您使用架構時「免費」的內容,以及您需要做多少工作才能使其以最佳方式運行。
如何混合和匹配您提到的解決方案取決於您的架構看起來像什麼和您的要求。你可以有一個用於本地高速持久性的Terracotta商店,其餘的用於雲。您可以使用Glassfish作爲應用程序服務器,並將Terracotta用作持久層。
這裏是我關於你提到的技術思路:
雲應用是最容易與明顯的工作。從架構角度來看,您唯一的工作就是選擇一個好的集羣提供商。當然,亞馬遜和谷歌將在容錯和數據完整性方面做到「正確」。還有很多其他球員可能做得「足夠好」並且更便宜。您將自己的API和自己的一系列限制和費用一起編程。雲應用程序的一個問題是,它很可能很難切換到新的應用程序。同樣,你可能會在雲服務器上運行一些[大部分]應用程序,並且有一些本地系統可以滿足更高的延遲要求。趨勢是將大多數生產功能放入雲中,或者至少以這種方式開始,直到你變得太大或需要某些他們無法提供的服務。
- 集羣API,如兵馬俑
- 數據庫,如Oracle( 「集羣數據庫」)
- JBoss的
這3個系統提供自己的集羣功能。他們可能會要求您執行大量機器和服務層配置,以使系統在生產環境中正常運行。我聽說關於Terracotta是一個分佈式持久層的好東西。我已經在Jboss下使用了很多Jgroups,而且運行正常可能會非常棘手,但是Jboss也可能有一些很好的默認配置/文檔。甲骨文很可能會很難正確聚合。DBA在調整Oracle配置方面賺了很多錢。
- 虛擬機(即,「該設備是虛擬機的集羣...」)
- 應用服務器,如Tomcat,GlassFish的
這些是最無定形來講,以限定集羣。一些虛擬機被認爲是「集羣」,因爲它們共享網絡硬件和電源背板,但與雲計算相比,它們確實不是集羣。如前所述,有一些非常自定義的集羣硬件解決方案,需要大量特定的領域知識才能運行良好。
我幾乎沒有Tomcat和Glassfish等應用服務器的經驗。我們在Jgroup之上有自己的集羣軟件,並完全運行Jetty。應用程序服務器本身並不是「集羣化」的,但是Jboss和Terracotta等軟件包運行在它們之上以提供集羣,並且它們具有爲其編寫集羣軟件的內部項目。
希望這可以幫助一些。
我看到已經有一個closevote這不是一個「建設性」的問題。我認爲這是一個很好的問題,因爲很多Java EE開發人員(以及一般的專業開發人員!)會和我一樣困惑。像這樣的問題,並不一定需要博士論文來回答,它可以像我列出的每個項目的1個句子一樣簡單,以及它如何與列表中的其他項目相關。我認爲像這樣的問題爲新手提供了很好的文檔,否則就不存在。 – IAmYourFaja 2012-01-09 19:19:05
我知道在集羣上有**卷**,但我無法找到任何描述可以聚集的多種類型的系統以及它們在企業環境中如何相互影響的內容。 – IAmYourFaja 2012-01-09 19:20:20
有幾件事情可以聚集在一起。你只需要瞭解什麼是聚集,這取決於上下文。與談論蘋果一樣,根據具體情況可能意味着水果或科技公司。我真的不知道我們如何能夠解釋每種類型的集羣如何在一個句子中工作。 – 2012-01-09 19:28:07