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

Ana*_*var 8 java caching ehcache centralized hazelcast

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

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

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

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

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

jeh*_*eha 9

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

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

Map<String, Object> map = Hazelcast.getMap("xxx");
Run Code Online (Sandbox Code Playgroud)

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

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

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


San*_*osh 2

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