我目前正在调查如何在ehcache中使用RMI分发选项。我已正确配置ehcache.xml,复制似乎工作正常。但是我有两个问题:
- >似乎ehcache / hibernate为每个实体创建了1个缓存。这很好,但是当复制到位时,它会创建1个线程/缓存进行复制。这是预期的行为吗?由于我们的域很大,它创建了大约300个线程,在我看来真的很大
- >另一个令人讨厌的后果是,心跳混乱似乎聚合了所有这些缓存名称。从我看到的消息应该适合1500字节,它没有,这导致我的日志中的此消息:Heartbeat不起作用。配置较少的缓存以进行复制。大小为1747但不应大于1500。关于如何改变它的任何想法?
非常感谢你的帮助
答案 0 :(得分:3)
我们已经有了一个hack,我们有自己的hibernate EhCacheProvider自定义副本,它会覆盖buildCache()来创建我们自己的具有缩写名称的Cache对象(名称的哈希值)。这大约达到了1500的限制。我们使用反向查找的哈希名称保留原始名称的哈希映射。
我们前一段时间就这样做了,并且一直在生产中使用它。
我们还查看了您的另一个问题,即拥有一个复制器线程。首先,我们复制了RMICacheReplicatorFactory并更改了createCacheEventListener()以返回我们修改的RMIAsynchronousCacheReplicator副本,方法是将replicationThread字段设置为static,然后对其进行必要的修复。我们没有彻底测试它或将其投入生产,但是再次查看它是我发现这篇文章的方式:))
答案 1 :(得分:2)
您是否认为JBossCache是EHcache的替代品? JBossCache具有分布式事务,并且经过了高负载的良好测试。它具有较低级别的复制机制,可以允许您使用UDP或TCP多播/广播复制。
答案 2 :(得分:2)
你认为EHCache超过兵马俑吗?请查看Terracotta Hibernate Integration 和Terracotta EHCache Integration
重要的是,Terracotta分布式EHCache是连贯的 - 所有节点都具有相同的缓存视图。这对我使用的其中一个应用程序非常重要。
看一看。它对我们来说就像是一种魅力。
/ RS
答案 3 :(得分:0)
jms复制是一个选项吗?
(我一直在寻找使用它与异步行为,它工作得很好。文档是错误的所以我必须检查源代码,以查看正确配置它所需的实际属性。与jms的好处是,如果你设置基础设施后,您不必配置任何防火墙等等,以便让它通过。)
答案 4 :(得分:0)
顺便说一句,ehcache-core的Ehcache 1.7.1版本已经解决了1500字节的限制。请参阅EHC-424。