Nacos配置中心

发布于 2022-04-22  2.69k 次阅读


一,Nacos服务配置中心概述

Nacos作为配置中心和Config实现的功能是一样的,但它的功能更加强大

强大功能:

  • 动态刷新:不需要Config+Bus那样还要发送请求去刷新,它在服务端修改之后可以直接刷新
  • 多环境配置:在Config其实也有,但Nacos配置文件和程序模块是强依赖的,不需要像config配置laben分支,name等,它会自动寻找匹配

 一,Nacos配置的组成部分

配置由于三部分组成:三大部分实现多环境匹配配置

  1. NameSpace:命名空间,主要由于区别部署环境的
  2. Group:分组,在命名空间下在进行区分
  3. Data ID:配置文件名称(唯一),这个名称有固定的书写格式

默认情况下:Namespace=public,Group=DEFAULT_GROUP

三大部分的主要应用:

  • Namespace:命名空间隔离,比如选择有三个环境:开发(dev),测试(test),生产(pert)可以创建三个NameSpace进行区分隔离
  • Group:主要用于把同一个NameSpace中的不同微服务划分到同一个分组里面
  • Data ID:指的是具体服务的配置文件

注:通过NameSpace,Group,DataID的主要功能是配置区别和精准匹配

二,Nacos服务端配置的简单使用

配置控制台选项:

配置详情:

 

三,客户端配置和服务端DataID的对应关系

DataID命名格式:

${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 类型。

  在Nacos客户端拉取配置时和Config不一样,后者可以指定路径如Lable,Name等,而Nacos在配置中不能直接指定,通过修改应用名称,dev和Nacos服务端的Dataid匹配然后拉取更新

二,Nacos配置中心的使用

在Nacos配置中心服务端新建一个Yaml文件:

注:如果新建是yaml文件,那么Data ID必须为yaml后缀,不能是yml不然会解析错误

① Maven依赖

<!--实现服务的注册与发现-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--实现服务配置-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

<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.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

② Bootstrap配置文件

server:
  port: 9104
spring:
  application:
    name: cloud-nacos-config
  cloud:
    nacos:
      discovery: #服务注册
        server-addr: 192.168.68.134:8848 #nacos服务端地址
      config: #服务配置
        server-addr:  192.168.68.134:8848 #配置中心地址
        file-extension: yaml #配置文件格式(yaml或者properties)
management:
  endpoints:
    web:
      exposure:
        include: "*"

③ application配置文件

spring:
  profiles: #表示环境如dev开发环境,test测试环境,prod产品环境
    active: dev

④ main启动类

@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfigMain {
    public static void main(String[] args) {
        SpringApplication.run(NacosConfigMain.class,args);
    }
}

⑤ controller

@RestController
@RefreshScope //配置文件动态刷新注解
public class ConfigClientController {

    @Value("${config.info}")
    String info;

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

测试:

 


路漫漫其修远兮,吾将上下而求索