我想使用Ehcache复制缓存,首先作为Hibernate二级缓存的后端,然后再作为任何数据的缓存。
我知道像memcached这样的分布式缓存是如何工作的,我知道它可以扩展到大型集群,但我无法找到Ehcache复制在大型集群上的表现。
我发现可以使用许多复制策略,如RMI,JGroups,JMS或Terracotta,而RMI和Terracotta似乎最受欢迎。
当我添加许多节点(如几十个节点)时,复制是否会破坏我的表现?
答案 0 :(得分:4)
完全复制的缓存仅在您的应用程序主要是读取时才有效。复制缓存无法扩展;将更新传递给其他节点将导致您的性能下降。您需要具有备份副本的分区缓存。即使对于写密集型应用程序,分区缓存也会线性扩展。
试试Hazelcast!它是Java的开源(Apache许可证)事务性,分区缓存解决方案。它带有hibernate二级缓存插件。
几十几个?没问题。 Hazelcast 100节点集群演示可以是found here。答案 1 :(得分:3)
群集扩展问题的一个很好的解决方案是“伙伴复制”的概念,其中数据仅复制到每个节点的邻居(无论您如何定义),而不是所有节点。如果没有扩展问题,您将获得故障转移。
据我所知,ehcache没有这样做。但是,JBossCache确实如此,并且与ehcache一样,也与Hibernate集成。
答案 2 :(得分:1)