一、起因

1. 环境:

nacos: 1.2.1
spring cloud: Greenwich.SR2
spring cloud alibaba: 2.1.1.RELEASE
spring boot: 2.1.6.RELEASE
jdk: 1.8

项目是微服务架构,注册中心和配置中心使用的是nacos,之前项目一切正常,在加入下面图中的一行配置之后,enable-exception-type-http-header: false为自定义的一个属性值,如果值为false,项目启动则会频繁的刷日志,如果值为true,则不会出现这个问题
在这里插入图片描述

2. 疯狂的刷日志:

在这里插入图片描述

二、分析原因

遇到这个问题,首先别想着去一些SpringCloud群里问,也别想着问一些好友,别人未必用过nacos,未必遇到过这种问题。其实这个问题不大影响服务注册与发现的使用,但是这个重复拉取nacos-server端配置文件的这个问题还是需要去解决,不然就不像是做程序员开发的了。

一开始我也觉得这个太奇怪了,我首先怀疑的就是nacos本身的bug,所以直接去GitHub上查找类似的问题,发现框架确实存在bug。

从这个官方的Issue提问中可以知道原因所在: https://github.com/alibaba/nacos/pull/2647

根本原因: nacos中的MD5和服务收到的MD5不一致,导致日志不断打印。

在这里插入图片描述

GitHubIssue导航:

三、解决办法

1. 解决方式:

nacos-server 1.2.1版本中,注意是nacos-server1.2.1版本,nacos-client端和nacos-server端MD5值计算那块有问题,已经修复了,就是还没有发布,那么解决方式有3种:

  • 自己去build develop代码,打一个新的nacos-server.jar包,具体做法是:
    拉一下最新代码,然后在develop分支上执行mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
    nacosdevelop分支代码地址:https://github.com/alibaba/nacos/tree/develop

  • nacos-server1.2.1退回到nacos-server1.2.0可以解决这个问题。

  • 设置nacos的日志级别为: com.alibaba.nacos.client.naming: warn。(不推荐)

    这里说明一下:第3种方式不治本,建议使用第一种或者第二种。

2. 我的做法:

nacos源代码,在develop分支执行: mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
在这里插入图片描述
编译后的nacos-server.jarnacos\distribution\target目录下,如果需要已经编译好的jar包可以联系我:
在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐