AlibabaCloud微服务下的分布式配置中心Nacos

一、现在微服务的问题

配置文件增多,不好维护 修改配置文件需要重新发布

二、什么是配置中心

一句话:统一管理配置, 快速切换各个环境的配置 相关产品: 百度的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,简单了很多。

经验分享 程序员 微信小程序 职场和发展