Nacos作为配置中心

继续我们nacos的学习记录,本篇记录一下Nacos作为配置中心,之前我们会使用Spring Cloud Config进行各服务的配置管理,配合Spring Cloud Bus来完成配置文件的实时刷新更改,使用Nacos可以代替Spring Cloud Config和Spring Cloud Bus完成配置的动态管理,各位看到此博客的小伙伴,如有不对的地方请及时通过私信我或者评论此博客的方式指出,以免误人子弟。多谢!

目录

配置管理

环境搭建

pom文件

bootstrap.yml文件

application.yml文件

启动类

动态刷新

测试类

在Nacos中添加配置信息

测试

多环境配置管理

Namespace、Group与Data Id

通过Data Id加载配置

通过Group加载配置 

通过Namespace加载配置


配置管理

环境搭建

新建alibaba-config-server模块

pom文件

    <dependencies>
        <!--nacos-config-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--nacos-discovery-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--web + actuator-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

bootstrap.yml文件

# nacos配置
server:
  port: 3377

spring:
  application:
    name: alibaba-nacos-config-server
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址
      config:
        server-addr: localhost:8848 #Nacos作为配置中心地址
        file-extension: yaml #指定yaml格式的配置


application.yml文件

spring:
  profiles:
    active: dev # 表示开发环境
    #active: test # 表示测试环境
    #active: info

启动类

加@EnableDiscoveryClient注解

动态刷新

在测试类上添加@RefreshScope

测试类

@RestController
@RefreshScope //使当前类下的配置支持Nacos的动态刷新功能。
public class ConfigClientController
{
    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/config/info")
    public String getConfigInfo() {
        return configInfo;
    }
}

在Nacos中添加配置信息

进入Nacos的配置列表进行配置信息的管理:

Data ID的配置: 

完整格式:${prefix}-${spring.profiles.active}.${file-extension} 

  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  • spring.profiles.active 即为当前环境对应的 profile 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

为了更直观,借用网上的一张图:

根据上面bootstrap.yml和application.yml文件的配置我们的dataid为 :

alibaba-nacos-config-server-dev.yaml

我们在nacos中添加配置:

测试

启动服务,访问  http://localhost:3377/config/info ,结果如下:

    

 修改配置文件version=2,再次访问  http://localhost:3377/config/info发现结果已经改变,如下:

多环境配置管理

实际开发中,通常一个系统会准备有多种环境,如dev开发环境、test测试环境、prod正式环境,如何保证指定环境启动时服务能正确读取到Nacos上相应环境的配置文件呢? 

Nacos支持基于Namespace和Group的配置分组管理,以便用户更灵活的根据自己的需要按照环境或者应用、模块等分组管理微服务以及Spring的大量配置。

Namespace、Group与Data Id

Namespace

Nacos 基于Namespace 帮助用户逻辑隔离多个命名空间,这可以帮助用户更好的管理测试、预发、生产等多环境服务和配置,让每个环境的同一个配置(如数据库数据源)可以定义不同的值,默认的命名空间是public。 

Group

每个微服务项目又都会有相应的开发环境、测试环境、正式环境等,那怎么对同一个服务不同的环境配置进行管理呢?这时就可以使用Group来进行区分,Group默认是DEFAULT_GROUP,Group可以把不同的微服务划分到同一个分组里面去。

大体意思就是说:namespace是可以用于区分部署环境的,Group和DataID逻辑上区分两个目标对象。

通过Data Id加载配置

我们使用默认空间+默认分组+dev/test两个DataID进行测试,先说下结论,在application.yml文件配置是哪个DataID就加载哪个的内容。

环境准备

新增alibaba-nacos-config-server-test.yaml配置,如下:

修改application.yml文件,修改active为test

spring:
  profiles:
    #active: dev # 表示开发环境
    active: test # 表示测试环境

测试

启动服务访问 http://localhost:3377/config/info ,此时会返回alibaba-nacos-config-server-test.yaml配置的内容:

通过Group加载配置 

环境准备

我们新建两个DataID为alibaba-nacos-config-server-info.yaml的配置,分别分到DEV_GROUP和TEST_GROUP分组中,如下:

修改application.yml文件,修改active为info

spring:
  profiles:
    #active: dev # 表示开发环境
    #active: test # 表示测试环境
    active: info

修改bootstrip.yml文件,在config下增加一条group的配置即可,可配置为DEV_GROUP或TEST_GROUP,如下:

# nacos配置
server:
  port: 3377

spring:
  application:
    name: alibaba-nacos-config-server
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址
      config:
        server-addr: localhost:8848 #Nacos作为配置中心地址
        file-extension: yaml #指定yaml格式的配置
        group: DEV_GROUP

测试

启动服务访问 http://localhost:3377/config/info ,此时会根据group配置的分组返回alibaba-nacos-config-server-info.yaml配置的内容,如上配置的group为 DEV_GROUP,返回如下:

通过Namespace加载配置

环境准备 

新建dev和test命名空间,如下:

在配置列表中找到dev命名空间并添加如下三个配置:

 默认分组、test、dev分组的内容分别为

config:
    info: username zhangsan password 123 
config:
    info: username lisi password 123 
config:
    info: username wangwu password 123 

修改application.yml文件,将active修改为dev: 

spring:
  profiles:
    active: dev # 表示开发环境
    #active: test # 表示测试环境
    #active: info

修改bootstrip.yml文件,添加 namespace: d9a7456c-369e-4d50-80a9-565decc08478,其中d9a7456c-369e-4d50-80a9-565decc08478为nacos命名空间列表中的命名空间ID,完整如下:

# nacos配置
server:
  port: 3377

spring:
  application:
    name: alibaba-nacos-config-server
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址
      config:
        server-addr: localhost:8848 #Nacos作为配置中心地址
        file-extension: yaml #指定yaml格式的配置
        group: DEV_GROUP
        namespace: d9a7456c-369e-4d50-80a9-565decc08478

测试

启动服务访问 http://localhost:3377/config/info ,此时会根据namespace和group以及active的配置返回d9a7456c-369e-4d50-80a9-565decc08478命名空间下DEV_GROUP分组的alibaba-nacos-config-server-dev.yaml配置的内容,返回如下:

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
作为配置中心Nacos可以集成到Spring Cloud Alibaba技术栈中。我们可以使用Nacos来进行服务配置。在使用Nacos作为配置中心时,我们需要在配置文件中指定Nacos Server的地址,并配置命名空间ID和应用程序名称。\[1\]\[2\]\[3\] 具体来说,我们可以使用bootstrap.properties或者bootstrap.yaml配置文件来配置Nacos Server的地址。在配置文件中,我们需要指定Nacos Server的IP地址和端口号。同时,我们还可以配置Nacos的用户名和密码以进行身份验证。\[2\] 在使用Nacos作为配置中心时,我们需要在应用程序中配置spring.application.name属性。这是因为它是构成Nacos配置管理dataId字段的一部分。在Nacos Spring Cloud中,dataId的完整格式如下:\[3\] 通过使用Nacos作为配置中心,我们可以方便地管理和更新应用程序的配置信息。这使得我们可以在运行时动态地修改配置,而无需重新部署应用程序。同时,Nacos还提供了配置的版本管理和灰度发布等功能,使得配置管理更加灵活和可靠。 #### 引用[.reference_title] - *1* *3* [使用Nacos作为配置中心](https://blog.csdn.net/weixin_66202611/article/details/128089370)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Nacos配置中心使用](https://blog.csdn.net/qq_42402854/article/details/126375127)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值