当前位置: 首页 > news >正文

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

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: ymlserver-addr:namespace:group: DEFAULT_GROUP# 注意下面这行配置extension-configs:- data-id: base.ymlrefresh: true- data-id: mysqlMaster.yamlrefresh: truerefresh-enabled: true

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

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

  cloud:nacos:config:server-addr: xx.xx.xxx:8888file-extension: yaml#命名空间namespace: wwb#分组group: DEFAULT_GROUP#从nacos读取配置项的超时时间timeout: 5000#长轮训超时时间config-long-poll-timeout: 1000#重试时间config-retry-time: 100000#长轮询重试次数max-retry: 3#开启监听和自动刷新refresh-enabled: trueenable-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客户端向服务端发送心跳的时间间隔,时间单位其实是msheart-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

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

http://www.lryc.cn/news/206101.html

相关文章:

  • 【QT】其他常用控件1
  • 交换机/防火墙-基础配置-23.10.11
  • alibaba.fastjson的使用(四)-- Json字符 与 JsonObject 的相互转化
  • linux 主机通信 ipv6 配置
  • 【JavaEE】初识计算机网络(TCP/IP五层模型及封装和分用)
  • 在nodejs中实现实时通信的几种方式
  • 【tg】 7 GroupInstanceCustomImpl
  • kubernates 集群实战-安装K3s集群
  • 通俗介绍:什么是 Redis ?
  • 蓝桥算法赛(摆玩具)
  • vueDay04——v-if else show
  • 大数据技术学习笔记(二)—— Hadoop 运行环境的搭建
  • leetcode系列(双语)002——GO两数相加
  • 废柴勇士(据说没有人能坚持37秒)
  • buuctf_练[羊城杯2020]easyphp
  • 【Linux】安装配置虚拟机及虚拟机操作系统的安装
  • hugo-stack for github
  • 【uniapp】proxy 代理切换至线上测试地址调试接口
  • 对比Vue2和Vue3的自定义指令
  • Python:实现日历到excel文档
  • C++ 异常和错误处理机制:如何使您的程序更加稳定和可靠
  • 第1章 Java、IDEA环境部署与配置
  • 如何进行二进制文件的读写操作?
  • python实现PDF表格与文本分别导出EXCEL
  • Java开发-WebSocket
  • SpringDoc API文档工具集成SpringBoot - Swagger3
  • Java将djvu文件转成pdf
  • 【机器学习合集】激活函数合集 ->(个人学习记录笔记)
  • 【从0到1设计一个网关】什么是网关?以及为什么需要自研网关?
  • Tp框架如何使用事务和锁,还有查询缓存