[Alibaba微服务技术入门]_服务配置中心进阶_第6讲

配置共享;不同环境不同项目能自由切换和读取配置中心里面的数据

当配置越来越多的时候,我们就发现有很多配置是重复的,这时候就考虑可不可以将公共配置文提取出来,然后实现共享呢?

比如,问题1:实际开发中,通常一个系统会准备

  • dev开发环境
  • test测试环境
  • prod生产环境。
  • 如何保证指定环境启动时服务能正确读取到Nacos上相应环境的配置文件呢?

比如,问题2:

  • 一个大型分布式微服务系统会有很多微服务子项目,
  • 每个微服务项目又都会有相应的开发环境、测试环境、预发环境、正式环境……
  • 那怎么对这些微服务配置进行管理呢?

如果遇到上面的问题,其实就是需要我们对配置进行分类处理。这里大家得需要了解几个概念的问题

命名空间(Namespace):命名空间可用于进行不同环境的配置隔离。一般一个环境划分到一个命名空间

配置分组(Group):配置分组用于将不同的服务可以归类到同一分组。一般将一个项目的配置分到一组

配置集(Data ID):在系统中,一个配置文件通常就是一个配置集。一般微服务的配置就是一个配置集

这三者关系:

 

默认情况:

Namespace=public,Group=DEFAULT_GROUP,默认Cluster是DEFAULT

Nacos默认的命名空间是public,Namespace主要用来实现隔离。

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

Group默认是DEFAULT GROUP,Group可以把不同的微服务划分到同一个分组里面去

Service就是微服务;一个Service可以包含多个Cluster(集群),Nacos默认Cluster是DEFAULT,Cluster是对指定微服务的一个虚拟划分。

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

最后是Instance,就是微服务的实例。

案例一:Data ID 进阶使用

  • 指定spring.profile.active和配置文件的DatalD来使不同环境下读取不同的配置
  • 默认空间+默认分组+新建dev和test两个DatalD
  • 通过spring.profile.active属性就能进行多环境下配置文件的读取

第一步:创建 application.yml,将 spring.profile.active 属性移植到 application.yml 文件中

第二步:再次在配置中心中新建 nacos-config-client-test.yaml 文件。这样就形成了两个DataID

 

 

 案例二:Group 进阶使用

  • 新建两个Group:TEST_GROUP 和 DEV_GROUP
  • 通过Group实现环境区分
  • 在nacos图形界面控制台上面新建两个配置文件DatalD,但是名字一样 nacos-config-client-info.yaml

第一步:新建两个配置文件DatalD,但是名字一样 nacos-config-client-info.yaml

第二步:在bootstap.yaml中,添加 spring.cloud.nacos.config.group 属性

server:
  port: 7001
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
      config:
        file-extension: yaml
        server-addr: localhost:8848
        group: DEV_GROUP # 配置中心分组
# 配置中心文件格式 ${spring.application.name}-{spring.profile.active}.{file-extension}

第三步:修改application.yaml内容,让程序启动后加载 spring.profile.active.info

spring:
  profiles:
    active: info

 案例三:Namespace 进阶使用

  • 新建dev/test的Namespace
  • 回到服务管理-服务列表查看
  • 按照域名配置填写

第一步:新建命名空间,分别是dev 和 test 命名空间

 

 第二步:回服务列表去查看命名空间

第三步:配置dev命名空间下DataId,Group

 第四步:在bootstrap.yml文件中,添加 spring.cloud.nacos.config.namespace 属性,属性指向 namespace 的 id

server:
  port: 7001
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
      config:
        file-extension: yaml
        server-addr: localhost:8848
        group: DEV_GROUP
        namespace: 2a7e7783-99e1-49da-bfe5-82ff7840da15

# 配置中心文件格式 ${spring.application.name}-{spring.profile.active}.{file-extension}

 

posted @ 2021-10-19 14:38  子墨老师  阅读(72)  评论(0编辑  收藏  举报