1

我已经研究了一个星期,但我想对我的特殊情况有一些想法......

2台物理服务器:

  • 服务器 A - 公共 WAR,管理 WAR

  • 服务器 B - 公共 WAR

要求:

  • 两个 WAR 都需要查看相同的数据。

  • 管理员 WAR 修改/添加数据到缓存。

  • 公共 WAR 修改缓存的其他部分/向其中添加数据。

  • 整个缓存需要驻留在每个物理服务器的内存中(如果我在服务器 A 管理 WAR 或公共 WAR 上添加一些内容,它需要显示在服务器 B 的公共 WAR 上)所以如果发生故障,我们不会等待要填充的缓存的一半

  • 1,500 个活跃用户/服务器,绝大多数流量被读取,很少写入

额外的硬件是不可能的。

是否有适合这种情况的第三方缓存解决方案?似乎大多数分布式缓存系统都希望将一半的数据留在服务器 A 上,一半留在服务器 B 上,这无法满足我们的故障转移性能需求。

感谢您的任何想法!

4

6 回答 6

1

http://www.gigaspaces.com/有一个解决方案,它允许您创建“空间”作为复制模式下的缓存,因此每个节点都将拥有数据的精确副本。

他们还提供故障转移或热备用解决方案。

编辑:Gigaspace 不仅仅是一个共享缓存,但您可以只使用缓存解决方案。它被称为内存数据网格。他们极大地改变了他们的网页,所以我找不到确切的页面。但是,如果您搜索文档,您会找到它。

您可以从这里开始 http://www.gigaspaces.com/datagrid

但这项技术不是免费的。

于 2012-04-27T18:14:58.823 回答
1

你应该看看Redis

于 2012-04-27T18:18:51.937 回答
0

似乎大多数分布式缓存系统都希望将一半的数据留在服务器 A 上,一半留在服务器 B 上,这无法满足我们的故障转移性能需求。

不,您可以轻松调整它。否则,您需要粘性看见(您必须确切地知道,哪个缓存存储您的数据)。您可以选择市场上的任何解决方案 EhCache、GigaSpace、GridGain 等。我建议使用 JBoss Cache,恕我直言,最简单且正是您所需要的

于 2012-04-27T18:20:00.810 回答
0

查看EhCache 的复制选项

听起来您一直在搜索有关“分布式缓存”的信息,它的定义与“复制缓存”不同。分布式缓存是一个更大的缓存系统,分布在许多机器中,因此集群中任何一台机器的丢失都不会导致整个缓存下降,而只是一部分。在这种情况下,缓存的总大小可以达到(机器数量乘以每台机器的内存)。

在复制缓存中,缓存的数据在每台机器上复制,将您的总缓存大小限制为最大(任何一台机器的内存)。

于 2012-04-27T18:16:53.703 回答
0

这个领域有很多解决方案。

它们都可以配置为分布式缓存。AFAIK Infinispan 在 JBoss AS 中留下嵌入式缓存时效果最佳,最后我检查了它很难集成到其他应用程序服务器中。如果你有钱,我会推荐Terracotta 的BigMemory。它是 EhCache 的商业衍生产品,并提供了许多额外的好功能。

于 2012-04-27T18:24:34.670 回答
0

我们使用Apache Commons JCS并且对它非常满意。它声称几乎是 EHCache 的两倍。对于您所描述的情况,您可能会配置一个横向 TCP 缓存

于 2012-04-27T18:35:38.093 回答