Nacos配置中心

本文介绍了微服务中配置管理的重要性,包括如何通过引入配置中心实现不同环境配置的隔离和动态刷新。详细阐述了微服务如何接入Nacos配置中心,如添加依赖、配置文件设置,并展示了配置的加载优先级。此外,还讨论了如何处理不同环境和通用配置的冲突,以及如何通过shared-dataids和ext-config方式实现不同微服务间的通用配置共享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是配置管理??

所有的环境的配置都是明文的 被太多开发人员都知道了。 业务场景:张三开发了一个新功能,业务需要,保留原来老逻辑的代码,所有他抽取了一个开关变量 isNewBusi来控制,突然新功能上了生产后,发现有bug,怎么做到修改isNewBusi的值不需要重启。

根据上图我们知道配置管理的作用可以主要总结如下

1)不同环境不管配置

2) 配置属性动态刷新

引入配置中心

根据这幅图,我们微服务需要解决的问题

1)我微服务怎么知道配置中心的地址

2) 我微服务到底需要连接哪个环境

3)怎么找到nacos config上的对应的配置文件

微服务接入配置中心的步骤

①:添加依赖包spring-cloud-alibaba-nacos-config

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

②:编写配置文件,需要写一个bootstrap.yml配置文件

配置解释:

server-addr: localhost:8848 表示我微服务怎么去找我的配置中心

spring.application.name=order-center 表示当前微服务需要向配置中心索要order-center的配置 spring.profiles.active=prod 表示我需要向配置中心索要order-center的生产环境的配置

索要文件的格式为

${application.name}- ${spring.profiles.active}.${file-extension}

真正在nacos配置中心上 就是 order-center-prod.yml

spring:
	cloud:
		nacos:
			config:
				server-addr: localhost:8848
				file-extension: yml
	application:
		name: order-center
	profiles:
		active: prod

 

现在我们需要不停机改变我们的生产环境isNewBusi的值来控制我们的业务逻辑。我们需要在对应的Controller上添加一@RefreshScope 进行动态刷新

怎么解决 生产环境,测试环境,开发环境相同的配置。(配置通用)

 

比如我们的servlet-context 为order-center

查看工程启动日志 

所以我们需要创建一个通用配置文件:order-center.yml配置 那么order-center.yml就是一个通用配置了,不管是启动prod,还是dev 都会有该段配置order-server的 context-path 配置 

 配置的优先级 精准配置会覆盖与通用配置相同的配置,然后再和通用配置互补。

 

不同微服务的通用配置。 

1)通过 shared-dataids 方式

比如 每一个微服务都要写服务注册地址等 

spring:
	cloud:
		nacos:
			discovery:
				server-addr: localhost:8848

我们就可以把该配置提取为一个公共配置yml,提供给所有的工程使用

spring:
	cloud:
		nacos:
			config:
				server-addr: localhost:8848
				file-extension: yml
				#各个微服务共享的配置,注意越排到后面的公共配置yml优先级越高
				shared-dataids: common.yml,common2.yml
				#支持动态刷新的配置文件
				 refreshable-dataids: common.yml,common2.yml
	 application:
		name: order-center
	 profiles:
		active: dev

配置优先级

2)通过 ext-config方式

同样配置到越后面的配置 优先级越高 

spring:
	cloud:
		nacos:
			config:
			server-addr: localhost:8848
			file-extension: yml
			ext-config:
				- data-id: common3.yml
			    group: DEFAULT_GROUP
			    refresh: true
			 - data-id: common4.yml
			    group: DEFAULT_GROUP
			    refresh: true

 各个配置的优先级

精准配置>不同环境的通用配置>不同工程的(ext-config)>不同工程(shared- dataids)

上述配置 加载的优先级

1)order-center-dev.yml 精准配置

2)order-center.yml 同工程不同环境的通用配置

3)ext-config: 不同工程 通用配置

        3.1):common4.yml

        3.2): common3.yml

4) shared-dataids 不同工程通用配置

        4.1)common2.yml

        4.2)common1.ym 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小强同志

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值