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图形化界面查看配置

Nacos

5 启动程序测试

程序正常启动即可

业界开源配置中心

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

nacos配置结构

整个nacos结构

Nacos


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

Nacos

Namespace命名空间、Group、DataId

Namespace

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

Group

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

),如果未填写配置分组的名称,则配置分组的名称默认采用DEFAULT_GROUP。

Nacos

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


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 配置中心攻略和详解的主要内容,如果未能解决你的问题,请参考以下文章

spring cloud Nacos Config配置中心

5.SpringCloud -- 配置中心 Config消息总线 Bus链路追踪 Sleuth配置中心 Nacos

配置中心Config

注册中心Nacos详解

使用nacos配置中心后启动微服务连接不上nacos的问题

Spring Cloud Alibaba - 17 Nacos Config 配置中心 应用篇