Nacos统一配置中心

SpringCloud官网在介绍Nacos的时候说过,Nacos既是注册中心又是配置中心,作为配置中心,Nacos可以简单的实现,动态管理配置文件的功能。并且Nacos的动态管理不会像Consul一样繁琐。

简单样例

下面我们以NacosClient为例,实际的业务中并没有这个概念,现实中的就是我们一个一个的微服务。

1、首先我们创建一个在我们的父项目中创建一个SpringBoot应用。

2、我们先写一个Controller 模拟业务。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.bestrookie.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
* @author bestrookie
* @version 1.0
* @date 2021/8/23 22:43
*/
@RestController
@RefreshScope
public class ConfigClientController {
@Value("${name}")
private String userName;
@GetMapping("/config")
public String configClient(){
return "ok " + userName;
}
}

可以看到,我们这个业务中有一个userName的属性,是从配置文件中获取的,如果使用传统配置文件方式的话,每次修改配置文件,就要重启服务,这样十分的不方便。

3、在Nacos的启动页面,点击配置列表,右上角 + 号

image-20210825201644617

4、根据自己的需要填写内容

image-20210825202034288

注意:文件名称必须带着相关的环境

然后回到项目中。

5、添加所需要的依赖

因为是Nacos管理,在Nacos中寻找配置文件,所以我们这个服务首先就要注册到Nacos上。所以需要Nacos Client依赖,实现配置管理的功能还需要 Nacos Config依赖,所以需要添加两个依赖

1
2
3
4
5
6
7
8
9
        <dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- nacos config-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

6、编写yaml配置。

有些必要的配置需要在yaml中编写,比如Nacos的注册,如果不注册,服务要怎么去Nacos寻找自己的配置,并且这个yaml主要起的是引导作用,引导我们的服务去Nacos上找到自己的配置文件,并且这个配置文件的名字必须是bootstrap.yaml,否则,服务会报错。

1
2
3
4
5
6
7
8
9
10
11
12
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
config:
#从那个组中获取
group: NACOS_CLIENT
#从哪个配置文件中获取
name: application-prod
#文件的后缀名字
file-extension: yaml

7、在我们的Controller上添加注解开启动态管理配置文件功能。

@RefreshScope

配置中心讲解

统一配置中心

dataId:代表完整配置文件名称 ==》 spring.cloud.nacos.config.name

完整配置文件名称 = prefix(前缀)+(env)环境+file-extension(后缀)

所以还有一种方式配置我们的而文件名

1
2
3
spring.cloud.nacos.config.prefix=
spring.profiles.active=
spring.cloud.nacos.config.file-extension=

这两种方式自己喜欢哪个用哪个

注意:dataId作为唯一表示,一旦创建不可修改,如果写错了,对不起只能删掉重新创建。

统一配置中心Nacos三个重要概念

1、命名空间:namespace 默认Nacos安装完成之后会有一个默认命名空间,这个默认命名空间的名字为 public

image-20210825210223992

当然我们也可以自己创建

image-20210825210405541

创建完成后,我们可以在页面看到

image-20210825210508339

站在项目的角度隔离每一个项目配置文件,这样便于管理 ,当然如果配置了命名空间,那么需要在配置文件中配置命名空间的名字

1
spring.cloud.nacos.config.namespace=命名空间的id

2、组:group 默认nacos 不设置group名称的时候,默认组名为 DEFAULT_GROUP

站在项目中的每一个服务的角度,隔离同一个项目的不同服务的配置

3、文件名:dataId 获取一个配置文件的唯一标识

评论