我正在寻找一个 java 分布式缓存解决方案。我们希望功能喜欢:
- 分散式
- 自动发现
- 冗余
- 非集中式
我们已经分析了一个像 TerraCotta 这样的框架,它似乎是我们想要从缓存框架中获得的一切......但是,似乎需要一个中央缓存节点,这成为我们的单点故障.
除了推出我们自己的解决方案之外,还有什么想法吗?
我正在寻找一个 java 分布式缓存解决方案。我们希望功能喜欢:
我们已经分析了一个像 TerraCotta 这样的框架,它似乎是我们想要从缓存框架中获得的一切......但是,似乎需要一个中央缓存节点,这成为我们的单点故障.
除了推出我们自己的解决方案之外,还有什么想法吗?
试试Hazelcast。它是用于 Java 的开源集群和高度可扩展的数据分发平台。它满足您的所有要求。此外,它非常易于使用。
我建议使用JBossCache或EhCache(带有分布式缓存侦听器)。我都用过,我都喜欢,它们都符合你的要求。
Terracotta 最近收购了 Ehcache,并在一个简单的包中发布了 Ehcache API 与 Terracotta 集群存储的紧密集成,并且只需要几行额外的 Ehcache 配置就可以从单节点转到集群,尽管您还必须运行 Terracotta 服务器过程。
带有 Terracotta ES 版本的 Ehcache 是开源的并且可以免费使用。如果您需要支持、更多扩展、赔偿、补丁支持等,可以使用商业许可证。
Terracotta 确实使用中央服务器阵列,而不是单个中央服务器,因此没有单点故障!您可以根据需要设置任意数量的热备份服务器,并且这些备份服务器可以配置为在活动服务器出现故障时接管。使用 Terracotta FX(商业产品),您还可以使用多个活动服务器。
试试 Infinispan。Infinispan 缓存可以用作分布式缓存,也可以用作复制缓存。不存在单点故障的可能性。在分布式缓存模式下,它可以提供比 Heap Size 更多的空间。考虑集群中有 4 个节点,每个节点的堆大小为 1GB,Infinispan 用作复制缓存,那么集群的总大小为 1 Gb,但如果 Infinispan 用作分布式缓存并为每个数据项设置 2 个副本,那么总大小将为 2Gb。 http://www.jboss.org/infinispan
通常,当所有操作都在单个节点上完成时会发生单点故障,如果该节点发生故障,整个操作可能会发生故障。这个问题的解决方案是使用Replica或分区副本这样的拓扑。如果一旦节点宕机,整个操作将转移到另一个节点,而不会丢失任何类型的数据。
至于您正在寻找的功能可以在单个产品NCache中找到,正如 Umer 也提到的那样。
我迟到了,但你试过 TayzGrid,一个开源的Java 分布式缓存。也称为内存数据网格或键值存储。
它可以满足您的所有基本需求
- Distributed
- Auto-Discovery
- Redundancy
- Non-Centralized
它还管理高级故障转移场景,例如脑裂和突然重启。所有节点都是智能的,因此完全分布。
您还可以选择要使用的拓扑(分区或复制)。如果您想使用更高级的拓扑(副本分区),那么您可以购买许可证。
Terracotta还提供分布式缓存。