hibernate分布式二级缓存选项

这不是一个问题,但我正在寻找有使用以下一项或多项经验的人的意见/建议:

  • 带有RMI的EhCache
  • EhCache与JGroups
  • EhCache与兵马俑
  • Gigaspaces数据网格

一些背景知识:我们的应用程序只读取大部分内容,但有一些用户数据是可读写的,有些只是写入(也可能是合理的不准确)。 此外,如果有工具可以让我们每隔一段时间或通过管理员干预来刷新和填充缓存,那将会很不错。

关于第一个选项 – 是否有任何关于RMI开销和Java序列化性能的问题?

我从3年前开始使用EhCache进行Hibernate和应用程序级缓存。 我们将它与RMI一起用于缓存失效,它确实很好用。 如果你使用缓存进行复制,你应该关注对象图,它可能会变得非常沉重,基数高的关系。

如果你使用EhCache进行Hibernate,你可以将它用于查询缓存(这是对只读表的一个很好的改进),并且表被修改它会自动清理缓存。 使用EhCache缓存集合也是一个好主意,以避免加入子选择。

要按时间间隔清理缓存,可以实现清除缓存的EhCache缓存扩展。 我们做得很好。

问候,乔纳森。

还可以看看Hazelcast , Coherence和GemStone 。 这些是具有Query支持的分布式缓存解决方案。 他们还为Hibernate提供了现成的二级缓存插件。 Hazelcast是开源的。