Bootstrap

获取nacos配置中心文件值_Nacos作为服务配置中心

一、Nacos作为服务配置中心

在系统开发过程中通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物理运行环境进行适配。配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成这个步骤。配置变更是调整系统运行时的行为的有效手段之一。Nacos可以作为配置中心,存储和管理配置信息。

二、Nacos作为服务配置中心的示例

2.1、父工程需要的POM依赖

com.alibaba.cloud

spring-cloud-alibaba-dependencies

2.1.0.RELEASE

pom

import

2.2、在Nacos中添加配置信息

1)Nacos中的匹配规则

2)新增配置

在Nacos中新增一个yaml文件的配置:

2.3、构建服务实例

1)本模块POM依赖

com.alibaba.cloud

spring-cloud-starter-alibaba-nacos-config

com.alibaba.cloud

spring-cloud-starter-alibaba-nacos-discovery

2)配置两个yml文件

a、为什么配置两个?

Nacos同SpringCloud Config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。

springboot中配置文件的加载是存在优先级顺序的, bootstrap.yml优先级高于application.yml。

b、bootstrap.yml

server:port:3377spring:application:name:nacos-config-clientcloud:nacos:discovery:server-addr:localhost:8848 #nacos服务注册中心地址config:server-addr:localhost:8848 # 配置中心地址file-extension:yaml # 指定yaml格式的配置

c、appliation.yml

spring:profiles:active:dev

3)主启动类

@EnableDiscoveryClient

@SpringBootApplication

public class NacosConfigClientMain3377

{

public static void main(String[] args) {

SpringApplication.run(NacosConfigClientMain3377.class, args);

}

}

4)业务类

@RestController

@RefreshScope // 通过Spring Cloud原生注解@RefreshScope实现配置自动更新public class ConfigClientController

{

@Value("${config.info}") // 注入配置中心中的config.info配置信息 private String configInfo;

@GetMapping("/config/info")

public String getConfigInfo() {

return configInfo;

}

}

2.4、测试

1)测试

启动微服务实例后,测试:

2)测试动态刷新

修改下Nacos中的yaml配置文件,再次调用查看配置的接口,就会发现配置已经刷新。

三、Nacos的分类配置功能

3.1、为什么需要分类配置功能

1)问题1:

实际开发中,通常一个系统会准备dev开发环境、test测试环境、prod生产环境。如何保证指定环境启动时服务能正确读取到Nacos上相应环境的配置文件呢?

2)问题2:

一个大型分布式微服务系统会有很多微服务子项目,每个微服务项目又都会有相应的开发环境、测试环境、预发环境、正式环境......那怎么对这些微服务配置进行管理呢?

3)Nacos提供了分类管理的机制

3.2、Nacos分类配置机制详解

1)Nacos分类配置机制是什么?

类似Java里面的package名和类名。

最外层的namespace是可以用于区分部署环境的, Group和DatalD逻辑上区分两个目标对象。

2)实际应用分析NameSpace —— Nacos默认的命名空间是public, Namespace主要用来实现隔离。比方说我们现在有三个环境:开发、测试、生产环境,我们就可以创建三个Namespace,不同的Namespace之间是隔离的。

Group—— Group默认是DEFAULT_GROUP,Group可以把不同的微服务划分到同一个分组里面去

Service/DataId —— Service就是微服务。一个Service可以包含多个Cluster (集群) ,Nacos默认Cluster是DEFAULT,Cluster是对指定微服务的一个虚拟划分。比方说为了容灾,将Service微服务分别部署在了杭州机房和广州机房,这时就可以给杭州机房的Service微服务起一个集群名称(HZ),给广州机房的Service微服务起一个集群名称(GZ) ,还可以尽量让同一个机房的微服务互相调用,以提升性能。

3.3、Nacos分类配置示例

1)DataID方案

前面的示例中就配置了一个DataID为nacos-config-client-dev.yaml,可以再多配几个:

根据前面介绍的匹配规则,只要修改application.yml文件中的spring.profiles.active配置项就能读取对应的DataID的配置文件。

2)Group方案

①新建Group

②修改bootstrap.yml文件

③测试

3)Namespace方案

①新建Namespace

回到配置列表查看:

②在dev命名空间中新建一个配置文件

③修改bootstrap.yml文件

④测试

;