8

我目前正在研究如何在 ehcache 中使用 RMI 分发选项。我已经正确配置了 ehcache.xml 并且复制似乎工作正常。但是我有两个问题:

-> ehcache/hibernate 似乎为每个实体创建 1 个缓存。这很好,但是当复制到位时,它会创建 1 个线程/缓存来复制。这是预期的行为吗?由于我们的域很大,它创建了大约 300 个线程,这在我看来真的很大

-> 另一个令人讨厌的后果是心跳消息似乎聚合了所有这些缓存名称。从我看到的消息应该适合 1500 字节,但它不适合,这导致我的日志中出现这条消息:心跳不工作。为复制配置更少的缓存。大小为 1747 但不应大于 1500。关于如何改变的任何想法?

非常感谢你的帮助

4

5 回答 5

3

我们已经有了一个 hack,我们拥有自己的 hibernate EhCacheProvider 的自定义副本,它覆盖 buildCache() 以创建我们自己的具有缩短名称(名称的哈希)的 Cache 对象。这达到了 1500 的限制。我们保留原始名称的哈希图和哈希名称以进行反向查找。

我们不久前就这样做了,并且一直在生产中使用它。

我们还查看了您的其他问题,以获得单个复制器线程。首先,我们复制了 RMICacheReplicatorFactory 并更改了 createCacheEventListener() 以返回我们通过将 replicationThread 字段设为静态然后对其进行必要修复来修改的 RMIAsynchronousCacheReplicator 副本。我们没有彻底测试它或将其投入生产,但正在再次查看它,这就是我找到这篇文章的方式:)

于 2009-05-22T09:17:27.227 回答
2

您是否考虑过将 JBossCache 作为 EHcache 的替代品?JBossCache 具有分布式事务,并且经过良好的高负载测试。它具有较低级别的复制机制,可以让您使用 UDP 或 TCP 多播/广播复制。

于 2009-04-13T06:22:38.813 回答
2

您是否考虑过 EHCache 而不是 Terracotta?看看Terracotta Hibernate 集成Terracotta EHCache 集成

重要的是,Terracotta 分布式 EHCache 是一致的 - 所有节点都具有相同的缓存视图。这对于我使用的其中一个应用程序非常重要。

看一看。它对我们来说就像一个魅力。

/RS

于 2009-05-19T20:25:38.397 回答
0

jms复制是一种选择吗?

(我一直在考虑将它与异步行为一起使用,它工作得很好。文档有误,所以我不得不检查源代码以查看正确配置它所需的实际属性。jms 的好处是,如果你有那个基础设施设置您无需配置任何防火墙等即可让它通过。)

于 2009-05-02T08:07:37.687 回答
0

顺便说一句,ehcache-core 的 Ehcache 1.7.1 版本已经解决了 1500 字节的限制。参见EHC-424

于 2009-11-06T19:32:08.140 回答