Java 缓存实现

Java 缓存实现,java,caching,ehcache,distributed-caching,Java,Caching,Ehcache,Distributed Caching,我已经研究了一周了,但我想了解一下我的特殊情况 2台物理服务器: 服务器A-公共战争、管理战争 服务器B-公共战争 要求: 两场战争都需要查看相同的数据 admin WAR修改/向缓存添加数据 public WARs修改缓存的其他部分/向其中添加数据 整个缓存需要驻留在每个物理服务器上的内存中(如果我在服务器A admin WAR或public WAR上添加了一些内容,它需要显示在服务器B public WAR上),因此在发生故障时,我们不会等待一半的缓存被填充 1500个活跃用户/服务器

我已经研究了一周了,但我想了解一下我的特殊情况

2台物理服务器:

  • 服务器A-公共战争、管理战争

  • 服务器B-公共战争

要求:

  • 两场战争都需要查看相同的数据

  • admin WAR修改/向缓存添加数据

  • public WARs修改缓存的其他部分/向其中添加数据

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

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

额外的硬件是不可能的

对于这种情况,有好的第三方缓存解决方案吗?似乎大多数分布式缓存系统都希望将一半的数据保留在服务器A上,另一半保留在服务器B上,这无法满足我们的故障切换性能需求

谢谢你的建议

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

他们也有故障转移或热备用的解决方案

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

你可以从这里开始

但是这项技术不是免费的。

看看

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

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

您应该查看

似乎大多数分布式缓存系统都希望保留一半的数据 在服务器A上,另一半在服务器B上,这不符合我们的故障切换要求 性能需求


不,你可以轻松调整。否则,您需要sticky Seision(您必须确切知道哪个缓存存储您的数据)。您可以选择市场上的任何解决方案EhCache、GigaSpace、GridGain等。我建议您使用JBoss Cache,因为它是您所需要的最简单的解决方案


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

我们使用它,并且对它非常满意。它声称是。对于您描述的情况,您可能会配置一个。

不适用于此问题域。这适用于销售给在现有计算机上自行托管的公司的自定义软件(现有软件的新版本,适用于现有硬件..网络托管不是选项)。你说得对。我正在阅读EhCache的复制详细信息。非常感谢。