Ehcache 缓存同步问题-同步请求超时

Ehcache 集群配置

#此文件主要用于配置Redis和ehcache缓存
spring:
  cache:
    type: ehcache //① 缓存切换
  ehcache:
    path: e:\\temp
    default-config-name: common-cache
    cluster-enabled: true #②集群是否开启
    cluster:
      provider:
        peer-discovery: manual
        manual:
          rmi-urls: 10.1.4.16:40002  #③缓存提供者需要通知的rmi地址 多个 | 分隔
      listener:
        host-name: 10.1.4.44  #④缓存监听者地址 默认:127.0.0.1
        port: 40002   #⑤缓存监听者端口
        socket-timeout-millis: 2000 #监听socket连接超时时间 默认2000毫秒
        remote-object-port: 40001 #⑥远程对象绑定到注册表后接收调用的端口号
    regions:
      common-cache:
        #Sets the maximum objects to be held in local heap memory (0 = no limit)
        max-entries-local-heap: 0
        #Sets the maximum number elements on Disk
        max-entries-local-disk: 100000000
        time-to-idle-seconds: 1800
        time-to-live-seconds: 1800
        #this is the size to allocate the DiskStore for a spool buffer
        disk-spool-buffer-size-m-b: 30
        #设定缓存的elements是否永远不过期。如果为true,则缓存的数据始终有效,
        #如果为false那么还要根据timeToIdleSeconds,timeToLiveSeconds判断
        eternal: false
        #Sets the eviction policy
        #Least Recently Used(最近最少使用). (ehcache默认值).
        #缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,
        #那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。
        memory-store-eviction-policy: LRU
        #Sets the interval in seconds between runs of the disk expiry thread
        disk-expiry-thread-interval-seconds: 120

注意:①来实现缓存的切换,目前支持“redis”与“ehcache”这两种缓存的切换。②实现是否启用集群模式的开关,true开启,false 不开启。③缓存提供者需要通知的rmi地址 多个 | 分隔。 ④缓存监听者地址 默认:127.0.0.1 ⑤缓存监听者端口。⑥远程对象绑定到注册表后接收调用的端口号,其他节点可以通过这个端口与当前节点上的ehcache 实例进行通信,以同步缓存数据、处理缓存更新。

配置项解析

配置项
配置项说明
provider.peer-discovery
成员发现方式:manual 手动发现
provider.manual.rmi-urls
指定需要同步的缓存节点,如果存在多个用|分隔,这个需要配置除它自己以外的所有需要同步的缓存节点信息,配置n-1个节点
listener.host-name
监听者主机地址
listener.port
监听者端口
listener.socket-timeout-millis
同步缓存的Socket超时时间
listener.remote-object-port远程对象绑定到注册表后接收调用的端口号,其他节点可以通过这个端口与当前节点上的ehcache 实例进行通信,以同步缓存数据、处理缓存更新。

 问题描述:两台ehcache 组成的集群进行数据同步,两台节点之间可以PING 通,说明两个服务器之间的网络是通的。两台节点之间互相telnet 发现端口也是起来的,但是发送数据时,发送不成功。

问题一: 刚开始怀疑是因为rmi 的地址没有指定,排查后发现rmi 地址配置正常

问题二:第二个情况可能是防火墙的问题,经排查发现端口都没有开放 

iptables -L -v -n

-L: 列出所有规则
-v: 详细模式,显示更多详细信息
-n: 以数字形式显示 IP 地址和端口号

防火墙开放端口40002、40001 命令

iptables -A INPUT -p tcp --dport 40002 -j ACCEPT
iptables -A INPUT -p tcp --dport 40001 -j ACCEPT

 重新执行查询端口开发的信息

iptables -L -v -n

-L: 列出所有规则
-v: 详细模式,显示更多详细信息
-n: 以数字形式显示 IP 地址和端口号

在 INPUT 链中,查找 tcp dpt: 或 udp dpt: 后面的端口号。这些端口号表示已经开放的端口。

- tcp dpt:40002  表示 TCP 协议的 40002 端口已经开放。

- tcp dpt:40001  表示 TCP 协议的 40002 端口已经开放。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独行客-编码爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值