我现在已经研究了一个星期,但我想对我的特殊情况有所了解......
2台物理服务器:
服务器A - 公共WAR,admin WAR
服务器B - 公共战争
要求:
两个WAR都需要查看相同的数据。
admin WAR修改/添加数据到缓存。
public WARs修改缓存的其他部分/向其添加数据。
整个缓存需要驻留在每个物理服务器的内存中(如果我在服务器A上添加一些管理员WAR或公共WAR,它需要显示在服务器B的公共WAR上),以便在发生故障时,我们不是在等待填充的一半缓存
1,500个活跃用户/服务器,绝大多数流量被读取,写得很少
其他硬件是不可能的。
这种情况是否有良好的第三方缓存解决方案?似乎大多数分布式缓存系统希望将一半的数据留在服务器A上,一半留在服务器B上,这不符合我们的故障转移性能需求。
感谢您的任何想法!
答案 0 :(得分:1)
http://www.gigaspaces.com/有一个解决方案,它允许您创建在复制模式下充当缓存的“空间”,因此每个节点都将具有精确的数据副本。
他们也有故障转移或热备的解决方案。
编辑: Gigaspace不仅仅是一个共享缓存,但您可以只使用缓存解决方案。它被称为内存数据网格。他们戏剧性地改变了他们的网页,所以我找不到确切的页面。但如果你搜索文档,你会发现它。
你可以从这里开始 http://www.gigaspaces.com/datagrid
但技术不是免费的。
答案 1 :(得分:1)
您应该查看Redis
答案 2 :(得分:0)
看看the replicated options for EhCache。
听起来你一直在搜索“分布式缓存”的信息,这些信息与“复制缓存”有着不同的定义。分布式缓存是在许多机器中分布的更大的缓存系统,因此群集中任何一台机器的丢失不会导致整个缓存,而只是一部分。在这种情况下,缓存的总大小可以达到(计算机的数量乘以每台计算机的内存)。
在复制的缓存中,缓存的数据会在每台计算机上进行复制,从而限制总缓存大小为max(任何一台计算机的内存)。
答案 3 :(得分:0)
似乎大多数分布式缓存系统都希望留下一半的数据 在服务器A上,一半在服务器B上,这不符合我们的故障转移 表现需求。
不,你可以轻松调整它。否则,您需要粘性视图(您必须确切地知道,哪个缓存存储您的数据)。您可以选择市场上的任何解决方案EhCache,GigaSpace,GridGain等。我建议使用JBoss Cache,imho最简单,最完全是您需要的
答案 4 :(得分:0)
这个领域有很多解决方案。
所有这些都可以配置为分布式缓存。当在JBoss AS中留下嵌入式缓存时,AFAIK Infinispan运行得最好,最后我检查它很难集成到其他应用服务器中。如果你有钱我会推荐来自Terracotta的BigMemory。它是EhCache的商业衍生产品,并提供了许多其他令人难以置信的功能。
答案 5 :(得分:0)
我们使用Apache Commons JCS并对此非常满意。它声称是almost twice as fast as EHCache。对于您所描述的情况,您可能会配置Lateral TCP Cache。