Nacos Config 配置中心攻略和详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:
4 在nacos图形化界面查看配置
5 启动程序测试
程序正常启动即可
业界开源配置中心
业界开源配置中心举例
Apollo Disconf SpringCloud Config Nacos
nacos配置结构
整个nacos结构
nacos作为配置中心,Nacos Config 主要通过 dataId 和 group 来唯一确定一条配置.
Namespace命名空间、Group、DataId
Namespace
Namespace 的常用场景之一是不同环境的配置的区分隔离,如dev、test、prod(分别对应开发环境、测试环境、生产环境(有些还有预发布环境))
一般一个环境划分一个命名空间,如dev,test,prod
Group
Group是项目,或者组的意思,它可以包括多个微服务,即这个项目下所有的微服务。
当您在 Nacos 上创建一个配置时(可以通过 spring.cloud.nacos.config.group 配置
),如果未填写配置分组的名称,则配置分组的名称默认采用DEFAULT_GROUP。
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配置动态刷新
如果改了配置文件,我们可以通过程序的方式去刷新;当然没有写程序,我们云上重启服务实例也可以更新配置文件。
两种方法
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” )
以上是关于Nacos Config 配置中心攻略和详解的主要内容,如果未能解决你的问题,请参考以下文章