Nacos服务配置
准备工作
1、导入相应的依赖
2、准备两个配置文件bootstrap和application
Nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。
springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application。
SpringBoot的配置文件bootstrap与application的作用以及区别
-
加载顺序上的区别
bootstrap优先于application加载
-
适用于
bootstrap适用于配置一些系统级别的参数;
application适用于配置一些应用级别的参数;
-
适用SpringCloud Config配置中心时,需要在bootstrap配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息;
bootstrap.yml
# nacos服务配置
server:
port: 3377
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #服务注册中心地址
config:
server-addr: localhost:8848 #配置中心地址
file-extension: yaml #指定yaml格式的配置
#group: DEV_GROUP #指定分组
#namespace: 592bd9ee-eb97-49ad-984f-0b58ce56ae42
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
application.yml
spring:
profiles:
active: dev # 开发环境
# active: test 测试环境
# active: info 测试环境
@RefreshScope
支持动态刷新配置
dataId的配置
在 Nacos Spring Cloud 中,dataId
的完整格式如下:
s
p
r
i
n
g
.
a
p
p
l
i
c
a
t
i
o
n
.
n
a
m
e
−
{spring.application.name}-
spring.application.name−{spring.profile.active}.${spring.cloud.nacos.config.file-extension}
所以拼接起来的dataid就为:nacos-config-client-dev.yaml
实际操作
Nacos服务配置中:Namespace、Group、DataID是什么关系
问题1:
实际开发中,通常一个系统会准备
dev开发环境
test测试环境
prod生产环境
如何保证指定环境启动时服务能正确读取到Nacos上相应环境的配置文件呢?
问题2:
一个大型分布式微服务系统会有很多微服务子项目,每个微服务项目又都会有相应的开发环境、测试环境、预发环境、正式环境…
那怎样对这些微服务配置进行管理呢?
解决
最外层Namespace可以用于区分部署环境的,Group和DataID逻辑上区分两个目标对象。
比如说现在有三个环境:开发、测试、生产环境,我们就可以创建三个Namespace,不同的Namespace之间是隔离的。
Group默认是DEFAULT_GROUP,Group可以把不同的微服务划分到同一个分组里面去。
Service就是微服务;一个Service可以包含多个Cluster(集群),Nacos默认Cluster是DEFAULT,Cluster是对指定微服务的一个虚拟划分。比方说为了容灾,将Service微服务分别部署在了杭州机房和广州机房,这时就可以给杭州机房的Service微服务起一个集群名称(HZ),给广州机房的Service微服务起一个集群名称(GZ),还可以尽量让同一个机房的微服务互相调用,以提升性能。
ervice微服务分别部署在了杭州机房和广州机房,这时就可以给杭州机房的Service微服务起一个集群名称(HZ),给广州机房的Service微服务起一个集群名称(GZ),还可以尽量让同一个机房的微服务互相调用,以提升性能。最后的Instance,就是微服务实例。