【问题标题】:Ehcache Replicated Cache not synchronizing at startupEhcache 复制缓存在启动时不同步
【发布时间】:2013-06-04 00:27:53
【问题描述】:

我有一个跨两台机器复制的 ehcache 缓存。一旦两个对等点都启动,对等点就会正确地找到彼此并进行复制。但是,如果第一个对等点首先启动,并接收多个元素,然后第二个对等点稍后开始......第二个对等点永远不会看到在它还没有活动时添加的元素。

这正是顺序:

  1. 缓存 A 已启动
  2. 将“1234”添加到缓存 A
  3. 缓存 B 已启动
  4. 从缓存 B 中获取“1234” -> 未找到

我的期望:如果复制 2 个缓存,则获取现有元素会为任一缓存返回相同的值。

我的缓存元素只是原始的字符串/整数类型。

GitHub 中有一个示例:https://github.com/HamletDRC/EhcachePOC

Ehcache 配置在这里:https://github.com/HamletDRC/EhcachePOC/tree/master/src/main/resources

在示例项目中,为 ehcache 类启用了 log4j,因此您可以看到对等点确实找到彼此并进行复制,但只有自对等组启动以来添加的元素,而不是以前存在的元素。

您只需要安装 JDK 和 Maven 即可构建它。

复制:

  • 运行 ReplicatedCacheWriter
  • 等待 6 秒,让编写器创建元素 [1、2、3、4、5、6]
  • 运行 ReplicatedCacheListener
  • 侦听器找到所有在它激活后“放置”的元素,但没有找到在它激活之前“放置”的元素。

这里是ehcache.xml

<cacheManagerPeerProviderFactory
        class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
        properties="peerDiscovery=automatic, multicastGroupAddress=231.0.0.1,
                  multicastGroupPort=4446, timeToLive=32"/>

<cacheManagerPeerListenerFactory
        class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
        properties="port=40002, socketTimeoutMillis=2000"/>

...

<cacheEventListenerFactory
            class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
            properties="replicateAsynchronously=true, replicatePuts=true, replicateUpdates=true,
                    replicateUpdatesViaCopy=false, replicateRemovals=true "/>

(很明显,两个节点的Listener Port不同)

如何让缓存在启动时同步?

【问题讨论】:

  • 这句话是什么意思? (很明显,两个节点的Listener Port不一样),是不是说每个节点的port=40002应该不一样?因为我找不到节点的不同端口的任何文档,但是当我为每个侦听器集群创建不同的节点时,其他的就不行了。请帮我证明这一点。

标签: replication cluster-computing ehcache


【解决方案1】:

您的ehcache_listener.xml 中需要一个bootstrapCacheLoaderFactory。例如:

<cache name="myCache" ...>
   ...
   <bootstrapCacheLoaderFactory
            class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"
            properties="bootstrapAsynchronously=true"
            propertySeparator="," />    
</cache>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多