【问题标题】:ehcache auto-discovery (via multicast) between 2 instances on the same host同一主机上的 2 个实例之间的 ehcache 自动发现(通过多播)
【发布时间】:2018-07-04 17:42:07
【问题描述】:

我在同一台主机上运行 2 个 tomcat 实例。每个实例都运行相同的 Web 应用程序,该应用程序尝试通过 RMI 复制与一些 ehcache 缓存进行通信。我在 ehcache 中使用自动发现配置,因此我不必明确定义哪些是主机,哪些是我要复制的缓存。 ehcache 实例无法找到彼此并进行通信:

DEBUG (RMIBootstrapCacheLoader.java:211) - cache peers: []
DEBUG (RMIBootstrapCacheLoader.java:133) - Empty list of cache peers for cache org.hibernate.cache.UpdateTimestampsCache. No cache peer to bootstrap from.

如果我尝试同样的事情,但这次在单独的主机(盒子)上运行每个 tomcat 实例,那么一切都会像魅力一样工作。

是我做错了什么,还是当实例位于同一主机上时无法通过多播进行自动发现?

我的配置使用RMI Distributed Caching documentation 中提供的默认值:

<cacheManagerPeerProviderFactory
        class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
        properties="peerDiscovery=automatic, multicastGroupAddress=230.0.0.1, 
                    multicastGroupPort=4446, timeToLive=32"/>
<cacheManagerPeerListenerFactory
        class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
        properties="port=40001, socketTimeoutMillis=2000"/>

在我想要复制的每个缓存区域内:

<cacheEventListenerFactory
        class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" 
        properties="asynchronousReplicationIntervalMillis=500 " />
<bootstrapCacheLoaderFactory 
        class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" />

谢谢

【问题讨论】:

    标签: java replication rmi ehcache multicast


    【解决方案1】:

    我做错了什么,还是没有 可以通过多播进行自动发现 当实例在同一个 主持人?

    虽然我对 ehcache 不是很熟悉,但我认为这是可能的,他们实际上提供了一个至少做类似事情的示例(每个主机多个节点,尽管只有一个实例):请参阅 部分您提到的RMI Distributed Caching 文档中的完整示例

    通常您不能在每个主机上多次打开同一个 TCP 端口(此处为 40001),它绑定到分配它的第一个应用程序/服务(例如,在 Windows 上确实存在 TCP Port Sharing 之类的东西,但您d 必须特别说明这一点)。

    因此,如果您真的使用它们相同的默认配置,则尝试分配 TCP 端口 40001 的第二个 Tomcat 实例将无法这样做。当然,这应该会在 Tomcat 日志中较早的地方体现出来,您是否已经仔细查看过?

    为一个 Tomcat 实例使用另一个空闲端口应该可以解决问题;您可以在上面提到的完整示例ehcache.xml's 中看到这一点:端口号从每个节点的 40001 增加到 40006。

    【讨论】:

    • 就是这样。发生端口冲突,但日志上没有 WARN 或 ERROR(我将所有内容都设置为 ALL 级别)。非常感谢!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    相关资源
    最近更新 更多