ehcache 集群配置:
server1(192.168.1.6):

<?xml version="1.0" encoding="UTF-8"?><ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false">    <!--超过大小后长久化磁盘地位-->    <diskStore path="java.io.tmpdir"/>    <cacheManagerPeerProviderFactory            class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"            properties="peerDiscovery=manual,    rmiUrls=//192.168.1.5:40001/dcsCache"/>    <cacheManagerPeerListenerFactory            class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"            properties="hostName=192.168.1.6,port=40001, socketTimeoutMillis=2000"/>    <!-- default cache -->    <defaultCache            maxElementsInMemory="1000"            eternal="false"            timeToIdleSeconds="120"            timeToLiveSeconds="120"            overflowToDisk="false"/>    <!--自定义缓存配置-->    <cache name="dcsCache"           maxElementsInMemory="1000"           eternal="false"           timeToIdleSeconds="120"           timeToLiveSeconds="120"           overflowToDisk="false"           memoryStoreEvictionPolicy="LRU">        <cacheEventListenerFactory                class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"                properties="replicateAsynchronously=true,    replicatePuts=true,    replicateUpdates=true,    replicateUpdatesViaCopy=true,    replicateRemovals=true"/>        <bootstrapCacheLoaderFactory  class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" />    </cache></ehcache>

server2(192.168.1.5):

<?xml version="1.0" encoding="UTF-8"?><ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false">    <!--超过大小后长久化磁盘地位-->    <diskStore path="java.io.tmpdir"/>    <cacheManagerPeerProviderFactory            class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"            properties="peerDiscovery=manual,    rmiUrls=//192.168.1.6:40001/dcsCache"/>    <cacheManagerPeerListenerFactory            class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"            properties="hostName=192.168.1.5,port=40001, socketTimeoutMillis=2000"/>    <!-- default cache -->    <defaultCache            maxElementsInMemory="1000"            eternal="false"            timeToIdleSeconds="120"            timeToLiveSeconds="120"            overflowToDisk="false"/>    <!--自定义缓存配置-->    <cache name="dcsCache"           maxElementsInMemory="1000"           eternal="false"           timeToIdleSeconds="120"           timeToLiveSeconds="120"           overflowToDisk="false"           memoryStoreEvictionPolicy="LRU">        <cacheEventListenerFactory                class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"                properties="replicateAsynchronously=true,    replicatePuts=true,    replicateUpdates=true,    replicateUpdatesViaCopy=true,    replicateRemovals=true"/>        <bootstrapCacheLoaderFactory  class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" />    </cache></ehcache>

application.yml

server:  port: 8082  servlet:    context-path: /spring:  devtools:    restart:      enabled: false  cache:    jcache:      config: ehcache.xml

测试管制类:

package com.example.demo1125;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.cache.annotation.CacheEvict;import org.springframework.cache.annotation.Cacheable;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;@Controller@RequestMapping("/dcs/ec")public class EhcacheDcsController {    private static final Logger logger = LoggerFactory.getLogger(EhcacheDcsController.class);    @RequestMapping(value = "save")    @Cacheable(value="dcsCache",key="#value")    @ResponseBody    public Object save(String value) {        logger.info("logger:/dcs/ec/save...."+value);        System.out.println("/dcs/ec/save...."+value);        return value;    }    @RequestMapping(value="del")    @CacheEvict(value="dcsCache",key="#value",beforeInvocation=true)    @ResponseBody    public String del(String  value){        logger.info("logger:delete cache key...."+value);        System.out.println("delete cache key:"+value);        return "delete cache key:"+value;    }}

Demo1125Application:

package com.example.demo1125;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cache.annotation.EnableCaching;import org.springframework.scheduling.annotation.EnableScheduling;@EnableCaching@EnableScheduling@SpringBootApplicationpublic class Demo1125Application {    public static void main(String[] args) {        SpringApplication.run(Demo1125Application.class, args);    }}

pom.xml:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>2.4.0</version>        <relativePath/> <!-- lookup parent from repository -->    </parent>    <groupId>com.example</groupId>    <artifactId>demo1125</artifactId>    <version>0.0.1-SNAPSHOT</version>    <name>demo1125</name>    <description>Demo project for Spring Boot</description>    <properties>        <java.version>1.8</java.version>        <maven.compiler.source>1.8</maven.compiler.source>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    </properties>    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-cache</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-devtools</artifactId>            <scope>runtime</scope>            <optional>true</optional>        </dependency>        <dependency>            <groupId>org.projectlombok</groupId>            <artifactId>lombok</artifactId>            <optional>true</optional>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency>        <dependency>            <groupId>net.sf.ehcache</groupId>            <artifactId>ehcache</artifactId>            <version>2.10.3</version>        </dependency>    </dependencies>    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build></project>

拜访: http://192.168.1.5:8082/dcs/e...
而后再拜访 http://192.168.1.6:8082/dcs/e...
会发现, 192.168.1.5 的有输入日志
192.168.1.6 的没有输入日志

目前在windows 测试通过。
在同一台电脑上,扭转端口也测试通过。

测试不通过的状况:
1)一个部署在windows, 一个部署在 linux, windows的缓存能够同步到linux, linux上的缓存无奈同步到 windows。

2) 两个都别离部署在两台 linux 上, 相互之间无奈同步。

以上2点, 均在局域网, ping ip 是互通的。