我正在参加「启航计划」

SpringCloud之Nacos作为装备中心

nacos作为注册中心

nacos作为注册中心请参阅

Nacos作为装备中心

1、引进依靠

<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>
</dependencies>

YML的类别

  • Nacosspringcloud-config一样,在项目初始化时,要保证先从装备中心进行装备拉取,拉取装备之后,才能保证项目的正常发动。 `
  • springboot中装备文件的加载是存在优先级顺序的,bootstrap优先级高于application

留意点 在Cloud高版别中(例如:2021.0.3),你可能还需求引进以下依靠

<!-- bootstrap 发动器:处理Cloud高版别下不先加载bootstrap.properties问题
    see github issue:https://github.com/alibaba/spring-cloud-alibaba/issues/1994
 -->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

2、装备Bootstrap.yml

# nacos装备
server:
  port: 3377
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址
      config:
        server-addr: localhost:8848 #Nacos作为装备中心地址
        file-extension: yaml #指定yaml格局的装备
        group: TEST_GROUP
        namespace: ea7be215-37d0-4175-958c-a8af3545f115
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}

同享装备 & 多装备文件

spring:
  application:
    name: nacos-config-multi
  main:
    allow-bean-definition-overriding: true
  cloud:
    nacos:
      username: ${nacos.username}
      password: ${nacos.password}
      config:
        server-addr: ${nacos.server-addr}
        namespace: ${nacos.namespace}
        # 用于同享的装备文件
        shared-configs:
          - data-id: common-mysql.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP
          - data-id: common-redis.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP
          - data-id: common-base.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP
        # 常规装备文件
        # 优先级大于 shared-configs,在 shared-configs 之后加载
        extension-configs:
          - data-id: nacos-config-advanced.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP
            refresh: true
          - data-id: nacos-config-base.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP
            refresh: true

3、装备application.yml

spring:
  profiles:
    active: dev # 表明开发环境

4、Controller测验接口

/**
 * 装备客户端控制器
 *
 * @author LiJunYi
 * @RefreshScope 支撑Nacos的动态刷新功能
 */
@RestController
@RefreshScope
public class ConfigClientController
{
    @Value("${config.info}")
    private String configInfo;
    @GetMapping("/config/info")
    public String getConfigInfo() {
        return configInfo;
    }
}

在Nacos中增加装备信息

匹配规则-理论

  • 官方文档
  • 之所以需求装备 spring.application.name ,是因为它是构成 Nacos 装备管理 dataId 字段的一部分。

dataId的完好格局

${prefix}-${spring.profile.active}.${file-extension}

  • 1、prefix 默以为 spring.application.name 的值,也能够经过装备项spring.cloud.nacos.config.prefix来装备。

  • 2、spring.profile.active即为当前环境对应的 profile。留意:当spring.profile.active为空时,对应的连接符 也将不存在datald的拼接格局变成${prefix}.${file-extension}

  • 3、file-exetension 为装备内容的数据格局, 能够经过装备项spring.cloud .nacos.config.file-extension来装备。 目前只支撑propertiesyaml类型。

最终公式:

$(spring.application.name}-$(spring.profiles.active}.$spring.cloud.nacos.config.file-extension}

装备新增

SpringCloud之Nacos作为配置中心

  • 图解

SpringCloud之Nacos作为配置中心

Namespace+Group+DatalD讲解

三者关系

类似Java里边的 package名和类名, 最外层的 namespace 是能够用于区别部署环境的,GroupDataID 逻辑上区别两个方针对象。

三者状况

SpringCloud之Nacos作为配置中心

  • 默许状况:

Namespace = publicGroup = DEFAULT_GROUP,默许ClusterDEFAULT

  • Nacos 默许的命名空间是 publicNamespace 主要用来实现隔离。

比方说我们现在有三个环境:开发、测验、生产环境,我们就能够创建三个Namespace ,不同的Namespace之间是隔离的。

  • Group 默许是 DEFAULT_GROUPGroup 能够把不同的微服务划分到同一个分组里边去

  • Sevice 便是微服务;一个Service能够包含多个Cluster(集群)Nacos默许ClusterDEFAULTCluster是对指定微服务的一个虚拟划分。

比方说为了容灾,将Service微服务分别部署在了杭州机房和广州机房,这时就能够给杭州机房的 Service微服务起一个集群称号(Hz),给广州机房的Service微服务起一个集群称号(GZ), 还能够尽量让同一个机房的微服务相互调用,以提高功能。

  • 最终是Instance,便是微服务的实例。

实例-三种方案加载装备

1、dataId方案

  • 指定spring.profile.active和装备文件的DatalD来使不同环境下读取不同的装备

  • 默许空间+默许分组+新建devtest两个Datald

  • 经过spring.profile.active属性就能进行多环境下装备文件的读取

新建两个不同的装备

SpringCloud之Nacos作为配置中心

  • YML

SpringCloud之Nacos作为配置中心

2、Group方案

  • Nacos装备概况

SpringCloud之Nacos作为配置中心

  • YML

SpringCloud之Nacos作为配置中心

3、Namespace方案

  • Nacos新增命名空间

SpringCloud之Nacos作为配置中心

SpringCloud之Nacos作为配置中心

  • bootstrao.yml
# nacos装备
server:
  port: 3377
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址
      config:
        server-addr: localhost:8848 #Nacos作为装备中心地址
        file-extension: yaml #指定yaml格局的装备
        group: TEST_GROUP
        namespace: ea7be215-37d0-4175-958c-a8af3545f115

Nacos作为装备中心的内容主要便是这些,更多具体知识点能够查阅官方文档哦。

下一章节

Nacos集群与持久化