Spring Cloud Alibaba 微服务组件 Nacos 配置中心(六)

目录

默认配置中心

概述

Nacos 配置文件

构建SpringCloudAlibaba Nacos配置中心项目

pom.xml 依赖

启动类

测试类

分组配置中心

概述

Nacos 添加配置文件

配置文件

控制台输出

测试结果

总结

命名空间配置中心

概述

配置文件

测试结果

总结

多文件加载与共享配置

概述

配置中心添加两个配置文件

配置文件

控制台输出

测试结果


  Spring Cloud Aibaba 学习目录

1. Spring Cloud Alibaba 微服务介绍(一)

2. Spring Cloud Alibaba 之Nacos 安装(二)

3. Spring Cloud Alibaba 微服务组件 Nacos 注册中心(三)

4. Spring Cloud Alibaba 微服务负载均衡 Ribbon(四)

5. Spring Cloud Alibaba 微服务整合 OpenFeign(五)

6. Spring Cloud Alibaba 微服务组件 Nacos 配置中心(六)

7. Spring Cloud Alibaba 微服务组件 Sentinel 服务保护(七)

8. Spring Cloud Alibaba 分布式事务概念(八)

9. Spring Cloud Alibaba 微服务组件 Seata 分布式事务(九)

10. Spring Cloud Alibaba 服务网关 Gateway(十)

11. Spring Cloud Alibaba 微服务组件 Skywalking 分布式任务链(十一)

语雀文档:Spring Cloud Aibaba 学习 · 语雀


默认配置中心

概述

下面我们通过一个简单的例子来介绍如何使用 Nacos 来创建配置内容以及如何在 Spring Cloud 应用中加载 Nacos 的配置信息。

Nacos 配置文件

第一步:进入Nacos的控制页面,在配置列表功能页面中,单击右上角的+按钮,进入新建配置页面,如图填写配置信息:

Spring Cloud Alibaba 微服务组件 Nacos 配置中心(六)_第1张图片

Spring Cloud Alibaba 微服务组件 Nacos 配置中心(六)_第2张图片

详解说明

  • Data ID:填入nacos-order.ymal
  • Group:默认值 DEFAULT_GROUP
  • 配置格式:选择ymal
  • 配置内容:应用要加载的配置内容,这里仅作为示例,做简单配置,比如:order.title=nacos-order配置中心

构建SpringCloudAlibaba Nacos配置中心项目

第一步:创建一个Spring Cloud应用,可以命名为:order-config。

第二步:编辑 pom.xml,加入必要的依赖配置

项目搭建采用的版本是

  • spring-boot 版本是 2.3.6.RELEASE
  • spring-cloud 版本是 Hoxton.SR8
  • spring-cloud-alibaba 版本是 2.2.5.RELEASE

注意:

  1. 本项目采用 parent 模块化构建项目
  2. 如果你开发工具没有 lombok 插件,可以把 pom 中 lombok 依赖删除掉

pom.xml 依赖


        org.springframework.boot
        spring-boot-starter-parent
        2.3.6.RELEASE
    

    
        1.8
        2.2.5.RELEASE
        2.3.6.RELEASE
        Hoxton.SR8
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.projectlombok
            lombok
            1.16.14
            provided
        
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
        
    

    
        
            
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring.cloud.version}
                pom
                import
            
            
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                ${spring.cloud.alibaba.version}
                pom
                import
            
        
    

配置文件

说明:配置文件加载顺序,SpringBoot中会先加载 bootstrap.yml,后加载 application.yml

注意如果是yml配置文件,必须是 bootstrap.yml 而不是 application.yml

详解说明:

客户端配置:在bootstrap.yml文件中 spring.cloud.nacos.config.file-extension 属性声明从配置中心中读取的配置文件格式

该配置的默认是为properties,即默认是读取properties格式的配置文件。当客户端没有配置该属性,并且在nacos server添加的是yml格式的配置文件,则给客户端会读取不到配置文件,导致启动失败。

server:
  ## 启动端口
  port: 8130

spring:
  application:
    ## 注册服务名
    name: nacos-order
  cloud:
    nacos:
      ## 注册中心地址
      discovery:
        server-addr: 127.0.0.1:8848
      ## 配置中心地址
      config:
        server-addr: 127.0.0.1:8848
        ## 指定读取配置文件的后缀
        file-extension: yaml
        ## 分组
        group: DEFAULT_GROUP

启动类

@SpringBootApplication
@EnableDiscoveryClient
public class OrderConfigApp {

    public static void main(String[] args) {
        SpringApplication.run(OrderConfigApp.class,args);
    }
}

测试类

其中通过 @Value 注解,注入了key为order.title的配置(默认为空字符串),这个配置会通过 /getOrder 接口返回,后续我们会通过这个接口来验证Nacos中配置的加载。另外,这里还有一个比较重要的注解@RefreshScope,主要用来让这个类下的配置内容支持动态刷新,也就是当我们的应用启动之后,修改了Nacos中的配置内容之后,这里也会马上生效。

/**
 * @author: LiPing.Zou
 * @create: 2020-05-18 15:27
 **/
@RestController
@RefreshScope
public class OrderController {

    @Value("${order.title}")
    private String orderTitle;


    @GetMapping("getOrder")
    public String getOrder(){
        return "order config" +orderTitle;
    }
}

控制台输出日志

浏览器访问,测试成功!

Spring Cloud Alibaba 微服务组件 Nacos 配置中心(六)_第3张图片

当我们修改配置中心内容,会触发 RefreshEventListener 事件

Spring Cloud Alibaba 微服务组件 Nacos 配置中心(六)_第4张图片


分组配置中心

概述

默认分组为 DEFAULT_GROUP,GROUP 可以将不同的微服务进行分组划分。

Nacos 添加配置文件

Spring Cloud Alibaba 微服务组件 Nacos 配置中心(六)_第5张图片

配置文件

server:
  ## 启动端口
  port: 8160

spring:
  application:
    ## 注册服务名
    name: group-order-config
  cloud:
    nacos:
      ## 注册中心地址
      discovery:
        server-addr: 47.103.20.21:8848
      ## 配置中心地址
      config:
        server-addr: 47.103.20.21:8848
        ## 指定读取配置文件的后缀
        file-extension: yaml
        ## 分组
        group: DEV_GROUP

控制台输出

CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='namespace-order-config-dev.yaml'}, NacosPropertySource {name='namespace-order-config.yaml'}]}

测试结果

Spring Cloud Alibaba 微服务组件 Nacos 配置中心(六)_第6张图片

总结

  • 优点:通过Group按环境讲各个应用的配置隔离开。可以非常方便的利用Data ID和Group的搜索功能,分别从应用纬度和环境纬度来查看配置。
  • 缺点:由于会占用Group纬度,所以需要对Group的使用做好规划,毕竟与业务上的一些配置分组起冲突等问题。
  • 建议:这种方式虽然结构上比上一种更好一些,但是依然可能会有一些混乱,主要是在Group的管理上要做好规划和控制。

命名空间配置中心

概述

默认为 public,其作用可以用来实现环境隔离作用,比如我们的开发环境、测试环境、生产环境。Nacos 添加命名空间

Spring Cloud Alibaba 微服务组件 Nacos 配置中心(六)_第7张图片

Spring Cloud Alibaba 微服务组件 Nacos 配置中心(六)_第8张图片

配置文件

添加了 namespace: 9e7bf496-2518-415c-9dcf-d2d47453457e

server:
  ## 启动端口
  port: 8180

spring:
  application:
    ## 注册服务名
    name: namespace-order-config
  cloud:
    nacos:
      ## 注册中心地址
      discovery:
        server-addr: 127.0.0.1:8848
      ## 配置中心地址
      config:
        server-addr: 127.0.0.1:8848
        ## 指定读取配置文件的后缀
        file-extension: yaml
        ## 命名空间
        namespace: 9e7bf496-2518-415c-9dcf-d2d47453457e

在新建 mall-test 命名空间新增配置

Spring Cloud Alibaba 微服务组件 Nacos 配置中心(六)_第9张图片

Spring Cloud Alibaba 微服务组件 Nacos 配置中心(六)_第10张图片

控制台输出

CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='namespace-order-config-dev.yaml'}, NacosPropertySource {name='namespace-order-config.yaml'}]}

测试结果

Spring Cloud Alibaba 微服务组件 Nacos 配置中心(六)_第11张图片

总结

  • 优点官方建议的方式,通过Namespace来区分不同的环境,释放了Group的自由度,这样可以让Group的使用专注于做业务层面的分组管理。同时,Nacos控制页面上对于Namespace也做了分组展示,不需要搜索,就可以隔离开不同的环境配置,非常易用。
  • 缺点没有啥缺点,可能就是多引入一个概念,需要用户去理解吧。
  • 建议直接用这种方式长远上来说会比较省心。虽然可能对小团队而言,项目不多,第一第二方式也够了,但是万一后面做大了呢?

多文件加载与共享配置

概述

有时候我们会对应用的配置根据具体作用做一些拆分,存储在不同的配置文件中,除了归类不同的配置之外,也可以便于共享配置给不同的应用。对于这样的需求,Nacos也可以很好的支持,下面就来具体介绍一下,当使用Nacos时,我们如何加载多个配置,以及如何共享配置。

配置中心添加两个配置文件

Spring Cloud Alibaba 微服务组件 Nacos 配置中心(六)_第12张图片

配置文件

group-share-config 服务同时加载两个配置文件 group-share-config.yaml, group-share-config2.yaml

server:
  ## 启动端口
  port: 8160

spring:
  application:
    ## 注册服务名
    name: group-share-config
  cloud:
    nacos:
      ## 注册中心地址
      discovery:
        server-addr: 127.0.0.1:8848
      ## 配置中心地址
      config:
        server-addr: 127.0.0.1:8848
#        ## 指定读取配置文件的后缀
#        file-extension: yaml
#        refreshable-dataids: group-share-config.yaml,group-share-config2.yaml
#        shared-dataids: group-share-config.yaml,group-share-config2.yaml

        ext-config:
          - data-id: group-share-config.yaml
            group: DEFAULT_GROUP
            refresh: true
            fileExtension: yaml
          - data-id: group-share-config2.yaml
            group: DEFAULT_GROUP
            refresh: true
            fileExtension: yaml

控制台输出

测试结果

Spring Cloud Alibaba 微服务组件 Nacos 配置中心(六)_第13张图片


 项目地址https://gitee.com/gaibianzlp/springcould-alibaba-example.githttps://gitee.com/gaibianzlp/springcould-alibaba-example.giticon-default.png?t=LA92https://gitee.com/gaibianzlp/springcould-alibaba-example.git点关注不迷路,觉得对你有帮助请给一个赞或者长按一键三连,谢谢!

你可能感兴趣的:(Spring,Cloud,spring,cloud,微服务,java,配置中心,spring,cloud,alibaba)