nacos配置中心

nacos配置中心

文章目录

    • nacos配置中心
      • 1、nacos配置中心
      • 2、nacos配置中心的相关属性
      • 3、创建一个客户端

1、nacos配置中心

nacos同spring-cloud-config一样,可以作为一个配置中心,统一的来管理配置,可以配置多套环境,各个微服务可以按需到nacos配置中心拉取相关配置,且支持动态刷新@RefreshScope

  • Spring Cloud Alibaba Reference Documentation (spring-cloud-alibaba-group.github.io)

2、nacos配置中心的相关属性

后面我们会创建一个微服务来读取nacos配置中心的配置文件信息

nacos配置中心_第1张图片

注意:这里只能是yaml不能是yml

nacos配置中心_第2张图片

  1. 命名空间namespace可以区分部署环境,Group和DataID逻辑上区分两个目标对象

  2. 三者关系图

  3. nacos配置中心_第3张图片

  4. Nacos默认的命名空间是public,namespace主要用来实现隔离,例如:开发、测试、生产我们用三个不同的namespace。

  5. Group默认为DEFAULT_GROUP,可以把不同的微服务划分到同一个分组。

  6. Service就是微服务,一个service可以包含多个Cluster集群,可以容灾。

  7. Instance为集群中的实例。

3、创建一个客户端

父工程pom环境

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-dependenciesartifactId>
            <version>2.6.5version>
            <type>pomtype>
            <scope>importscope>
        dependency>
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-dependenciesartifactId>
            <version>2021.0.1version>
            <type>pomtype>
            <scope>importscope>
        dependency>
        <dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-alibaba-dependenciesartifactId>
            <version>2021.0.1.0version>
            <type>pomtype>
            <scope>importscope>
        dependency>
    dependencies>
dependencyManagement>

该客户端部分配置从nacos客户端来拉取配置

nacos配置中心_第4张图片

  • 导入nacos-config依赖:
<dependencies>
    
    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-bootstrapartifactId>
    dependency>
    
    <dependency>
        <groupId>com.alibaba.cloudgroupId>
        <artifactId>spring-cloud-alibaba-nacos-discoveryartifactId>
        <version>2.2.0.RELEASEversion>
    dependency>
    
    <dependency>
        <groupId>com.alibaba.cloudgroupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
    dependency>
    
    <dependency>
        <groupId>com.alibaba.cloudgroupId>
        <artifactId>spring-cloud-starter-alibaba-sentinelartifactId>
    dependency>
    
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-webartifactId>
    dependency>
    
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-actuatorartifactId>
        <version>2.6.5version>
    dependency>
    
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-devtoolsartifactId>
        <version>2.6.5version>
        <scope>runtimescope>
        <optional>trueoptional>
    dependency>
    
    <dependency>
        <groupId>org.projectlombokgroupId>
        <artifactId>lombokartifactId>
        <optional>trueoptional>
    dependency>
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-testartifactId>
        <scope>testscope>
    dependency>
dependencies>
  • yaml和bootstrap

使用nacos作为配置中心时,需要创建一个bootstrap.yamlapplication.yaml两个配置文件,bootstrap.yaml的优先级高于application.yaml,加载时实现加载bootstrap.yaml中的相关配置

  • 配置文件

    • bootstrap.yaml
    server:
      port: 8403
    
    spring:
      application:
        name: cloudalibaba-config-service
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848    #注册中心地址
          config:
            server-addr: localhost:8848   #配置中心地址
            file-extension: yaml  #后缀名
            group: devGroup      #分组
            namespace: c14f418f-bede-4627-a15b-799595757619  #命名空间的id
    
    • application.yaml
    spring:
      profiles:
        active: dev   #激活的环境
    
    • 这两个配置文件合起来就是从配置中心拉取命名空间id为c14f418f-bede-4627-a15b-799595757619下的devGroup组下的cloudalibaba-config-service-dev.yaml配置文件信息
    • 文件名的默认组成:【命名空间id】 【分组】 {cloudalibaba-config-service}-{spring.profiles.active}.{file-extension}
    • 对应关系如下图所示:

nacos配置中心_第5张图片

  • 主启动类
package com.qiumin;

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

/**
 * @Author: qiumin
 * @Description: love code
 * @Date: Created in 16:18 2022/4/12
 */
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfigApplication8403 {
    public static void main(String[] args) {
        SpringApplication.run(NacosConfigApplication8403.class,args);
    }

}

  • controller
package com.qiumin;

import lombok.extern.slf4j.Slf4j;
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: qiumin
 * @Description: love code
 * @Date: Created in 16:25 2022/4/12
 */
@RestController
@Slf4j
@RefreshScope //动态刷新
public class NacosConfigController {

    @Value("${config.info}")
    private String info;     //该属性值是从nacos配置中心拉取到的配置

    @GetMapping("/testConfig")
    public String testConfig(){
        return info;
    }
}
  • 启动测试
    • 访问localhost:8403/testConfig
    • 根据写的bootstrap.yaml和application.yaml读取的是nacos配置中心的 命名空间为 qiumin下的devGroup组下的cloudalibaba-config-service-dev.yaml文件的信息。

nacos配置中心_第6张图片

qiumin

你可能感兴趣的:(spring-boot,spring,cloud,微服务框架,spring,微服务,java)