2012-04-06 45 views
0

我正在研究一个应用程序,该应用程序到目前为止已在单个服务器上运行在JBoss AS上。现在需要故障转移,我们正在添加另一台服务器并创建一个JBoss集群。这是问题:复制多个服务器之间的缓存数据

到目前为止,应用程序使用Hashmap来存储大约200万条从数据库中获取的记录。 现在我必须将这些数据复制到第二个节点(未来可能会添加更多节点)。 我们需要存储的数据现在更有可能是500万条记录。

我只想对存储此键/值类型数据并将其复制到所有服务器节点上的最佳方法有什么意见。

我一直在想,如果Redis或memcached会是一个合适的解决方案?如何JBoss缓存,我知道它是分布式缓存,并复制到群集中的所有节点。

这里有事情我最担心的:对性能

  1. 效果 - 复制会导致网络延迟,数据
  2. 质量 - 希望避免与陈旧的数据影响对内存的工作 -
  3. 一次数据在HashMap/Cache中加载它不应该过期。可能会添加或删除一些记录,这些更改将不得不在所有节点上进行复制。
  4. 的可扩展性 - 正如我所说...更多节点可以增加

对此有何想法受到了高度评​​价。

+0

复制一致性! Aaargh!拿起一些中间件:) – PhD 2012-04-07 06:10:09

回答

1

由于您在Java环境中工作,我建议您查看hazelcast(http://www.hazelcast.com/)。我们正在使用它来同步多个门户服务器,并且它工作得非常好!

+0

嗨csupnig。您是否将hazelcast与其他替代缓存(如JBoss Cache)进行了比较?您正在使用它的hazelcast的明显优势是什么? – sul 2012-04-08 23:14:47

+0

我们之前使用过JCSCache,并决定切换到hazelcast,因为它还支持将消息发送到其他服务器实例,进一步提高了同步功能...... – csupnig 2012-04-08 23:31:09