集中缓存服务器。 (Ehcache或Hazelcast)

时间:2011-08-04 13:13:33

标签: java caching ehcache centralized hazelcast

目前我们有2个应用程序服务器,每个都有应用程序级缓存,并具有集中式数据库服务器。为了使两个服务器应用程序缓存保持同步,我们在其间设置了JMS代理。在一个向JMS发送消息的服务器上清除缓存,因为其他服务器已注册,因此它将获取消息并根据消息内容清除相关条目。

由于此消息传递系统在清除缓存条目时增加了延迟,因此在一段时间内应用程序级缓存之间将存在不一致。

因此,我们考虑使用集中式缓存服务器来避免所有这些额外工作,以使所有缓存保持同步。

我们正在考虑使用 Ehcache / Terracotta Hazelcast ,这些缓存保存结果集,锁信息和一些系统特定的变量。

请为我们推荐最佳缓存解决方案。

2 个答案:

答案 0 :(得分:9)

我可能无法为您推荐最佳解决方案,但我会尝试提供一些想法:

Hazelcast :提供非常易于使用的分布式地图(其他很多东西值得一看 - 分布式SQL查询非常简洁):

Map<String, Object> map = Hazelcast.getMap("xxx");

你完成了。使用标准API在地图上工作。 Hazelcast配置/设置非常简单(与Ehcache / TC相比)。监控webapp也很容易使用和有用,但有些东西缺失。对于小型集群(如2台服务器)而言,性能应该足够了。

Ehcache / Terracotta :会为您的设置(Terracotta Server)引入新的基础架构组件 - 可能是一个缺点。根据我的经验,使用此设置非常强烈,需要学习和尝试。承诺是企业级的性能和监控设施。

如果您没有极高的性能要求,我个人会选择Hazelcast并避免Ehcache / TC的复杂性。

答案 1 :(得分:1)

我们一直在使用集中式Memcached服务器(作为Hibernate二级缓存和其他缓存要求),并且它对我们很有用。我们正在使用Memcached和XMemcached客户端,到目前为止它的工作没有任何问题。