关于nacos的配置获取失败及服务发现问题的排坑记录-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

nacos配置更新未能获取到导致启动报错

排查思路

1、是否添加了nacos的启动pom依赖

参考

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

2、是否在配置文件中添加了对应的配置

排查配置文件中的配置注意配置与代码中注入的格式保持一致

3、如果是热更检查是否开启了热更

参考配置

# 开启监听和自动刷新动态感知配置变化默认值true
spring.cloud.nacos.config.refresh-enabled=true

可参考对应的代码配置

  • bean上有注解@NacosRefresh则会自动刷新
  • 使用了@Component注解则会自动刷新
  • 如果都没有效果bean上加 @RefreshScope注解配置文件中配置refresh: true一定会生效

注意spring.cloud.nacos.config.extension-configs配置格式参考

spring:
  cloud:
    nacos:
      config:
        file-extension: yml
        server-addr:
        namespace:
        group: DEFAULT_GROUP
        # 注意下面这行配置
        extension-configs:
          - data-id: base.yml
            refresh: true
          - data-id: mysqlMaster.yaml
            refresh: true
        refresh-enabled: true

4、检查nacos中的配置文件名称、命名空间是否一致以及自己本地配置的nacos的地址分组等是否正确

bootstrap.yml中配置了地址、命名空间、分组等参考如下

  cloud:
    nacos:
      config:
        server-addr: xx.xx.xxx:8888
        file-extension: yaml
        #命名空间
        namespace: wwb
        #分组
        group: DEFAULT_GROUP
        #从nacos读取配置项的超时时间
        timeout: 5000
        #长轮训超时时间
        config-long-poll-timeout: 1000
        #重试时间
        config-retry-time: 100000
        #长轮询重试次数
        max-retry: 3
        #开启监听和自动刷新
        refresh-enabled: true
        enable-remote-sync-config: true

特别注意namespace的配置对应的是nacos中配置文件的ID如图
在这里插入图片描述

5、本地配置迁移nacos时需要移除本地配置

本地的一些properties配置文件需要移除否则影响启动时的配置加载

本地服务启动nacos上未发现服务的排查经验

1、检查本地bootstrap.yml中配置的nacos地址、命名空间、分组 是否与nacos上自己预期的一致

2、检查命本地bootstrap.yml中配置的命名空间是否匹配了nacos中配置文件的ID

3、检查Nacos中配置文件的内容是否正确

参考

spring:
  cloud:
    nacos:
      discovery:

        # Nacos的服务注册地址可以配置多个逗号分隔
        server-addr: xxx.xxx.xxx:8888
        # 服务注册到Nacos上的名称一般不用配置
        #service: coupon-customer-serv
        # nacos客户端向服务端发送心跳的时间间隔时间单位其实是ms
        heart-beat-interval: 5000
        # 服务端没有接受到客户端心跳请求就将其设为不健康的时间间隔默认为15s
        # 注推荐值该值为15s即可如果有的业务线希望服务下线或者出故障时希望尽快被发现可以适当减少该值
        heart-beat-timeout: 20000
        # [注意] 这个IP地址如果更换网络后变化会导致服务调用失败建议先不要设置
        # ip: 172.0.0.888
        # 元数据部分 - 可以自己随便定制
        #metadata:
        #  mydata: abc
        # 客户端在启动时是否读取本地配置项(一个文件)来获取服务列表
        # 注推荐该值为false若改成true。则客户端会在本地的一个文件中保存服务信息当下次宕机启动时会优先读取本地的配置对外提供服务。
        naming-load-cache-at-start: false
        # 创建不同的集群
        #cluster-name: Cluster-A
        # 命名空间IDNacos通过不同的命名空间来区分不同的环境进行数据隔离
        # 服务消费时只能消费到对应命名空间下的服务。
        # [注意]需要在nacos-server中创建好namespace然后把id copy进来
        namespace: wwb
        # [注意]两个服务如果存在上下游调用关系必须配置相同的group才能发起访问
        group: DEFAULT_GROUP
        # 向注册中心注册服务默认为true
        # 如果只消费服务不作为服务提供方倒是可以设置成false减少开销
        register-enabled: true

特别关注server-addr、namespace、group的这三个配置

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6