五、Nacos配置中心

2020-07-17  本文已影响0人  神奇作手

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

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

(1)pom.xml

<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.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </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>

(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}

小总节说明

(3)测试

自带动态刷新
修改下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
(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集群和持久化配置(重要)

上一篇下一篇

猜你喜欢

热点阅读