解决nacos启动后一直打印ClientWorker日志

41 篇文章 2 订阅
20 篇文章 1 订阅

nacos启动后一直打印ClientWorker日志

现象

一直打印ClientWorker日志

2020-08-24 00:57:30.977 INFO  [12932] --- [.cn_8848-public] c.a.n.client.config.impl.ClientWorker    : [fixed-nacos.itlym.cn_8848-public] [data-received] dataId=common.yml, group=DEFAULT_GROUP, tenant=public, md5=8c191cace81179b01fb745b5d027c1c8, content=xxx
2020-08-24 00:57:30.989 INFO  [12932] --- [.cn_8848-public] c.a.n.client.config.impl.ClientWorker    : [fixed-nacos.itlym.cn_8848-public] [data-received] dataId=sms-center.yml, group=DEFAULT_GROUP, tenant=public, md5=f12bc945ba0c1d39f3dea2e0977db712, content=xxx
...

原因分析

根本原因

之前看过 nacos 源码,nacos 会每 10ms 检测配置项和服务端配置项是否一致,如果不一致,则从服务端拉取最新配置。
而判断条件是本地配置的md5值与服务器的md5值对比。
因此,如果nacos-client 和 nacos-server 的 md5 算法不同,则会导致误判,从而不停刷新,导致不停地打印ClientWorker日志。

直接原因

我的nacos服务端是1.3,客户端使用了 spring-cloud-alibaba.version 中的,点开发现 nacos 客户端版本是 1.2

			<dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.1.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

这里吐槽以下,spring-cloud-alibaba-dependencies官网还有仓库都好久没更新了,容易误导使用者,浪费大量的排查时间。

其他可能的原因

namespace 设置了 publicnacos-github

这时解决最好的方式就是不要设置 namespace,否则等 nacos 发布新版本,可能是1.4

解决方案

方案一:

将自己的 client 和 nacos server 版本改为一致,如下

client端:
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>${spring-cloud-alibaba.version}</version>
    <type>pom</type>
    <scope>import</scope>
    <exclusions>
    <exclusion>
        <artifactId>com.alibaba.nacos</artifactId>
        <groupId>nacos-client</groupId>
    </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client</artifactId>
    <version>1.3.2</version>
</dependency>

方案二

由于 spring-cloud-alibaba-dependencies 留了properties指定版本这个口子,(默认<nacos.client.version>1.2.1</nacos.client.version>
故只需要在自己的pom.xml中加入

<properties>
	<nacos.client.version>1.2.1</nacos.client.version>
</properties>

注:如果引入的是 spring-cloud-starter-nacos-config 则不能通过该方案规避,因为 ``spring-cloud-alibaba-dependencies 且有硬编码问题。引入时应主动指定版本。

			 <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
                <version>1.3.0</version>
            </dependency>

方案三(适合已有系统的中间件升级方案)

自己下载 nacos-client 1.2.1 版本代码,修改其 Md5Util 的包路径为新的后,重新发布到本地或私有仓库。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值