一尘不染

具有大量实体的Ehcache / Hibernate和RMI复制

hibernate

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

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

->另一个令人讨厌的结果是,心跳消息似乎聚集了所有这些缓存名称。从我看到的消息来看,该消息应适合1500个字节,但不能容纳1500个字节,这会在日志中显示以下消息:心跳不正常。配置更少的缓存进行复制。大小为1747,但不应大于1500。有什么想法可以改变吗?

非常感谢你的帮助


阅读 226

收藏
2020-06-20

共1个答案

一尘不染

我们已经有一个黑客,我们拥有自己的hibernateEhCacheProvider的自定义副本,该副本将覆盖buildCache()来创建我们自己的具有缩短名称(名称的哈希)的Cache对象。这大约是1500的限制。我们保留原始名称的哈希图和哈希名称以供反向查找。

我们前一段时间做过,并且一直在生产中使用它。

我们还研究了您的另一个问题,即只有一个复制程序线程。首先,我们复制RMICacheReplicatorFactory并更改createCacheEventListener()以返回我们的RMIAsynchronousCacheReplicator副本,该副本是通过将ReplicationThread字段设置为静态然后对其进行必要的修复而修改的。我们没有进行全面的测试或将其投入生产,但是正在再次查看它,这就是我发现这篇文章的方式:)

2020-06-20