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


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

    排查思路:

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

    参考:

            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            </dependency>
    
    • 1
    • 2
    • 3
    • 4

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

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

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

    参考配置:

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

    可参考对应的代码配置:

    • 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    特别注意,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
            # 命名空间ID,Nacos通过不同的命名空间来区分不同的环境,进行数据隔离,
            # 服务消费时只能消费到对应命名空间下的服务。
            # [注意]需要在nacos-server中创建好namespace,然后把id copy进来
            namespace: wwb
            # [注意]两个服务如果存在上下游调用关系,必须配置相同的group才能发起访问
            group: DEFAULT_GROUP
            # 向注册中心注册服务,默认为true
            # 如果只消费服务,不作为服务提供方,倒是可以设置成false,减少开销
            register-enabled: true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

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

  • 相关阅读:
    思维的技术:如何破解工作生活中的两难冲突?
    【工作记录】MQTT介绍、安装部署及springboot集成@20230912
    qt学习总结之探索Qt的安装目录结构
    一句话总结设计模式
    如何对Map集合的key进行大小写转换?
    C++初阶(vector容器+模拟实现)
    【Flink CDC(一)】实现mysql整表与增量读取
    2024.4.2每日一题
    计算机网络-数据链路层(以太网(802.3局域网,10BASE-T以太网,适配器,MAC地址,以太网MAC帧格式))
    scala入门
  • 原文地址:https://blog.csdn.net/qq_33333654/article/details/134006172