nacos配置中心配置已经常见错误总结

本文详细介绍了如何在SpringBoot项目中集成Nacos,涉及基础架构、依赖管理、bootstrap.yml和application.yml配置的区别,以及如何利用Nacos进行远程配置和测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

🌟 本套mode使用的是Alibaba的2021.0.1版,springboot的2.6.3实现(适用于springboot 2.7~2.4),Nacos使用的最新的2.2.3版本,如果需要看安装nacos和基础搭建可以看我下面的博客!

nacos的安装和基本配置使用可以查看我这篇博客,或者关注下面的专栏后续会持续更新其他的Spring Cloud 组件介绍以及使用
🍅Nacos下载与安装配置(2.2.3版本示例)
🥒Spring Cloud Alibaba专栏

1、基础架构

大致架构如下:

  • 父包指定spring的版本,
  • 在util里存放共用的实体以及共用的一些依赖以及工具类
  • 然后我建立了两个product的Module用来做远程调用时轮询测试
    在这里插入图片描述
    在这里插入图片描述

2、依赖

其他的一些依赖这里就不放了,只放nacos的相关依赖,第一个是服务注册的依赖,第二个是使得加载bootstrap.yml文件在application.yml文件前面加载。第三个是读取nacos配置中心的依赖(该依赖不加无法读取到nacos配置中心的内容,但不会报错!)。第四个是用于自动读取加载和刷新nacos中最新的配置的,@NacosValue注解是依靠它
🔻:如果没有报错,并且配置也没有错,就很大可能是少了这个依赖,或者是nacos的版本和spring的版本不兼容!

        <!--        nacos 服务注册 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
<!--        加载bootstrap文件-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
<!--        读取nacos配置中心-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <!--            <version>2.2.0.RELEASE</version>-->
        </dependency>
        <!-- 自动配置Nacos相关的配置加载和刷新!:提供了@NacosValue注解使用-->
         <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>nacos-config-spring-boot-starter</artifactId>
            <version>0.2.12</version>
        </dependency>

3、配置文件

bootstrap配置文件和application配置文件使用区别:

  • bootstrap配置文件用于加载应用程序的基础配置,例如连接配置中心(如Nacos、Consul等)、配置加密等。
  • application配置文件用于加载应用程序的业务配置。

3.1、bolg-product配置文件

两个bolg-product项目配置文件除了端口其他的一样的。

3.1.1、application.yml配置文件

这里不做什么配置就简单的配置名字和端口。

server:
  port: 8203

spring:
  application:
    name: bolg-product

3.1.2、bootstrap.yml配置文件

spring:
  #   注入到nacos
  cloud:
    nacos:
      #配置中心配置
      discovery:
        namespace: a5b81f44-9ca6-42b6-99ff-a2a11626a09d
        server-addr: 192.168.0.104:8848
        username: nacos #账号
        password: nacos #密码

      #注册中心配置:主要配置,一般情况下配置前面的就可以了
      config:
        server-addr: 192.168.0.104:8848  #注册的地址
        username: nacos #账号
        password: nacos #密码
        namespace: a5b81f44-9ca6-42b6-99ff-a2a11626a09d #命名空间
        file-extension: yml #配置文件的后缀
        prefix: bolg-product #配置文件前缀 ,如果不写 默认使用${spring.application.name}的值
        group: BOLG_GROUP #组名
        auto-refresh: true # 开启自动刷新

	#配置次配置文件:在一些特殊时候可能要配置多个,
      extension-configs:
        - data-id: config-a-dev.yml #配置文件全名
          group: GROUP-A #组名
          refresh: true #是否支持热加载刷新
        - data-id: config-b-dev.yml
          group: GROUP-A
          refresh: false

        #共享配置文件 ---优先级低(比本地的低)
      shared-configs:
        - data-id: application.yml
          group: GROUP-A

3.1.3、nacos远程配置

这个地方的DataID的值是需要是:${prefix}-${spring.profiles.active}.${file-extension}
我这里写的是bolg-order.yml是因为我没有配置spring.profiles.active这个参数

${prefix}如果不写默认会去取${spring.application.name}
在这里插入图片描述

在这里插入图片描述

3.2、bolg-system

3.1.1、application.yml配置文件

因为我要用openfeign远程调用使用加了其他的一些参数配置

server:
  port: 8201
spring:
  application:
    name: bolg-order
#  profiles:
#    active: dev

#        开启负载均衡(默认是不开启的)
feign:
  circuitbreaker:
    enabled: true
#   熔断配置
hystrix:
  command:
    default:
      execution.isolation.thread.timeoutInMilliseconds: 3000 # 设置Hystrix超时时间(毫秒)
    ProductFeignClient#getProducts:
      execution.isolation.thread.timeoutInMilliseconds: 1000 # 为特定的Feign方法设置超时时间

3.1.2、bootstrap.yml配置文件

这个地方我为了对比差异尝试,配置中心和注册中心应该是分开的,他们的配置可以不设置在同一个命名空间里,这里我注册中心配置在了dev空间,而配置中心我放在了默认的public命名空间,不设置${namespace}参数就是默认的命名空间

server:
  port: 8201
spring:
  #   注入到nacos
  cloud:
    nacos:
      #配置中心配置
      discovery:
        namespace: a5b81f44-9ca6-42b6-99ff-a2a11626a09d
        server-addr: 192.168.0.104:8848
        username: nacos #账号
        password: nacos #密码

      #注册中心配置
      config:
        server-addr: 192.168.0.104:8848
        username: nacos #账号
        password: nacos #密码
#        namespace: a5b81f44-9ca6-42b6-99ff-a2a11626a09d   #不写命名空间默认是public
        file-extension: yml #配置文件的后缀
        prefix: bolg-order #配置文件前缀 ,如果不写 默认使用${spring.application.name}的值
        group: BOLG_GROUP #组名
        auto-refresh: true

3.2.3、nacos远程配置

和上面的区别是命名空间不同
在这里插入图片描述

在这里插入图片描述

4、测试

这里我就加一个测试读取nacos远程文件的接口吧

  • 使用@Value注解也可以读取到远程的内容的,因为它加载时加被加载一起加载到本地了
  • 使用@NacosValue注解需要加第四个依赖才可以读取到远程的内容
@RestController
@RequestMapping("/admin/acl/index")
@Slf4j
public class index {

    @Resource
    private ProductFeignClient productFeignClient;

    @NacosValue(value = "${bolg.name}" ,autoRefreshed = true)
    private String NacosName;

    @Value( "${bolg.name}")
    private String NacosName2;
    @Value("${server.port}")
    private Integer Port;
    /**
     * 测试订单服务是否有问题
     * @author yingfeng
     * @return * @return Result
     */
    @PostMapping("/login")
    public Result login(){
        log.info("nacos名字:{},{},本地端口:{}",NacosName,NacosName2,Port);

        HashMap<String, String> map = new HashMap<>(16);
        map.put("token","token-admin");

        System.out.println();
        return Result.ok(map);
    }

读取到的内容:可以看到如果本地和远程写了同样的内容,优先级上远程的要高一些。
具体的优先级如下:

- 配置文件优先级(由高到低):
nacos远程的配置 -> 本地application.properties -> application.yml ->本地bootstrap.properties -> bootstrap.yml

在这里插入图片描述

当使用Nacos作为配置中心时,可能会遇到一些常见错误导致无法读取配置。以下是一些可能的原因和解决方法: 1. 配置文件格式错误:确保你的配置文件的格式正确,例如使用正确的文件扩展名(如`.yml`或`.properties`)以及正确的语法。同时,确保在配置文件中正确地定义了`spring.cloud.nacos.config.file-extension`参数。 2. Nacos服务器地址配置错误:检查配置中`spring.cloud.nacos.server-addr`参数是否正确配置Nacos服务器的地址和端口。确保你可以通过该地址访问到Nacos服务器。 3. 认证信息错误:如果在Nacos服务器上启用了认证,确保`spring.cloud.nacos.username`和`spring.cloud.nacos.password`参数正确配置Nacos的用户名和密码。 4. 配置分组错误:确保你在Nacos配置中心中有正确的配置分组,并在应用程序中正确设置了`spring.cloud.nacos.config.group`参数。 5. 配置文件命名错误:在Nacos配置中心中,确保你使用了正确的`dataId`和文件扩展名来命名你的配置文件。以及确保你的应用程序中的`spring.application.name`参数与配置文件的文件名相匹配。 6. 网络连接问题:确保你的应用程序能够访问Nacos服务器,并且网络连接没有被防火墙或其他网络限制所阻止。 如果你仍然遇到问题,可以查看应用程序的日志输出,以获取更多的错误信息。另外,也可以提供具体的错误信息,我将尽力帮助你解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值