nacos配置中心
nacos配置中心
·
nacos配置中心
1、nacos配置中心
nacos同spring-cloud-config一样,可以作为一个配置中心,统一的来管理配置,可以配置多套环境,各个微服务可以按需到nacos配置中心拉取相关配置,且支持动态刷新@RefreshScope
2、nacos配置中心的相关属性
后面我们会创建一个微服务来读取nacos配置中心的配置文件信息
注意:这里只能是yaml不能是yml
-
命名空间namespace可以区分部署环境,Group和DataID逻辑上区分两个目标对象
-
三者关系图
-
Nacos默认的命名空间是public,namespace主要用来实现隔离,例如:开发、测试、生产我们用三个不同的namespace。
-
Group默认为DEFAULT_GROUP,可以把不同的微服务划分到同一个分组。
-
Service就是微服务,一个service可以包含多个Cluster集群,可以容灾。
-
Instance为集群中的实例。
3、创建一个客户端
父工程pom环境
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.6.5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2021.0.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2021.0.1.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
该客户端部分配置从nacos客户端来拉取配置
- 导入nacos-config依赖:
<dependencies>
<!--value注入时要用 bootstrap-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<!--nacos服务发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
<!--nacos配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--sentinel-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<!--web-->
<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>
<version>2.6.5</version>
</dependency>
<!--热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<version>2.6.5</version>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!--lombok-->
<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>
- yaml和bootstrap
使用nacos作为配置中心时,需要创建一个bootstrap.yaml和application.yaml两个配置文件,bootstrap.yaml的优先级高于application.yaml,加载时实现加载bootstrap.yaml中的相关配置
-
配置文件
- bootstrap.yaml
server: port: 8403 spring: application: name: cloudalibaba-config-service cloud: nacos: discovery: server-addr: localhost:8848 #注册中心地址 config: server-addr: localhost:8848 #配置中心地址 file-extension: yaml #后缀名 group: devGroup #分组 namespace: c14f418f-bede-4627-a15b-799595757619 #命名空间的id
- application.yaml
spring: profiles: active: dev #激活的环境
- 这两个配置文件合起来就是从配置中心拉取命名空间id为c14f418f-bede-4627-a15b-799595757619下的devGroup组下的cloudalibaba-config-service-dev.yaml配置文件信息
- 文件名的默认组成:【命名空间id】 【分组】 {cloudalibaba-config-service}-{spring.profiles.active}.{file-extension}
- 对应关系如下图所示:
- 主启动类
package com.qiumin;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
* @Author: qiumin
* @Description: love code
* @Date: Created in 16:18 2022/4/12
*/
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfigApplication8403 {
public static void main(String[] args) {
SpringApplication.run(NacosConfigApplication8403.class,args);
}
}
- controller
package com.qiumin;
import lombok.extern.slf4j.Slf4j;
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: qiumin
* @Description: love code
* @Date: Created in 16:25 2022/4/12
*/
@RestController
@Slf4j
@RefreshScope //动态刷新
public class NacosConfigController {
@Value("${config.info}")
private String info; //该属性值是从nacos配置中心拉取到的配置
@GetMapping("/testConfig")
public String testConfig(){
return info;
}
}
- 启动测试
- 访问localhost:8403/testConfig
- 根据写的bootstrap.yaml和application.yaml读取的是nacos配置中心的 命名空间为 qiumin下的devGroup组下的cloudalibaba-config-service-dev.yaml文件的信息。
qiumin
更多推荐
已为社区贡献1条内容
所有评论(0)