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

8

目前我们有两个应用程序服务器,每个服务器都具有应用程序级别的缓存和集中式数据库服务器。为了保持两个服务器的应用程序缓存同步,我们已经在它们之间设置了JMS代理。在一个服务器上清除缓存时,它会发送消息到JMS,因为另一个服务器已注册,所以它将收到消息并根据消息内容清除相应的条目。

由于此消息系统会增加清除缓存条目的延迟,在一段时间内应用程序级别的缓存之间可能存在不一致性。

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

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

请为我们建议最佳的缓存解决方案。

2个回答

9

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

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

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

完成以上步骤后,您就完成了。使用标准 API 处理地图。相比 Ehcache/TC,Hazelcast 的配置/设置非常容易。监控 Web 应用程序也很容易使用,对您有所帮助,但有些功能缺失。对于小型集群(如您的 2 台服务器),性能应该足够。

Ehcache/Terracotta:会向您的设置中引入一个新的基础架构组件(Terracotta Server)- 这可能是一个缺点。在我的经验中,使用此设置需要学习和尝试的内容相当繁重。承诺具有企业级别的性能和监控设施。

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


1
我同意jeha的观点。此外,Hazelcast提供了一个流畅的远程线程功能,在集群操作中非常方便,并且与JMX很好地配合使用。我们对Hazelcast非常满意。 - ecodan

2

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


1
任何memcache客户端都可以用于在Hazelcast节点中缓存数据。Hazelcast支持开箱即用的memcache协议。 - Talip Ozturk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接