资讯

展开

Nacos Config 配置中心攻略和详解

作者:快盘下载 人气:

Nacos config 配置中心

Nacos = Spring Cloud Eureka + Spring Cloud Config 通过Nacos Server和spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更 通过Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery实现服务的注册与发现 Nacos===注册中心+配置 Nacos可以用来作为配置中心

一、为什么要用配置中心?

1、配置文件太多了,太分散啦,需要一个统一配置和管理 2、配置文件无法区分环境 通常我们开发要dev服、测试服、生产服等等 3、配置文件无法实时更新

====》配置中心来解决

服务配置中心

我们使用阿里巴巴的Nacos,除此之外还有springcloud自带的SpringCloud Config(没有可视化界面,全球用户)、携程的Apollo、百度的Disonf

二、可以干什么

1、服务发现和服务健康监测 2、动态配置服务 3、动态DNS服务 4、服务及其元数据管理

Nacos Config搭建入门方法(SpringBoot搭建nacos config)

1、添加依赖。

${latest.version}是最新版本,也可以使用你熟悉的版本。

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>nacos-config-spring-boot-starter</artifactId>
    <version>${latest.version}</version>
</dependency>

2、在 application.properties 中配置 Nacos server 的地址:

nacos.config.server-addr=127.0.0.1:8848

3、使用 @NacosPropertySource注解 加载 dataId 为 dataId_test的配置源,并开启自动更新:

@NacosPropertySource(dataId = "dataId_test", autoRefreshed = true) autoRefreshed = true即代表开启

@SpringBootApplication
@NacosPropertySource(dataId = "dataId_test", autoRefreshed = true)
public class NacosConfigApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosConfigApplication.class, args);
    }
}

4、通过 Nacos 的 @NacosValue 注解设置属性值。

@Controller
@RequestMapping("config")
public class ConfigController {

    @NacosValue(value = "${useLocalCache:false}", autoRefreshed = true)
    private boolean useLocalCache;

    @RequestMapping(value = "/get", method = GET)
    @ResponseBody
    public boolean get() {
        return useLocalCache;
    }
}

5、启动 NacosConfigApplication

访问 http://localhost:8080/config/get,此时返回内容为true,说明程序中的useLocalCache值已经被动态更新了,测试成功

Nacos Config搭建入门方法(SpringCloud搭建nacos config)

SpringCloud搭建nacos config前提最好了解一下SpringBoot怎么搭建的,应该很多东西是互通的。

1、搭建nacos环境

其实就是把它当成服务端

2、引入依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

3、在微服务配置

配置文件优先级(由高到低): bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml

spring:
	application:
		name: service-product
	cloud:
		nacos:
			config:
			server-addr: 127.0.0.1:8848 #中心地址
			file-extension: yaml # 配置文件格式
	profiles:
		active: dev

4 在nacos图形化界面查看配置

Nacos Config 配置中心攻略和详解

5 启动程序测试

程序正常启动即可

业界开源配置中心

业界开源配置中心举例 Apollo Disconf SpringCloud Config Nacos

nacos配置结构

整个nacos结构nacos作为配置中心,Nacos Config 主要通过 dataId 和 group 来唯一确定一条配置.

bash,Nacos Config 配置中心攻略和详解

Namespace命名空间、Group、DataId

Namespace

Namespace 的常用场景之一是不同环境的配置的区分隔离,如dev、test、prod(分别对应开发环境、测试环境、生产环境(有些还有预发布环境)) 一般一个环境划分一个命名空间,如dev,test,prod

Group

Group是项目,或者组的意思,它可以包括多个微服务,即这个项目下所有的微服务。 当您在 Nacos 上创建一个配置时(可以通过 spring.cloud.nacos.config.group 配置

),如果未填写配置分组的名称,则配置分组的名称默认采用DEFAULT_GROUP。Nacos Config 配置中心攻略和详解

DataId

Nacos 中的某个配置集的 ID,也是某一个环境下项目下的具体微服务,这里是唯一的,如...-dev.yml,...-test.yml,....-prod.yml

在系统中,一个配置文件通常就是一个配置集。一般微服务的配置就是一个配置集

在 Nacos Config Starter 中,dataId 的拼接格式如下

${prefix} - ${spring.profiles.active} . ${file-extension}

(1)prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。

在 bootstrap.yml中配置 Nacos server 的地址和应用名
spring:
	cloud:
		nacos:
			config:
				server-addr: 127.0.0.1:8848

spring:
	application:
		name: example

(2)spring.profiles.active 即为当前环境对应的 profile

(3)file-extension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension来配置。目前只支持 properties 和 yaml 类型。

注意,当 activeprofile 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 {prefix}.{file-extension} (4)file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。Nacos Config 配置中心攻略和详解图来着https://blog.csdn.net/yilvqingtai/article/details/115427043

Nacos配置动态刷新

如果改了配置文件,我们可以通过程序的方式去刷新;当然没有写程序,我们云上重启服务实例也可以更新配置文件。 两种方法 1、只需要在需要动态读取配置的类上添加此注解就可以 @RefreshScope

@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {

    @Value("${useLocalCache:false}")
    private boolean useLocalCache;

    @RequestMapping("/get")
    public boolean get() {
        return useLocalCache;
    }
}

2、硬代码,applicationContext.getEnvironment().getProperty( "config.appName" )

加载全部内容

相关教程
猜你喜欢
用户评论
快盘暂不提供评论功能!