2012-01-09 55 views
2

的方法我是比較新的Java EE和已經開始聽到許多不同類型的系統,可以進行集羣:Java和不同類型/羣集

  • 虛擬機(即「該設備是虛擬機...「)
  • 應用服務器,如Tomcat,JBoss的或GlassFish的(即」 我們正在運行羣集的JBoss ...「)
  • 集羣API,如兵馬俑
  • 集羣
  • 個數據庫,例如Oracle( 「集羣數據庫 」)
  • 雲應用(「 雲基本上是一個簇... 」)

維基百科定義「 聚類」 爲:

A 計算機集羣由一組鬆散連接的計算機組成,這些計算機一起工作,因此在很多方面它們可以被視爲單個系統。

我想知道如何聚類適用於這些「羣集類型/方法」(上面提到),以及它們如何相互關聯。例如,如果有人可以從擁有羣集應用程序中受益,他/她可能會將它們放在羣集應用程序服務器上,然後將羣集管理器加入組合(又如Terracotta)。

但因爲那句「集羣」似乎模糊/模糊的方式來使用,我沒有看到如何這些關係到他人的人,或者,如果他們連做。在此先感謝任何勇敢的StackOverflowers,他們可以幫助我理解這種交織在一起的術語!

+0

我看到已經有一個closevote這不是一個「建設性」的問題。我認爲這是一個很好的問題,因爲很多Java EE開發人員(以及一般的專業開發人員!)會和我一樣困惑。像這樣的問題,並不一定需要博士論文來回答,它可以像我列出的每個項目的1個句子一樣簡單,以及它如何與列表中的其他項目相關。我認爲像這樣的問題爲新手提供了很好的文檔,否則就不存在。 – IAmYourFaja 2012-01-09 19:19:05

+0

我知道在集羣上有**卷**,但我無法找到任何描述可以聚集的多種類型的系統以及它們在企業環境中如何相互影響的內容。 – IAmYourFaja 2012-01-09 19:20:20

+0

有幾件事情可以聚集在一起。你只需要瞭解什麼是聚集,這取決於上下文。與談論蘋果一樣,根據具體情況可能意味着水果或科技公司。我真的不知道我們如何能夠解釋每種類型的集羣如何在一個句子中工作。 – 2012-01-09 19:28:07

回答

2

對我來說,羣集意味着系統的許多特質,但它歸結爲容錯 - 服務器,網絡和數據持久性。有鬆散和緊密耦合的系統,以及其間的所有風味。緊密耦合的系統在靠近硬件的位置執行集羣。許多舊的集羣系統與應用程序更緊密地結合在一起,通常不會意識到它們是集羣式的。

鬆耦合系統是當今的常態,完全可以在軟件層完成很大程度的容錯。羣集中的系統只能共享網絡連接以實現容錯。通常有一些專門的負載均衡器使用專門的硬件(有時候只是軟件)將請求路由到各個集羣服務器來完成此任務。

你提到的所有例子都有某種「聚類」。這將需要很長的回答來描述每個架構如何完成這個任務的詳細信息。對我而言,不同之處在於當您使用架構時「免費」的內容,以及您需要做多少工作才能使其以最佳方式運行。

如何混合和匹配您提到的解決方案取決於您的架構看起來像什麼和您的要求。你可以有一個用於本地高速持久性的Terracotta商店,其餘的用於雲。您可以使用Glassfish作爲應用程序服務器,並將Terracotta用作持久層。

這裏是我關於你提到的技術思路:

  • 雲應用程序(「雲基本上是一個集羣...」)

雲應用是最容易與明顯的工作。從架構角度來看,您唯一的工作就是選擇一個好的集羣提供商。當然,亞馬遜和谷歌將在容錯和數據完整性方面做到「正確」。還有很多其他球員可能做得「足夠好」並且更便宜。您將自己的API和自己的一系列限制和費用一起編程。雲應用程序的一個問題是,它很可能很難切換到新的應用程序。同樣,你可能會在雲服務器上運行一些[大部分]應用程序,並且有一些本地系統可以滿足更高的延遲要求。趨勢是將大多數生產功能放入雲中,或者至少以這種方式開始,直到你變得太大或需要某些他們無法提供的服務。

  • 集羣API,如兵馬俑
  • 數據庫,如Oracle( 「集羣數據庫」)
  • JBoss的

這3個系統提供自己的集羣功能。他們可能會要求您執行大量機器和服務層配置,以使系統在生產環境中正常運行。我聽說關於Terracotta是一個分佈式持久層的好東西。我已經在Jboss下使用了很多Jgroups,而且運行正常可能會非常棘手,但是Jboss也可能有一些很好的默認配置/文檔。甲骨文很可能會很難正確聚合。DBA在調整Oracle配置方面賺了很多錢。

  • 虛擬機(即,「該設備是虛擬機的集羣...」)
  • 應用服務器,如Tomcat,GlassFish的

這些是最無定形來講,以限定集羣。一些虛擬機被認爲是「集羣」,因爲它們共享網絡硬件和電源背板,但與雲計算相比,它們確實不是集羣。如前所述,有一些非常自定義的集羣硬件解決方案,需要大量特定的領域知識才能運行良好。

我幾乎沒有Tomcat和Glassfish等應用服務器的經驗。我們在Jgroup之上有自己的集羣軟件,並完全運行Jetty。應用程序服務器本身並不是「集羣化」的,但是Jboss和Terracotta等軟件包運行在它們之上以提供集羣,並且它們具有爲其編寫集羣軟件的內部項目。

希望這可以幫助一些。

+0

謝謝灰色這樣一個驚人的答案! – IAmYourFaja 2012-01-11 14:09:00

1

這是一個快速的重擊它。你如何聚類取決於你的目標是什麼。以下是一些與GlassFish配合的想法。

  • 集羣可以將多個實例作爲一個進行管理,因爲它們共享一個通用配置。如果對配置進行更改(如定義新資源),則屬於集羣的所有實例都會繼承該更改。將應用程序部署到羣集將其部署到該羣集的所有實例。
  • 集羣提供服務可用性。如果一個實例失敗,則部署的應用程序在其他實例上仍然可用。
  • 羣集可以提供會話可用性。如果某個實例在用戶在購物車中放置物品時死亡,則另一個實例可以擁有處理該用戶會話的權利,以便購物車內容仍然存在。用戶從不知道後端服務器失敗。
  • 使用GlassFish,HTTP會話狀態可以由GlassFish(內置)管理,委託給一致性網格,或者應用程序可以管理狀態本身(使用兵馬俑,數據庫等)。使用內置功能的好處在於它可以開箱即用,並且經歷了壓力測試,QA等。外化的好處是,您可以獲得更好的可擴展性,因爲您可以將會話管理和應用程序邏輯分開。外部化使得JVM專注於執行業務邏輯,並使用更少的HEAP空間,因爲備份會話存在於別處。 Oracle已經對Coherence Grid進行了測試/ QA外化,並且是商用Oracle GlassFish Server的一項正式功能。如果您通過數據庫推出自己的產品,那麼您需要自己管理QA itH。