2009-09-28 236 views
12

我正在尋找一個java分佈式緩存解決方案。願我們的特點很喜歡:分佈式緩存

  • 分佈式
  • 自動發現
  • 冗餘
  • 非集中

我們分析像赤土一個框架,這似乎是一切,我們會曾經想要從緩存框架...然而,似乎有一箇中央緩存節點(s)是必需的,這成爲我們的單點失敗。

除推出我們自己的解決方案之外的任何想法?

+0

兵馬俑沒有SPOF - 當活動服務器死亡時,您可以使用盡可能多的熱備份。使用Terracotta FX,您甚至可以擁有多個活動空間以擴大規模。 – 2009-11-10 02:31:08

回答

0

Terracotta還提供分佈式緩存。

+0

只有商業版是不是? – cletus 2009-09-28 13:29:11

+0

如果您使用Terracotta ES版本,我不這麼認爲(請參閱http://www.terracotta.org/web/display/enterprise/Products)。 – 2009-09-28 14:26:16

4

Terracotta最近購置了Ehcache,並且在一個簡單的軟件包中有released a tight integration of the Ehcache API with the Terracotta clustered store,並且只需要一些額外的Ehcache配置從單一節點轉移到羣集,儘管您還必須運行Terracotta服務器進程。

帶有Terracotta ES版的Ehcache是​​開源的並且可以免費使用。如果你想支持,更多的縮放,賠償,補丁支持商業許可證可用等等

兵馬俑確實使用中央服務器陣列,不是一個單一的中央服務器,所以不存在單一故障點!您可以根據需要設置儘可能多的熱備份服務器,並且可以將這些備份服務器配置爲在活動服務器關閉時接管。使用Terracotta FX(商業產品),您還可以使用多個活動服務器。

+0

TerraCotta的問題是,爲了沒有單點故障,您至少需要4臺機器(或JVM): - 2 for TerraCotta - 012 JVM爲我的應用程序,但在JVM緩存集羣。 – 2009-12-16 19:16:13

14

嘗試Hazelcast。它是Java的開源集羣和高度可擴展的數據分發平臺。它滿足您的所有要求。另外它非常易於使用。當所有的操作都在一個節點上完成,如果該節點出現故障,整個操作可以走下來時

+0

如果發生網絡分區,Hazelcast是否贊同CAP theroem(https://en.wikipedia.org/wiki/CAP_theorem)中的可用性一致性? – 2018-02-21 16:22:03

1

故障通常單點。此問題的解決方案是使用拓撲如副本或分區副本。如果一旦節點關閉,整個操作將轉移到其他節點,而不會丟失任何類型的數據。

至於你正在尋找的特徵可以在一個單一的產品,NCache發現,作爲烏默爾也有提及。

4

嘗試Infinispan。 Infinispan緩存可以用作分佈式緩存,也可以用作複製緩存。 單點故障不存在。 在分佈式緩存模式下,它可以提供比堆大小更多的空間。 考慮在集羣中有4個節點,每個集羣都有1GB堆大小和Infinispan作爲複製緩存,那麼總大小集羣有1Gb,但是如果Infinispan用作分佈式緩存並且每個數據集設置2個副本,則總大小將爲2Gb。 http://www.jboss.org/infinispan

+0

嗯..好了解.. – 2013-01-16 11:01:00

1

我遲到了,但你有沒有試過TayzGrid,一個開源的java distributed cache。也稱爲內存數據網格或鍵值存儲。

它回答你所有的基本需求

- Distributed 
- Auto-Discovery 
- Redundancy 
- Non-Centralized 

它還負責管理的高級故障切換場景,如split brain和突然重新啓動。所有節點都是智能的因此完全分佈。

您還可以選擇要使用哪種拓撲(分區或複製)。如果你想使用更高級的拓撲結構(複製分區),那麼你可以使用maybe buy a license