快速搭建 SpringCloud Alibaba Nacos 配置中心!
Spring Cloud Alibaba 是阿里巴巴提供的一站式微服务开发解决方案,目前已被 Spring Cloud 官方收录。而 Nacos 作为 Spring Cloud Alibaba 的核心组件之一,提供了两个非常重要的功能:服务注册中心(服务注册和发现)功能,和统一配置中心功能。
Nacos 简介
Nacos 致力于帮助开发者发现、配置和管理微服务。它提供了一组简单易用的特性集,帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 特性介绍
Nacos 具有以下特性:
- 服务发现和服务健康监测:支持基于DNS和基于RPC的服务发现,支持对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。
- 动态配置服务:动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
- 动态 DNS 服务:动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单 DNS 解析服务。
- 服务及其元数据管理:支持从微服务平台建设的视角管理数据中心的所有服务及元数据。
配置中心功能实现
1.添加依赖
创建一个新的 Spring Boot 项目,添加 nacos config 和 web(非必须)框架依赖,如下图所示:

PS:添加 web 依赖主要作用是为了方便后面代码测试。
如果是老项目,那么需要手动添加 nacos config 的依赖,修改 pom.xml 文件,添加以下内容:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.配置 Nacos Config 信息
在应用的 /src/main/resources/ 目录下,创建引导配置文件 bootstrap.yml(或 bootstrap.properties),添加以下 Nacos Config 配置信息:
spring:
application:
name: nacosconfig # 项目名称和 nacos DataId 相匹配
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848 # nacos 地址和端口
file-extension: yaml # 获取配置文件的格式:yaml
username: nacos # nacos 认证用户名
password: nacos # nacos 认证密码
server:
port: 9001 # 项目启动端口
3.编写代码读取配置文件
创建一个控制器,使用 @Value 注解读取配置信息,读取方式和 Spring Boot 读取本地配置代码一致:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
// 从 nacos 中读取配置项 config.info
@Value("${config.info}")
private String configInfo;
@GetMapping("/getconfig")
public String getConfigInfo(){
return configInfo;
}
}
4.Nacos 控制台添加配置信息
在 Nacos 控制台创建并设置配置文件,执行步骤如下所示。
首先,在配置列表中点击“添加”按钮,如下图所示:

进入配置页面,新建 YAML 或 Properties 配置文件,如下图所示:

以上关键参数的含义和规则说明如下。
① Data ID
Data ID 的拼接格式如下:
${prefix} - ${spring.profiles.active} . ${file-extension}
其中
- prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix 来配置。
- spring.profiles.active 即为当前环境对应的 profile,当 active profile 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
- file-extension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 类型。
② Group
Group 分组选项,主要是用来隔离不同的配置项目的,它的默认值为 DEFAULT_GROUP,可以通过 spring.cloud.nacos.config.group 配置。
配置好相应的内容之后,点击底部的“发布”按钮即可,添加成功之后会自动返回配置列表,如下图所示:

启动项目,查看执行结果如下图所示:
动态刷新功能
动态刷新功能是指:在 Nacos 配置中心修改的配置内容,在不重启项目的前提下可以实时的读取到。
Nacos 默认会为所有获取数据成功的 Nacos 的配置项添加了监听功能,在监听到服务端配置发生变化时会实时触发 org.springframework.cloud.context.refresh.ContextRefresher 的 refresh 方法。
但如果需要对 Bean 进行动态刷新,需要参照 Spring 和 Spring Cloud 规范,推荐给类添加 @RefreshScope 或 @ConfigurationProperties 注解。
以上面的案例来说,如果需要添加动态刷新功能,只需要在控制器上添加 @RefreshScope 注解即可,实现代码如下:
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;
@RestController
@RefreshScope // 开启配置文件的动态刷新
public class TestController {
// 从 nacos 中读取配置项 config.info
@Value("${config.info}")
private String configInfo;
@GetMapping("/getconfig")
public String getConfigInfo(){
return configInfo;
}
}
最终的实现结果如下:

亮点功能介绍
Nacos 配置中心有两个很好用的功能:一个是修改配置时的内容对比,让您一眼就可以看出此次修改的配置内容,防止误操作;第二个是历史版本一键回滚功能,让您能够轻松的实现溯源和回滚配置文件。
1.配置文件对比
在修改配置文件时,会先出现一个配置文件的对比预览页面,如下图所示:

这样您就可以清楚的看到此次修改和添加的具体配置信息了,从而减少了误改的风险。
2.历史版本一键回滚
Nacos 通过提供配置版本管理及其一键回滚能力,帮助用户改错配置的时候能够快速恢复,降低微服务系统在配置管理上的一定会遇到的可用性风险。


项目源码
https://gitee.com/mydb/spring-cloud-alibaba-example/tree/master/spring-cloud-nacos-config
总结
Nacos 作为 Spring Cloud Alibaba 的核心组件之一,提供了两个非常重要的功能:注册中心和配置中心功能。其中配置中心是将配置文件从本地化,变更为云端化的过程(Nacos 服务端),这样既能保证配置文件的安全性,又能实时的修改、查看、回滚和动态刷新配置文件了。
参考文档
Nacos 官方文档:https://nacos.io/zh-cn/docs/what-is-nacos.html
是非审之于己,毁誉听之于人,得失安之于数。
公众号:Java中文社群
Java面试合集:https://gitee.com/mydb/interview
快速搭建 SpringCloud Alibaba Nacos 配置中心!的更多相关文章
- 【springcloud alibaba】配置中心之nacos
接着上一篇的[springcloud alibaba]注册中心之nacos,这一篇主要讲nacos的配置中心能力.nacos的集群部署及持久化请看上一篇. ---------------------- ...
- Spring Cloud 系列之 Alibaba Nacos 配置中心
Nacos 介绍 Nacos 是 Alibaba 公司推出的开源工具,用于实现分布式系统的服务发现与配置管理.英文全称 Dynamic Naming and Configuration Service ...
- Spring Cloud Alibaba nacos 配置中心使用
背景 上一文我们讲到了如何去搭建注册中心,这一次我们讲述如何使用nacos作为注册中心 spring-cloud-alibaba-basis 创建基础依赖 首先我们创建一个spring-cloud-a ...
- Spring Cloud Alibaba(5)---Nacos(配置中心)
Nacos(配置中心) 有关Spring Cloud Alibaba之前写过四篇文章,这篇也是在上面项目的基础上进行开发. Spring Cloud Alibaba(1)---入门篇 Spring C ...
- 19.SpringCloud实战项目-SpringCloud整合Alibaba-Nacos配置中心
SpringCloud实战项目全套学习教程连载中 PassJava 学习教程 简介 PassJava-Learning项目是PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. ...
- 快速搭建 SpringCloud 微服务开发环境的脚手架
本文适合有 SpringBoot 和 SpringCloud 基础知识的人群,跟着本文可使用和快速搭建 SpringCloud 项目. 本文作者:HelloGitHub-秦人 HelloGitHub ...
- Nacos配置中心和服务的注册发现
在上一篇中,我们已经把Nacos的集群搭建好了,那么既然已经搭建好了,就要在咱们的项目中去使用.Nacos既可以做配置中心,也可以做注册中心.我们先来看看在项目中如何使用Nacos做配置中心. Nac ...
- SpringCloud Alibaba Nacos服务注册与配置管理
Nacos SpringCloud Alibaba Nacos是一个狗抑郁构建云原生应用的动态服务发现.配置管理和服务管理平台. Nacos:Dynamic Naming and Configurat ...
- Spring Cloud 系列之 Alibaba Nacos 注册中心(二)
本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Alibaba Nacos 注册中心(一) 本篇文章讲解 Nacos 注册中心集群环境搭建. Nacos 集群环境搭建 ...
随机推荐
- MAUI模板项目闪退问题
MAUI模板项目闪退问题 在MAUI最初发布的时候就曾创建过几个模板项目进行体验过,没遇到什么坑.由于最近需要开发针对餐饮行业的收银机(安卓系统)开发一款应用,这种收银机一般配置不咋滴,系统版本和性能 ...
- 22.LVS+Keepalived 高可用群集
LVS+Keepalived 高可用群集 目录 LVS+Keepalived 高可用群集 keepalived工具介绍 Keepalived实现原理剖析 VRRP(虚拟路由冗余协议) VRRP 相关术 ...
- 安装typescript环境并开启VSCode自动监视编译ts文件为js文件
一.前言 小编最近开始学习typescript,懂得人都知道,typescript是vue3的基础伴生,配合更加默契.就像vue2和js一样!typescript不像js那样浏览器直接可以解读,需要我 ...
- Leetcode--Last Stone Weight II
Last Stone Weight II 欢迎关注H寻梦人公众号 You are given an array of integers stones where stones[i] is the we ...
- 使用APICloud AVM框架开发预约应用
前段时间跟朋友一起搞了一个预约的项目,前端用的APICloud的AVM框架做的,后端用的php开发的,用的tp5框架,没几天就搞出来了.简单跟大家分享一下开发中的一些功能点的实现吧.也欢迎大家一起探讨 ...
- html字符超长后自动隐藏
style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;"
- Error:(4, 13) java: -source 1.5 中不支持默认方法 (请使用 -source 8 或更高版本以启用默认方法)
- 如何用车辆违章查询API接口进行快速开发
最近公司项目有一个车辆违章查询显示的小功能,想着如果用现成的API就可以大大提高开发效率,所以在网上的API商店搜索了一番,发现了 APISpace,它里面的车辆违章查询API非常符合我的开发需求. ...
- 在 IDEA 里下个五子棋不过分吧?
大家好,我是二哥呀!今天给大家分享一个基于Netty的IDEA即时聊天插件,可以实现即时聊天.游戏对战(下棋). GitHub 地址:https://github.com/anlingyi/xecha ...
- 二叉排序树的合并(严3.98)--------西工大noj
二叉排序树的合并有三种方法 先存入数组,然后..... 直接在第二个树上添加第一个数的元素,时间复杂度为O(NlogN) 就像是合并数组一样合并二叉排序树,分别扫描,时间复杂度极低. 第三种我写了一下 ...