微服务2-nacos 配置中心

1什么是配置中心

在微服务架构中,当系统从一个单体应用,被拆分成分布式系统上一个个服务节点后,配置文件也必须跟着迁移(分割),这样配置就分散了,不仅如此,分散中还包含着冗余,如下图:
微服务2-nacos 配置中心_第1张图片

2为什么要使用配置中心

配置中心将配置从各应用中剥离出来,对配置进行统一管理,应用自身不需要自己去管理配置。

Nacos是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

微服务2-nacos 配置中心_第2张图片

3 下载部署

见nacos 注册中心篇

4 实战

4.1 引入 pom

 <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

4.2 bootstrap.yml 配置

spring:
  application:
    # 应用名称
    name: mycloud-nacos

  profiles:
    # 环境配置
    active: pro

  cloud:
    nacos:
      discovery:
        # 服务注册地址
        server-addr: xxxx:8848
      config:
        # 配置中心地址 默认按照application-name去匹配配置文件
        server-addr: xxxx:8848
        # 配置文件格式
        file-extension: yaml

配置中心地址 默认按照application-name去匹配配置文件,默认读properties后缀。

4.3 nacos 平台新增配置文件

namespace:名称空间用于隔离不同租户的配置。组和数据 id 可以在不同的名称空间中相同。名称空间的典型场景是不同环境的配置隔离,例如,开发/测试环境和生产环境(配置和服务等)之间的隔离。

Group:默认情况下,当没有定义{ spring.cloud.nacos.config.group }配置时,使用 DEFAULT _ group。如果您需要定义自己的组,可以在以下属性中定义它:

spring.cloud.nacos.config.group=DEVELOP_GROUP

这个配置必须在 bootstrap.properties 文件中,Group 的值必须与 spring.cloud.nacos.config.Group 的值相同。

Data ID: 默认为 a p p l i c a t i o n . n a m e − {application.name}- application.name{spring.profiles.active}.properties
其中spring.profiles.active 是根据服务application配置文件制定的环境自动适配的
Data ID 默认采用properties后缀我们可以通过 spring.cloud.nacos.config.file-extension: yaml 来让它读取yaml 后缀。

微服务2-nacos 配置中心_第3张图片

微服务2-nacos 配置中心_第4张图片

3)
配置mycloud-nacos.yaml
微服务2-nacos 配置中心_第5张图片

配置mycloud-nacos-dev.yaml
微服务2-nacos 配置中心_第6张图片

配置 mycloud-nacos-pro.yaml
微服务2-nacos 配置中心_第7张图片

4.4 读取nacos 多环境配置

1) 在nacos 上新增配置文件

@RestController
@RequestMapping("/nacos")
@RefreshScope
@Slf4j
public class TestController {

    @Value("${age}")
    private Integer age;

    @Value("${id}")
    private Integer id;


    @RequestMapping("/testConfig")
    public void testConfig(){
        log.info("-------age:{}-----",age);
        log.info("-------id:{}-----",id);
        log.info("-------name:{}", SpringUtil.getEnvironmentProperty("name"));
    }
}

@RefreshScope 是nacos 开启配置自动刷新的注解,开启后nacos中配置跟新,服务会拉取最新配置进行更新。

  1. 当 spring.profiles.active: pro 时
    微服务2-nacos 配置中心_第8张图片

可见当指定环境时 mycloud-nacos-pro.yaml
,mycloud-nacos.yaml 配置都会被读取且前者中的相同配置会覆盖后者,完全符合springboot中多环境配置文件规则。

  1. 当 spring.profiles.active: dev 时

age 变成了 880 说明nacos的配置会跟着spring.profiles.active 变化。
微服务2-nacos 配置中心_第9张图片

4.5读取 nacos 共享配置

1)bootstrap.yaml:

server:
  port: 7001

# Spring
spring:
  application:
    # 应用名称
    name: mycloud-nacos

  profiles:
    # 环境配置
    active: pro

  cloud:
    nacos:
      discovery:
        # 服务注册地址
        server-addr: xxxx:8848
      config:
        # 配置中心地址 默认按照application-name去匹配配置文件
        server-addr: xxxx:8848
        # 配置文件格式
        file-extension: yaml
#        共享配置
        shared-configs:	 common-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

  1. nacos上新增配置文件 common-dev.yaml
    微服务2-nacos 配置中心_第10张图片

3)设置spring.profiles.active: dev

4)结果

address 已经能够读到,但是我们发现id 并不是common-dev.yaml 中设置的8600 而是mycloud-nacos.yaml 中设置的 1 ,这说明共享配置的优先级比较低。
微服务2-nacos 配置中心_第11张图片

你可能感兴趣的:(微服务,微服务,java,spring,cloud,nacos,配置中心)