Dubbo--Can not lock the registry cache file hometomcat.dubbodubbo-registry-yourZK_IP.cache,

出现的异常信息如下:

Failed to save registry store file, cause: Can not lock the registry cache file /home/tomcat/.dubbo/dubbo-registry-yourZK_IP.cache, ignore and retry later, maybe multi java process use the file, please config: dubbo.registry.file=xxx.properties, dubbo version: 2.8.4, current host: yourIP
java.io.IOException: Can not lock the registry cache file /home/tomcat/.dubbo/dubbo-registry-yourZK_IP.cache, ignore and retry later, maybe multi java process use the file, please config: dubbo.registry.file=xxx.properties

原因分析:

根据异常信息我们得知:dubbo 在保存注册中心的服务列表时失败,dubbo 会将 服务的注册列表放到“/home/tomcat/.dubbo/dubbo-registry-yourZK_IP.cache”这个目录中,这也是dubbo 默认的存放地址,当你的一台机器开启多个服务的provider的时候(通过端口不同设置),多个provider 会都把服务列表写入其中,文件写入之前会加相互排斥的“写锁”,两个线程都要对其加写锁的时候就会发生冲突,后加的加不上去,会出现这个异常。

不过这个问题也可以忽略,因为当多个provider 的注册ZK(文件中的ZK_ip)一致的时候,才会是这个情况,出现这个情况后也无妨,因为获取到该锁的线程会写入一份一模一样的服务列表。

如果想要解决这个问题可以通过设置不同注册中心的写入文件来解决:

<dubbo:registry id="zkcenter" protocol="zookeeper" address="${zookeeprt.url}" file="your_file_address"/>

多个provider设置不同的file 就不会出现加写锁加不上的现象了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值