Spring Cloud Alibaba微服务实战六 - 配置隔离

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO

联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬

学习必须往深处挖,挖的越深,基础越扎实!

阶段1、深入多线程

阶段2、深入多线程设计模式

阶段3、深入juc源码解析


阶段4、深入jdk其余源码解析


阶段5、深入jvm源码解析

码哥源码部分

码哥讲源码-原理源码篇【2024年最新大厂关于线程池使用的场景题】

码哥讲源码【炸雷啦!炸雷啦!黄光头他终于跑路啦!】

码哥讲源码-【jvm课程前置知识及c/c++调试环境搭建】

​​​​​​码哥讲源码-原理源码篇【揭秘join方法的唤醒本质上决定于jvm的底层析构函数】

码哥源码-原理源码篇【Doug Lea为什么要将成员变量赋值给局部变量后再操作?】

码哥讲源码【你水不是你的错,但是你胡说八道就是你不对了!】

码哥讲源码【谁再说Spring不支持多线程事务,你给我抽他!】

终结B站没人能讲清楚红黑树的历史,不服等你来踢馆!

打脸系列【020-3小时讲解MESI协议和volatile之间的关系,那些将x86下的验证结果当作最终结果的水货们请闭嘴】

导读:本篇作为SpringCloud Alibaba微服务实战系列的第六篇,主要内容是将所有的微服务接入Nacos配置中心并按环境进行隔离。系列文章,欢迎持续关注。

配置中心集成

在SpringCloud Alibaba体系中是使用Nacos作为配置中心,这样Nacos既可以作为注册中心也可以作为配置中心,相当于SpringCloud中的Eureka + Config。要接入Nacos的配置中心也很简单,只需要如下几步:

  • 引入配置中心组件spring-cloud-starter-alibaba-nacos-config
    <dependency>
    	<groupId>org.springframework.cloud</groupId>
    	<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
  • 在resource中新建文件bootstrap.yml,配置应用名称和注册中心地址
    spring:
      application:
        name: account-service
      cloud:
        nacos:
          config:
            server-addr: 10.0.10.48:8848
            file-extension: yml

这里指定文件后缀为yml

  • 在nacos控制台建立配置文件

注:在客户端和server端对文件格式的声明要一致,例如在客户端声明的是yml,则server端添加配置文应该是${spring.application.name}.yml,若写成${spring.application.name}.yaml,则会找不到配置文件。 如在我们的account-service中应该建立一个account-service.yml文件,然后把原application.yml的内容复制到里面即可,在nacos配置中可以删除spring.application.name配置。

  • 运行测试 测试服务功能是否正常

简单几步就可以将你的微服务集成Nacos的配置中心了,但是在实际开发中我们需要准备多个环境的配置文件(开发、测试、生产),接下来我们看看如何使用Nacos进行多环境配置管理。

多环境管理

在Nacos中实现多环境管理很容易,可以通过ProfilesGroupNamespace三个维度实现。

profiles

nacos配置中心的DATA ID就相当于一个配置文件的名称,前面一部分我们DATA ID的默认命名方式为${spring.application.name}.${ spring.cloud.nacos.config.file-extension},比如我们之前的配置文件为account-service.yml

如果我们在服务启动的时候指定了服务的环境名称spring.profiles.active,那么DATA ID的命名方式就变成了${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}。比如上面的account-service我们在bootstrap.yml中设置了spring.profiles.active=DEV,那么服务启动时就会去nacos抓取account-service-DEV.yml这个配置文件的数据。

利用Nacos命名方式的特性我们可以实现多环境配置管理。

实战
  • 给系统指定环境名称
    spring:
      profiles:
        active: DEV
  • Nacos中建立多套环境的配置

  • 启动应用,观察后端启动日志

    2024-04-10 13:39:21,352 INFO  NacosPropertySourceBuilder:87 - Loading nacos data, dataId: 'account-service-DEV.yml', group: 'DEFAULT_GROUP'
    2024-04-10 13:39:21,363 INFO  PropertySourceBootstrapConfiguration:101 - Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='account-service-DEV.yml'}, NacosPropertySource {name='account-service.yml'}]}
    2024-04-10 13:39:21,376 INFO  AccountServiceApplication:652 - The following profiles are active: DEV

Group

Group是DATA ID集合的概念,将同一个环境下的配置文件组成一个Group,在服务启动时通过指定spring.cloud.nacos.config.group属性可以让系统加载不同Group的配置文件。

实战
  • 在nacos中建立多个配置文件,以Group进行区分

    如上所示,我们建立了一个DEV_GROUP 和TEST_GROUP。

  • 修改配置文件,指定spring.cloud.nacos.config.group的值

    spring:
      cloud:
        nacos:
          config:
            server-addr: 10.0.10.48:8848
            file-extension: yml
            group: DEV_GROUP

这个时候不需要再给服务指定spring.profiles.active属性

  • 启动应用,观察后端启动日志
    2024-04-10 14:19:19,861 INFO  NacosPropertySourceBuilder:87 - Loading nacos data, dataId: 'account-service.yml', group: 'DEV_GROUP'
    2024-04-10 14:19:19,869 INFO  PropertySourceBootstrapConfiguration:101 - Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='account-service.yml'}]}
    2024-04-10 14:19:19,882 INFO  AccountServiceApplication:648 - No active profile set, falling back to default profiles: default

Namespace

Namespace 是 nacos 做多环境以及多租户数据(配置和服务)隔离的,目前也是官方推荐的多环境支持方案。如果你的微服务有多套不同的环境(DEV,TEST),那么这个时候可以根据指定的环境来创建不同的 namespce,以此来实现多环境的隔离。不同的命名空间下可以有相同的Group 和Data ID

实战
  • Nacos中根据项目环境建立多套Namespace

    建好Namespace后会生产一串命名空间ID,在应用里通指定spring.cloud.nacos.config.namespace属性对应不同的Namespace

  • 在不同的命名空间下分别建立配置文件account-service.yml

  • 修改配置文件,指定spring.cloud.nacos.config.namespace属性

    spring:
      cloud:
        nacos:
          config:
            server-addr: 10.0.10.48:8848
            file-extension: yml
            namespace: 7e8ccc22-6f51-42fa-bcf1-db45f99dbf57
  • 启动应用,观察后端启动日志

    这个版本没有关于Namespace的启动日志,不过你可以修改你的配置确认是否正常加载,反正我这里是正常的O(∩_∩)O哈哈~

Namespace作为官方推荐的环境隔离配置,我们将所有的微服务全部按照此方式进行改造,改造完的效果如下:

改造完成后要对服务进行测试,保证服务能正常运行。

至此我们已经把我们微服务的配置全部放入了配置中心,并且使用Namespace对环境进行了隔离。那么本期的“SpringCloud Alibaba微服务实战六 - 配置隔离”篇也就该结束啦,咱们下期有缘再见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值