目录
一、现在微服务的问题
配置文件增多,不好维护
修改配置文件需要重新发布
二、什么是配置中心
一句话:统一管理配置, 快速切换各个环境的配置
相关产品:
百度的disconf 地址:https://github.com/knightliao/disconf
阿里的diamand 地址:https://github.com/takeseem/diamond
springcloud的configs-server: 地址:http://cloud.spring.io/spring-cloud-config/
阿里的Nacos:既可以当服务治理,又可以当配置中心,Nacos = Eureka + Config
配置面板:
三、讲解Nacos作为配置中心实战
3.1 pom.xml依赖
<!--锁定版本--> <dependencyManagement> <dependencies> <!--https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-dependencies/2.3.3.RELEASE--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.3.3.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <!--https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies/Hoxton.SR8--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Hoxton.SR8</version> <type>pom</type> <scope>import</scope> </dependency> <!--https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-alibaba-dependencies/2.2.1.RELEASE--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.1.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
3.2 配置文件优先级讲解
不能使用原先的application.yml, 需要使用bootstrap.yml作为配置文件
配置读取优先级 bootstrap.yml > application.yml
第一步 增加bootstrap.yml
spring:
application:
name: wnn-order-service
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848 #Nacos配置中心地址
file-extension: yaml #文件拓展格式
profiles:
active: dev
第二步 然后注释掉当前的application.yml
第三步 放到nacos上面,新建个配置 把application.yml的内容复制的配置内容里面:
启动微服务服务验证
测试是否可以获取配置
如果出现 config dta not exist 建议重启nacos
如果还是拉取不到配置
mvn clean package -U 然后重启IDEA
3.3 看下dataId是怎么组成的
${prefix}-${spring.profiles.active}.${file-extension}
prefix 默认为 spring.application.name 的值
spring.profiles.active 即为当前环境对应的 profile
当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
四、Nacos动态刷新配置
4.1 什么是动态刷新配置
我们修改了配置,程序不能自动更新
动态刷新就可以解决这个问题
增加Nacos增加测试配置
编写代码
@RefreshScope
public class OrderController {
@Value("${video.title}")
private String videoTitle;
}
更改后:
长连接获取到了最新参数值;
这样就完成了动态刷新的配置,相比较eureka,简单了很多。