0 0

Ehcache RMI集群三个节点复制的同步问题5

一个ehcache RMI集群里面有三个节点【A,B ,C】,他们依次启动,B节点不能同步A B连个节点所有数据,两端节点A,C可以同步其它两个节点所有信息。为什么?

A节点测试代码
   // PropertyConfigurator.configure("src/main/config/log4j.properties");
        CacheManager manager = new CacheManager("src/test/config/ehcache_cluster1.xml");

        // 取得Cache
        Cache cache = manager.getCache("UserCache");
        Element element = new Element("client1" + System.currentTimeMillis(), "client1");
        cache.put(element);
        while (true)
        {
            Thread.sleep(5000);
            System.out.println("\n");
            for (Object key : cache.getKeys())
            {
                System.out.println(key + ":" + cache.get(key));
            }


B节点测试代码
   CacheManager manager = new CacheManager("src/test/config/ehcache_cluster2.xml");
        Cache cache = manager.getCache("UserCache");
        Element element = new Element("client2" + System.currentTimeMillis(), "client2");
        cache.put(element);
        while (true)
        {
            Thread.sleep(5000);
            System.out.println("\n");
            for (Object key : cache.getKeys())
            {
                System.out.println(key + ":" + cache.get(key));
            }
        }


C节点测试代码
 CacheManager manager = new CacheManager("src/test/config/ehcache_cluster3.xml");
        Cache cache = manager.getCache("UserCache");

        Element element = new Element("client3" + System.currentTimeMillis(), "client3");
        cache.put(element);
        while (true)
        {
            Thread.sleep(5000);
            System.out.println("\n");
            for (Object key : cache.getKeys())
            {
                System.out.println(key + ":" + cache.get(key));
            }
        }



ehcache_cluster1.xml
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd">
	<cacheManagerPeerProviderFactory
		class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
		properties="peerDiscovery=manual, 
        rmiUrls=//localhost:40002/UserCache|rmiUrls=//localhost:40003/UserCache" />

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

	<cache name="UserCache" maxElementsInMemory="10000" >
		<cacheEventListenerFactory
			class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
			properties="replicateAsynchronously=false, replicatePuts=true,
                            replicatePutsViaCopy=true, replicateUpdates=true,
                            replicateUpdatesViaCopy=true, replicateRemovals=true,
                            asynchronousReplicationIntervalMillis=200" />
		<bootstrapCacheLoaderFactory
			class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" />
	</cache>
</ehcache>


ehcache_cluster2.xml
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd">
	<cacheManagerPeerProviderFactory
		class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
		properties="peerDiscovery=manual, 
        rmiUrls=//localhost:40001/UserCache|rmiUrls=//localhost:40003/UserCache" />

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

	<cache name="UserCache" maxElementsInMemory="10000">
		<cacheEventListenerFactory
			class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
			properties="replicateAsynchronously=false, replicatePuts=true,
                            replicatePutsViaCopy=true, replicateUpdates=true,
                            replicateUpdatesViaCopy=true, replicateRemovals=true,
                            asynchronousReplicationIntervalMillis=200" />
		<bootstrapCacheLoaderFactory
			class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" />
	</cache>
</ehcache>


ehcache_cluster3.xml
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd">
	<cacheManagerPeerProviderFactory 
		class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
		properties="peerDiscovery=manual, 
		rmiUrls=//10.114.195.218:40001/UserCache|rmiUrls=//10.114.195.218:40002/UserCache" />

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

	<cache name="UserCache" maxElementsInMemory="10000">
		<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
			properties="replicateAsynchronously=false, replicatePuts=true,
                            replicatePutsViaCopy=true, replicateUpdates=true,
                            replicateUpdatesViaCopy=true, replicateRemovals=true,
                            asynchronousReplicationIntervalMillis=200" />
		<bootstrapCacheLoaderFactory class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" />
	</cache>
</ehcache>


2013年4月25日 14:31

2个答案 按时间排序 按投票排序

0 0

换个端口就可以了,我把第二个换成了40005就可以了。

2013年5月03日 17:28
0 0

B节点不能同步A B连个节点所有数据,两端节点A,C可以同步其它两个节点所有信息。为什么?   这语句不通啊

1、有没有开防火墙 因为rmi不能走防火墙
2、测试路径中有没有空格?

2013年4月25日 18:52

相关推荐

    Ehcache RMI Replicated Cluster(RMI集群)

    Ehcache RMI Replicated Cluster 是一种分布式缓存解决方案,它使用远程方法调用(RMI)技术在多个节点之间复制数据,以实现高可用性和负载均衡。在大型分布式系统中,缓存是提高应用程序性能的关键组件,因为它可以...

    ehcache rmi集群demo

    在这个“ehcache rmi集群demo”中,我们将探讨如何将Ehcache与RMI结合,实现一个跨节点的缓存集群。 首先,Ehcache的核心概念包括缓存管理器(Cache Manager)、缓存(Cache)、缓存项(Cache Entry)等。缓存管理...

    ehcache集群方案

    Ehcache利用JGroups来实现节点间的通信和数据同步,确保即使在某个节点失败时,数据也能在集群中保持一致。 Ehcache集群实现主要涉及以下几个核心概念: 1. **复制策略**:Ehcache提供了几种复制策略,如`...

    Ehcache集群实例

    在Ehcache中,RMI用于在集群节点间交换元数据和缓存更新。RMI接口使得远程调用看起来就像本地调用一样,简化了Ehcache集群的编程模型。 4. **Ehcache集群配置**:要设置Ehcache集群,首先需要配置`ehcache.xml`或...

    Ehcache远程复制

    描述部分提到的“Ehcache集群配置手册帮助你梳理Ehcache集群部署的配置”,意味着本手册旨在为开发者提供一个详细的指南,指导如何通过远程复制技术配置Ehcache集群,以实现缓存数据的一致性和同步。在分布式系统中...

    ecacheRMIManual集群示例

    在实现Ehcache RMI集群时,还应注意性能优化,包括合理设置缓存大小、过期策略、并发级别等。此外,考虑使用网络优化技术,如使用NIO或者调整RMI超时设置,以减少网络延迟。 **7. 监控与故障排查** 部署Ehcache集群...

    ecache RMI manual

    Ehcache 是一个广泛使用的开源 Java 缓存解决方案,它支持通过 Remote Method Invocation (RMI) 实现节点间的通信和数据同步。Ehcache RMI manual discovery 模式允许开发者手动配置集群中的节点,以实现它们之间的...

    集群环境中使用_EhCache_缓存系统&Ehcache配置文件的详细说明

    在集群环境中,EhCache通过RMI(远程方法调用)或JGroups协议实现节点间的通信,保证了缓存数据的一致性。 二、EhCache在集群环境中的应用 1. 数据共享:在集群环境中,多个服务器节点可以共享同一份缓存数据,减少...

    Ehcache 简单的监控

    Ehcache分为三个主要部分:内存缓存、磁盘存储和缓存复制。内存缓存用于存储最近使用的数据,以实现快速访问;磁盘存储用于保存当内存满时的数据,保证数据不丢失;而缓存复制则是在分布式环境下,确保多节点间的...

    ehcache配置使用详解

    ehcache的分布式缓存机制通过RMI或特定API实现节点间的数据同步。集群配置通常涉及以下步骤: - 定义集群模式,如复制或分区。 - 设置集群通信协议和端口。 - 配置数据一致性策略,如写入策略和故障恢复机制。 - ...

    EHcache缓存框架

    2. **Replication(复制)**:当一个节点中的缓存项更新时,该更新会自动复制到其他节点,确保所有节点的数据同步。 3. ** Terracotta Server Array**:使用Terracotta服务器,可以实现EHcache的集群管理,提供高...

    ehcache-2.10.5.rar

    3. **分布式缓存**:Ehcache 2.10.5支持集群环境下的分布式缓存,这意味着多个服务器可以共享同一个缓存,提高系统的可扩展性。它通过RMI(Remote Method Invocation)或 Terracotta Server Array 实现跨节点的数据...

    ehcache jar包 源码

    通过RMI(远程方法调用)或Terracotta服务器,可以实现多个节点间的缓存同步,确保数据的一致性。 在源码中,你可以看到Ehcache是如何通过线程安全的方式管理缓存的,以及如何高效地进行缓存查找、插入和移除操作。...

    Ehcache经典教程实例应用-原创

    d) **JGroups**:JGroups是一个集群通信库,Ehcache利用它实现节点间的通信和一致性。 e) **Ehcache自身的复制机制**:通过内置的复制机制,实现节点间的缓存数据复制。 3. Ehcache与其他缓存框架对比: - **...

    ehcache官方教程

    2. **分布式缓存**:多个节点之间共享数据,适用于集群环境。 3. **复制缓存**:通过网络复制数据到其他节点,保持数据的一致性。 #### 二十、分布式缓存(Distributed Caching) 1. **RMI 复制**:通过 RMI 实现...

    EHCache详解_技术文档

    - **RMI**: 通过RMI协议实现远程方法调用来同步各个节点上的缓存。 - **TCP**: 使用自定义的TCP/IP协议进行通信。 - **其他插件**: 如使用Redis或Memcached作为中间件,实现数据的同步。 在ehcache.xml中可以配置...

Global site tag (gtag.js) - Google Analytics