使用Nacos做配置中心

使用Nacos做配置中心

首先进入官方文档https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme-zh.md
1.首先,修改 pom.xml 文件,引入 Nacos Config Starter。还是在谷粒商城这个项目,因为每个服务都有可能需要配置中心的功能,所以我们在common的pom中添加依赖。

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

2.在应用的 /src/main/resources/bootstrap.properties 配置文件中配置 Nacos Config 元数据,这个是springboot规定的,这个文件的优先级高于application.properties。在coupon的resources目录新建该文件,并配置好微服务的名字和地址,其实和服务注册发现是同样的,因为nacos这个兼顾了配置中心和注册,这样就相当于配置好了配置中心
在这里插入图片描述
写个实例方法测试一下没有配置中心如何访问我们在配置文件中添加的配置的,一般如果没有配置中心,我们在类中访问我们的配置文件中的配置需要使用@value取得配置文件中相应的值,然后将项目打包,发布。当我们想修改配置中的数据时,只能修改完后,重新打包,再发布,重启,才会生效。
在这里插入图片描述
在这里插入图片描述
在nacos配置列表,新增配置
在这里插入图片描述
在我们的启动页面,有一个给好的配置名称,复制
在这里插入图片描述
填入其中,配置内容是我们之前在application.properties中的内容,想要实时修改的
在这里插入图片描述

在controller添加实时刷新注解
在这里插入图片描述
启动任务,先在浏览器输入url:http://localhost:7000/coupon/coupon/test,得到的是我们初始值
在这里插入图片描述
修改配置的内容
在这里插入图片描述
点击发布,刷新我们的地址,可以看到获取内容已经是我们配置中心修改过的内容了
在这里插入图片描述
ps:在中间添加bootstap.properties之后启动服务可能会报错endpoint is blank,我的解决方法是在common中添加依赖

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.0.1</version>
</dependency>

刷新maven,重新启动即可

小结

如何使用Nacos作为配置中心统一管理配置
1.引入依赖

<dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
 </dependency>
 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.0.1</version>
</dependency>

2.创建一个bootstrap.properties配置文件

spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

3.需要给配置中心默认添加一个叫数据集(Data Id)gulimall-coupon.properties。默认规则:应用名.properties
4.给 应用名.properties 添加任何配置
5.动态获取配置
@RefreshScope:动态获取并刷新配置
@Value("${配置项的名}"):获取到配置中的值
如果配置中心和当前用用的配置文件都配置了相通的项,优先使用配置中心的配置

细节

1、命名空间:用来做配置隔离,
默认public(保留空间),默认新增的所有配置都在public空间
1)开发、测试、生产:利用命名空间来做环境隔离

注意:需要在bootstrap.properties配置文件中需要指定使用哪个命名空间的配置,加上这个配置 如例一
spring.cloud.nacos.config.namespace=68f5e4ef-7418-458d-86d0-0b7ed799581a

2)每一个微服务之间互相隔离配置,每一个微服务都创建自己的命名空间,只加载自己命名空间下的所有配置 如例二

2、配置集:所有的配置的集合,就是一个配置文件中所有的配置加在一起
3、配置集ID:类似配置文件名
Data Id
4、配置分组(重要):默认所有的配置集都属于:DEFAULT_GROUP;
每个微服务创建自己的命名空间,使用配置分组区分环境,dev,test,prod
下面的GROUP就是配置分组,可以在不同场景下定义不同的分组,默认都是DEFAULT_GROUP,比如,双11使用1111分组,618使用618分组,就可以修改这种分组名,在配置文件中配置好要使用的分组,就可以调用对应分组的配置
在这里插入图片描述
比如,在coupon命名空间下新建一个配置,分组为1111
在这里插入图片描述
在代码配置文件中指定group为1111,不写默认就是DEFAULT_GROUP
在这里插入图片描述
重启服务,浏览器测试,可以看到,结果是我们在1111分组下的配置,测试成功
在这里插入图片描述

例一

1.新建命名空间,默认public
在这里插入图片描述
2.新建三个命名空间,在实际的项目流程中,我们的配置文件可能在开发、生产以及上线之后是不一样的,我们又不可能一直都用同一个明明空间的配置,所以用三个命名空间来切换,各不影响
在这里插入图片描述
3.在dev命名空间新建一个配置,和之前public的一样就行,为了测试coupon服务在这里插入图片描述
4.此时如果在浏览器发起请求得到的结果还是public命名空间中的配置,在bootstrap.properties中添加spring.cloud.nacos.config.namespace=68f5e4ef-7418-458d-86d0-0b7ed799581a 在这里插入图片描述在这里插入图片描述
此时再访问浏览器,就可以得到在dev命名空间中的配置
在这里插入图片描述
在这里插入图片描述

例二

1.用优惠系统和会员系统为例,在命名空间新建两个命名空间,分别是优惠系统和会员系统,可以选择克隆之前已经存在的配置中心,比较方便

在这里插入图片描述
这样coupon命名空间就复制了之前public中的配置,就可以让coupon服务使用专属的coupon命名空间的配置了
在这里插入图片描述
2.修改一下配置中心的内容,测试一下
在这里插入图片描述
浏览器输入地址,测试成功
在这里插入图片描述

加载多配置集

比如场景:随着业务的壮大,配置肯定越来越多,不可能将所有的配置都加载在同一个配置文件中,这样这个配置文件中的内容庞杂且不好维护,我们就会将配置文件中的内容拆分开,
加载多配置集的目的就是放弃本地的配置文件,只在代码中配置一些nacos的地址,依据这些远程调用,使用nacos中的配置
开始拆分本地的配置文件
在coupon命名空间中新建配置datasource.yml,mybatis.yml,other.yml
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样就把我们这个服务的所有配置拆分到nacos中了,每个配置文件都有自己的功能
在这里插入图片描述
但是现在还没有实现加载nacos配置的功能,需要在代码配置文件中加上相关配置
在这里插入图片描述
PS:

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[0].data-id 这是个list,所以跟上下标,也代表着可以配置很多,data-id是配置名
spring.cloud.nacos.config.ext-config[0].group 是配置空间下的group
spring.cloud.nacos.config.ext-config[0].refresh=true 代表能够动态刷新nacos中的配置,修改之后就能及时获取,默认是false,所以这里要写true

这时候将本地的配置全部注释,来测试是否能够读取nacos中的配置
在这里插入图片描述
重启服务,浏览器输入请求
在这里插入图片描述
发现结果是我们本地的配置内容
在这里插入图片描述
看一下控制台打印的运行过程日志,在加载gulimall-coupon时,加载的是默认的,但是在nacos配置中心我们只有dev和prod分组,当配置中心没有默认分组就加载本地,配置中心有就加载配置中心的
在这里插入图片描述
在这里插入图片描述

修改一下bootstrap.properties中内容

在这里插入图片描述
浏览器请求,结果就是nacos配置中心prod分组中的内容了
在这里插入图片描述
在浏览器输入一个controller中的url,能够请求数据库的,测试一下是否能够使用nacos中的配置文件,结果是能够获取数据库连接,测试成功
在这里插入图片描述

总结 1.微服务任何配置信息,任何配置文件都可以放在配置中心中
2.只要在bootstrap.properties说明加载配置中心中哪些配置we年即可
3.@value、@configfigurationProperties…
以前springboot任何方法从配置文件中获取值,都能使用
配置中心有的优先使用配置中心的
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值