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配置中心的配置文件信息

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

- 
命名空间namespace可以区分部署环境,Group和DataID逻辑上区分两个目标对象
 - 
三者关系图
 - 

 - 
Nacos默认的命名空间是public,namespace主要用来实现隔离,例如:开发、测试、生产我们用三个不同的namespace。
 - 
Group默认为DEFAULT_GROUP,可以把不同的微服务划分到同一个分组。
 - 
Service就是微服务,一个service可以包含多个Cluster集群,可以容灾。
 - 
Instance为集群中的实例。
 
3、创建一个客户端
父工程pom环境
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.6.5</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2021.0.1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2021.0.1.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
该客户端部分配置从nacos客户端来拉取配置

- 导入nacos-config依赖:
 
<dependencies>
    <!--value注入时要用 bootstrap-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bootstrap</artifactId>
    </dependency>
    <!--nacos服务发现-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
        <version>2.2.0.RELEASE</version>
    </dependency>
    <!--nacos配置中心-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    <!--sentinel-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    </dependency>
    <!--web-->
    <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>
        <version>2.6.5</version>
    </dependency>
    <!--热部署-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <version>2.6.5</version>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <!--lombok-->
    <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>
- yaml和bootstrap
 
使用nacos作为配置中心时,需要创建一个bootstrap.yaml和application.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}
 - 对应关系如下图所示:
 
 

- 主启动类
 
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文件的信息。
 
 

qiumin
相关文章
暂无评论...

