赞
踩
在Nacos出现之前,我们通常使用SpringCloud Config 分布式配置中心 + SpringCloud Bus 消息总线来实现配置文件的分布式配置和动态刷新。微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。而Nacos很好的整合了这几个功能,下文就Nacos作为服务配置中心进行介绍。
cloudalibaba-config-nacos-client3377
<dependencies> <!--nacos-config--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <!--nacos-discovery--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!--web + actuator--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--一般基础配置--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
需要配置bootstrap和application两个文件,bootstrap优先级高于application。
Nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,
拉取配置之后,才能保证项目的正常启动。
application.yml
spring:
profiles:
active: dev # 开发环境
# active: test # 测试环境
# active: info # 开发环境
bootstrap.yml
server: port: 3377 spring: application: name: nacos-config-client cloud: nacos: discovery: server-addr: localhost:8848 # 注册中心 config: server-addr: localhost:8848 # 配置中心 file-extension: yaml # 这里指定的文件格式需要和nacos上新建的配置文件后缀相同,否则读不到 # group: DEFAULT_GROUP # namespace: 18181b6a-19ee-441c-8eeb-b7263f368b08 # 以下为在nacos添加配置文件的命名格式 # ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension} # nacos-config-client-dev.yaml
Nacos中的dataid的组成格式及与SpringBoot配置文件中的匹配规则
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
* @author Xin
* @date 2022/10/3 18:57
*/
@SpringBootApplication
@EnableDiscoveryClient
public class NacosClientConfig3377 {
public static void main(String[] args) {
SpringApplication.run(NacosClientConfig3377.class);
}
}
package com.xin.springcloud.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; /** * @author Xin * @date 2022/10/3 19:00 */ @RestController // 通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新 @RefreshScope public class ConfigClientController { @Value("${config.info}") private String configInfo; @GetMapping("/config/info") public String getConfigInfo() { return configInfo; } }
##6. 测试
本文简单介绍了Nacos配置中心的使用,而Nacos提供的动态配置服务可以让以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。相比SpringCloud Config 分布式配置中心 + SpringCloud Bus 消息总线来看。Nacos的配置中心使用起来更加的方便快捷。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。