nacos-配置中⼼(springCloudConfig)
Nacos 是阿⾥巴巴推出来的⼀个新开源项⽬,是⼀个更易于构建云原⽣应⽤的动态服务发现、配置管理和服务管理平台。Nacos 致⼒于帮助您发现、配置和管理微服务。Nacos 提供了⼀组简单易⽤的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中⼼的现代应⽤架构 (例如微服务范式、云原⽣范式) 的服务基础设施。
nacos可以代替Spring CLoud组件中的:woollen
1. 服务发现——Netflix Eureka
2. 分布式配置——Spring Cloud Config
3. 消息总线 —— Spring Cloud Busbookingform
本次主要使⽤的是Spring Cloud Config。
Spring Cloud Config 为分布式系统的外部配置提供了服务端和客户端的⽀持⽅案。在配置的服务端您可以在所有环境中为应⽤程序管理外部属性的中⼼位置。客户端和服务端概念上的Spring Environment 和
PropertySource 抽象保持同步, 它们⾮常适合Spring 应⽤程序,但是可以与任何语⾔中运⾏的应⽤程序⼀起使⽤。当应⽤程序在部署管道中从⼀个开发到测试直⾄进⼊⽣产时,您可以管理这些环境之间的配置,并确保应⽤程序在迁移时具有它们需要运⾏的所有内容。服务器存储后端的默认实现使⽤git,因此它很容易⽀持标记版本的配置环境,并且能够被管理内容的各种⼯具访问。很容易添加替代的实现,并⽤Spring配置将它们插⼊。
Spring Cloud Config 包含了Client和Server两个部分,rver提供配置⽂件的存储、以接⼝的形式将配置⽂件的内容提供出去,client通过接⼝获取数据、并依据此数据初始化⾃⼰的应⽤。Spring cloud使⽤git或svn存放配置⽂件,默认情况下使⽤git。
Nacos替换Config
Nacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud Config。通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。
应⽤场景
在系统开发过程中,开发者通常会将⼀些需要变更的参数、变量等从代码中分离出来独⽴管理,以独⽴的配置⽂件的形式存在。⽬的是让静态的系统⼯件或者交付物(如 WAR,JAR 包等)更好地和实
际的物理运⾏环境进⾏适配。配置管理⼀般包含在系统部署的过程中,由系统管理员或者运维⼈员完成。配置变更是调整系统运⾏时的⾏为的有效⼿段。
如果微服务架构中没有使⽤统⼀配置中⼼时,所存在的问题:
1. 配置⽂件分散在各个项⽬⾥,不⽅便维护
ison
2. 配置内容安全与权限
3. 更新配置后,项⽬需要重启
nacos配置中⼼:系统配置的集中管理(编辑、存储、分发)、动态更新不重启、回滚配置(变更管理、历史版本管理、变更审计)等所有与配置相关的活动。
读取Nacos配置中⼼的配置⽂件
1. 在Nacos创建统⼀配置⽂件
(1)点击创建按钮
(2)输⼊配置信息
Data ID 的完整规则格式如下
${prefix}-${spring.profile.active}.${file-extension}
- prefix 默认为所属⼯程配置spring.application.name 的值(即:nacos-provider),也可以通过配置项 spring.fig.prefix来配置。
- spring.profiles.active=dev 即为当前环境对应的 profile。注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefi x}.${file-extension}
- file-exetension 为配置内容的数据格式,可以通过配置项 spring.fig.file-extension 来配置。⽬前只⽀持 properties 和 yaml 类型。
bowang注:如果你的配置⾥声明了spring.profiles.active=dev,那么Data ID就要写为rvice-statistics-dev.properties。
2. 以rvice-statistics模块为例
(1)在rvice中引⼊依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
(2)创建bootstrap.properties配置⽂件
spring.fig.rver-addr=127.0.0.1:8848
#配置⽂件中声明的什么就写什么
spring.profiles.active=dev
# nacos配置中⼼的dataId 此处不要加.properties后缀
spring.application.name=rvice-statistics-dev
lycee
(3)把项⽬之前的application.properties内容注释,启动项⽬查看效果
3. 补充:springboot配置⽂件加载顺序
其实yml和properties⽂件是⼀样的原理,且⼀个项⽬上要么yml或者properties,⼆选⼀的存在。推荐使⽤yml,更简洁。
bootstrap与application:
(1)加载顺序
这⾥主要是说明application和bootstrap的加载顺序。
尘封的日记
⽗ApplicationContext 被加载到使⽤ l 的之前。
(2)配置区别
四强雄蕊
名称空间切换环境
在实际开发中,通常有多套不同的环境(默认只有public),那么这个时候可以根据指定的环境来创建不同的 namespce,例如,开发、测试和⽣产三个不同的环境,那么使⽤⼀套 nacos 集群可以分别建以下三个不同的 namespace。以此来实现多环境的隔离。
1. 创建命名空间
默认只有public,新建了dev、test和prod命名空间
oversize什么意思中文2. 克隆配置
(1)切换到配置列表:
可以发现有四个名称空间:public(默认)以及我们⾃⼰添加的3个名称空间(prod、dev、test),可以点击查看每个名称空间下的配置⽂件,当然现在只有public下有⼀个配置。
默认情况下,项⽬会到public下找 服务名.properties⽂件。
接下来,在dev名称空间中也添加⼀个nacos-provider.properties配置。这时有两种⽅式:
第⼀,切换到dev名称空间,添加⼀个新的配置⽂件。缺点:每个环境都要重复配置类似的项⽬
第⼆,直接通过clone⽅式添加配置,并修改即可。推荐
点击编辑:修改配置内容,端⼝号改为8013以作区分
在项⽬模块中,修改bootstrap.properties添加如下配置
spring.fig.rver-addr=127.0.0.1:8848
#配置⽂件中声明的什么就写什么
spring.profiles.active=dev
# nacos配置中⼼的dataId 此处不要加.properties后缀
spring.application.name=rvice-statistics-dev
#不写名称空间默认是public
spring.fig.namespace=13b5c197-de5b-47e7-9903-ec0538c9db01
namespace的值为:
重启服务提供⽅服务,测试修改之后是否⽣效
多配置⽂件加载
在⼀些情况下需要加载多个配置⽂件。假如现在dev名称空间下有三个配置⽂件:rvice-statistics.properties、redis.properties、jdbc.properties
添加配置,加载多个配置⽂件rwc
spring.fig.rver-addr=127.0.0.1:8848
#配置⽂件中声明的什么就写什么
spring.profiles.active=dev
# nacos配置中⼼的dataId 此处不要加.properties后缀
spring.application.name=rvice-statistics-dev
#不写名称空间默认是public
spring.fig.namespace=13b5c197-de5b-47e7-9903-ec0538c9db01 # 此处⼀定要加.properties后缀
spring.-config[0].data-id=redis.properties
# 开启动态刷新配置,否则配置⽂件修改,⼯程⽆法感知
家庭教育心得spring.-config[0].refresh=true
spring.-config[1].data-id=jdbc.properties
spring.-config[1].refresh=true