我正在寻找一种Java分布式缓存解决方案。我们希望拥有以下功能:
- 分布式
- 自动发现
- 冗余性
- 非集中式
我们已经分析了像TerraCotta这样的框架,它似乎是我们从缓存框架中想要的所有东西... 但是,似乎需要一个中央缓存节点来成为我们的单点故障。
除了推出我们自己的解决方案之外,还有什么想法吗?
我正在寻找一种Java分布式缓存解决方案。我们希望拥有以下功能:
我们已经分析了像TerraCotta这样的框架,它似乎是我们从缓存框架中想要的所有东西... 但是,似乎需要一个中央缓存节点来成为我们的单点故障。
除了推出我们自己的解决方案之外,还有什么想法吗?
试试Hazelcast。它是一个针对Java的开源集群和高度可伸缩的数据分发平台,可以满足您所有需求。此外,它非常易于使用。
Terracotta最近收购了Ehcache,并在一个简单的包中提供了Ehcache API与Terracotta集群存储的紧密集成,只需要少数额外的Ehcache配置即可从单个节点转换为集群,但您还必须运行Terracotta服务器进程。
使用Terracotta ES版的Ehcache是开源且免费的。如果您需要支持、更多扩展、赔偿、补丁支持等,则可获得商业许可证。
Terracotta确实使用阵列式中央服务器,而不是单个中央服务器,因此没有单点故障!您可以设置任意数量的热备份服务器,并且这些备份服务器可以配置为在活动服务器故障时接管。使用Terracotta FX(商业产品),您还可以使用多个活动服务器。
你看过Coherence吗?
我们发现它非常有用。虽然它不是开源的,也不便宜。
http://www.oracle.com/technology/products/coherence/index.html
- Distributed
- Auto-Discovery
- Redundancy
- Non-Centralized
通常单点故障会在所有操作都在一个节点上进行时发生,如果该节点崩溃,则整个操作可能会崩溃。解决此问题的方法是使用拓扑结构,如副本或分区副本。如果一个节点崩溃,整个操作将转移到另一个节点,而不会丢失任何数据。
就您正在寻找的功能而言,可以在单个产品NCache中找到,正如Umer所提到的那样。
Terracotta 还提供了分布式缓存。