SpringCloud Alibaba-Nacos组件作为配置中心教程


Nacos作为配置中心文档地址:https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme-zh.md

为什么要使用配置中心?

引入配置中心最重要的一点是:可以在系统运行时(runtime)动态调整配置文件!

在这里插入图片描述

一、引入nacos-config配置中心

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

二、配置bootstrap.properties元数据

官方文档要求我们创建bootstrap.properties 配置文件,配置 Nacos Config 元数据。

  • 注:使用nacos时,bootstrap.properties会优先于application.properties文件。
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

三、动态获取配置

动态获取配置需要在Controller中加入@RefreshScope注解。

@RefreshScope
public class CouponController {
    
    
	...
    @Value("${coupon.user.name}")
    private String name;
    @Value("${coupon.user.age}")
    private String age;
}

四、在配置中心添加数据集

Data ID的默认名:微服务名.properties

在这里插入图片描述

之后,只需要在nacos配置中心对配置进行修改发布即可动态修改数据,无需重新为微服务打包发布了。

在这里插入图片描述

注意:如果配置中心和项目配置文件中都配置了相同的项,则优先 使用配置中心的配置!

五、配置中心进阶使用

1.命名空间

  • 命名空间可以用来做配置隔离: 不同的命名空间下, 可以存在相同的 Group 或 Data ID 的
    配置。
  • 命名空间可以基于环境进行环境隔离:开发、测试、生产,各自使用不同的命名空间。
  • 命名空间也可以基于微服务进行环境隔离:不同微服务使用各自的命名空间。

可以在bootstrap.properties中设置使用的命名空间,下图以项目真实上线时为例:
在这里插入图片描述
也可以在每一个微服务之间互相隔离配置,每一个微服务都创建自己的命名空间,只加载自己命名空间下的所有配置。

2.配置 集/ID/分组

配置集:一组相关或者不相关的配置项的集合称为配置集。
配置集 ID:类似配置文件名,在nacos中即是Data ID。
配置分组:默认所有的配置及都属于DEFAULT_GROUP。项目在不同时期可以使用不同的配置分组,例如双11,双12时就可以切换性能更高的配置。

配置分组可以在bootstrap.properties使用spring.cloud.nacos.config.group=配置分组名进行配置。

在谷粒商城项目中:

  • 微服务隔离:每个微服务创建自己的命名空间。
  • 环境隔离:使用配置分组区分环境,区分dev,test,prod环境。

3.载多个配置集

可以将配置拆分成多个,同时加载。

  • 任何配置文件都可以放在配置中心中,只需要在bootstrap.properties中说明加载配置中心中哪些配置文件即可,并且优先使用配置中心。

在这里插入图片描述

spring.cloud.nacos.config.ext-config[0].data-id=datasource.yml
spring.cloud.nacos.config.ext-config[0].group=dev
spring.cloud.nacos.config.ext-config[0].refresh=true

spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml
spring.cloud.nacos.config.ext-config[1].group=dev
spring.cloud.nacos.config.ext-config[1].refresh=true

spring.cloud.nacos.config.ext-config[2].data-id=other.yml
spring.cloud.nacos.config.ext-config[2].group=dev
spring.cloud.nacos.config.ext-config[2].refresh=true

猜你喜欢

转载自blog.csdn.net/weixin_43691058/article/details/113776764