SpringCloud高级(二) ——SpringCloud Alibaba Nacos篇二

Nacos作为服务配置中心演示

Nacos中添加配置信息

Nacos中的匹配规则。

理论

Nacos中的dataId的组成格式与SpringBoot配置文件中的匹配规则
在这里插入图片描述
在这里插入图片描述

实操

在这里插入图片描述
设置DataId
假设配置文件里:
在这里插入图片描述

那么DataId=${spring.application.name}-${spring.profiles.active}.${file-extension}

DataId=nacos-config-client-dev.yaml

通过这三个配置就可以确定当前项目使用配置中心里的哪一个配置文件

在这里插入图片描述

发布即可

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

新建模块:cloudalibaba-config-nacos-client3377
POM

    <dependencies>
        <!--nacos-配置中心-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--nacos-注册中心-->
        <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>

配置文件:
bootstrap.yml

server:
  port: 3377
spring:
  application:
    name: nacos-config-client  #应用名
  profiles:
    active: dev #开发环境
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #服务注册中心地址
      config:
        server-addr: localhost:8848 #配置中心地址
        file-extension: yaml #指定yaml格式的配置

在项目初始化时,要先保证从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动
springboot中配置文件的加载顺序:bootstrap>application

主启动:

@EnableDiscoveryClient
@SpringBootApplication
public class NacosConfigClientMain3377
{
    public static void main(String[] args) {
        SpringApplication.run(NacosConfigClientMain3377.class, args);
    }
}

业务类:

@RestController
//实现配置自动更新
@RefreshScope
public class ConfigClientController
{
    @Value("${config.info}")
    private String configInfo;

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

测试:
因为之前已经再配置中心添加了一个DataId=nacos-config-client-dev.yaml的配置
运行cloud-config-nacos-client3377的主启动类
调用接口查看配置信息:http://localhost:3377/config/info
在这里插入图片描述
自带动态刷新:修改下Nacos中的yaml配置文件,再次调用查看配置的接口,就会发现配置已经刷新。

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

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

Nacos的图形化管理界面

配置管理
在这里插入图片描述
命名空间
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

DataID方案

指定spring.profile.active和配置文件的DataID来使不同环境下读取不同的配置。
默认空间+默认分组+新建devtest两个DataID
在这里插入图片描述
修改spring.profile.active属性就能进行多环境下配置文件的读取
在这里插入图片描述
重启,测试:
在这里插入图片描述

group方案

通过Group实现环境区分。
nacos图形界面控制台上面新建配置文件DataID:分组设置,可以在新建配置文件的时候,自定义
在这里插入图片描述
配置文件修改:表示在分组DEV_GROUP下,使用配置文件nacos-config-client-info.yaml作为当前应用的配置文件。
在这里插入图片描述
测试:重启。
在这里插入图片描述

namespace方案

新建namespace
在这里插入图片描述
回到服务管理-服务列表查看
在这里插入图片描述
配置文件修改:
表示在命名空间dev下,分组为GROUP下,使用配置文件nacos-config-client-info.yaml作为当前应用的配置文件。
服务注册到命令空间dev下,而不是默认的命名空间。
在这里插入图片描述

小结

nacos下,能有多个namespace,每个namespace下能有多个分组,每个分组下能有多个配置文件。

加载多配置集


随着业务的不断壮大,微服务可能有非常多的配置,不能将所有的配置都写在一个配置文件里,一般做法拆分成几个文件,比如:与数据源有关的,写到DataSource.yml

比如:
1.配置文件application.yml,拆分成数据源文件,mybatis相关配置文件以及其他

server:
  port: 7000
spring:
  application:
    ##应用名,必须设置,不然注册不到nacos中
    name: gulimall-coupon
  datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.59.131:3306/gulimall_sms
    driver-class-name: com.mysql.jdbc.Driver
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址
mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      #自增主键
      id-type: auto

2.nacos新建者三个配置文件,内容如下:
在这里插入图片描述
datasource.yml:

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.59.131:3306/gulimall_sms
    driver-class-name: com.mysql.jdbc.Driver

mybatis.yml:

mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      #自增主键
      id-type: auto

other.yml:

server:
  port: 7000
spring:
  application:
    ##应用名,必须设置,不然注册不到nacos中
    name: gulimall-coupon
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址

3 配置bootstrap.yml

spring:
  application:
    name: gulimall-coupon  #应用名
  profiles:
    active: dev #开发环境
  cloud:
    nacos:
      config:
        server-addr: localhost:8848 #配置中心地址
        file-extension: yaml #指定yaml格式的配置
        namespace: f27b6ba2-164e-46bf-972e-7f998eba02ac
        group: dev
        #ext-config变成了extension-configs
        ##加载多配置集
        extension-configs[0]:
          data-id: datasource.yml
          group: dev
          refresh: true
        extension-configs[1]:
          data-id: mybatis.yml
          group: dev
          refresh: true
        extension-configs[2]:
          data-id: other.yml
          group: dev
          refresh: true

4.把application.yml的配置全注释了,测试一下,即可。

猜你喜欢

转载自blog.csdn.net/weixin_42412601/article/details/107233632