五、Nacos配置中心

1.Nacos作为配置中心-基础配置

1.1.创建工程 cloudalibaba-config-nacos-client3377

(1)pom.xml


        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
        
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

(2)配置文件 bootstrap.yml

  Nacos通springcloud-config一样,在项目初始化时,要保证先从配置中心配置拉取,拉取配置后,才能保证项目的正常启动。
  springboot中配置文件的加载是存在优先顺序的,bootstrap优先级高于application

server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  profiles:
    active: dev
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.10.33:8848 #服务注册中心地址
      config:
        server-addr: 192.168.10.33:8848 #配置中心地址
        file-extension: yaml  #指定yaml格式的配置

(3)主启动类 NacosConfigClientMain3377.java

package com.xiaoliu;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * @Author LL
 * @Date 2020-07-07 15:05
 */
@EnableDiscoveryClient
@SpringBootApplication
public class NacosConfigClientMain3377 {
    public static void main(String[] args) {
        SpringApplication.run(NacosConfigClientMain3377.class, args);
    }
}

(4)业务类 ConfigClientController.java

package com.xiaoliu.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 LL
 * @Date 2020-07-07 15:10
 */
@RestController
@RefreshScope //实现配置自动更新
public class ConfigClientController {

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

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

(5)在Nacos中添加配置信息

(1)Nacos中的匹配规则

Nacos中的dataid的组成格式与SpringBoot配置文件中的匹配规则

最后公式:
${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}

(2)Nacos中的配置

nacos-config-client-dev

公式

${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
  • prefix默认为spring.application.name的值
  • spring.profile.active既为当前环境对应的profile,可以通过配置项spring.profile.active 来配置
  • file-exetension为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension配置

小总节说明

(3)测试

  • 启动前需要在nacos客户端-配置管理-配置管理栏目下有没有对应的yaml配置文件
  • 运行cloud-config-nacos-client3377的主启动类
  • 调用接口查看配置信息 http://localhost:3377/config/info

自带动态刷新
修改下Nacos中的yaml配置文件,再次调用查看配置的接口,就会发现配置已经刷新


2.Nacos作为配置中心-分类配置

问题:多环境多项目管理
(1)问题1
  实际开发中,通常一个系统会准备 dev开发环境、test测试环境、prod生产环境,如何保证指定环境启动时服务能正确读取到Nacos上相应环境的配置文件呢?
(2)问题2
  一个大型分布式服务系统会有多个微服务子项目,
每个微服务项目又会有相应的开发环境、测试环境、预发布环境、正式环境...... 那怎么对这些微服务配置进行管理呢?

2.1.Nacos的图形化管理界面

2.1.1.配置管理

2.1.2.命名空间

2.2.Namespace+Group+Data ID三者关系?为什么这么设计?

2.3.实例

2.3.1.DataID方案

(1)指定spring.profile.active和配置文件的DataID来使不同环境下读取不同的配置
(2)默认空间+默认分组+新建dev和test两个DataID
  • 新建dev配置DataID
  • 新建test配置DataID
(3)通过spring.profile.active属性就能进行多环境下配置文件的读取
(4)测试

http://localhost:3377/config/info
配置是什么就加载什么 test

2.3.2.Group方案

(1)通过Group实现环境区分
(2)在nacos图形界面控制台上面新建配置文件DataID
(3)bootstrap.yml

2.3.3.Namespace方案

(1)新建dev/test的Namespace
(2)回到服务管理-服务列表查看
(3)按照域名配置填写

3.Nacos集群和持久化配置(重要)

  • windows环境下集群配置:https://www.jianshu.com/p/a26e0b36ea31
  • Linux环境下集群配置:https://www.jianshu.com/p/24328a6ba316

你可能感兴趣的:(五、Nacos配置中心)