2009-09-28 164 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