这篇文章,主要介绍微服务组件之Nacos配置中心基础环境搭建、配置持久化、动态刷新配置。
目录
一、搭建Nacos配置中心环境
1.1、Nacos配置中心介绍
1.2、搭建Nacos配置中心客户端
(1)引入依赖
(2)添加配置信息
(3)创建配置信息
(4)编写测试类
(5)运行测试
(6)动态刷新配置
二、配置持久化到MySQL
2.1、创建数据库
2.2、修改NacosServer服务端配置
2.3、运行测试
一、搭建Nacos配置中心环境
1.1、Nacos配置中心介绍
Nacos是Spring Cloud Alibaba微服务生态中,一个可以实现服务发现、配置管理的组件,也就是说Nacos同时具备了注册中心、配置中心的功能,和Spring Cloud Config的配置中心不同的是,Nacos实现的配置中心可以将内容保存在Git仓库里面,也可以将配置信息保存到MySQL数据库里面,默认情况下,配置信息是采用嵌入式的数据库保存的。
前一篇文章介绍了Nacos实现注册中心的功能,并且搭建了Nacos Server服务端工程,这篇文章也是需要使用Nacos Server服务端工程,可以参考前一篇文章搭建【【微服务笔记19】微服务组件之Nacos注册中心基础环境搭建】。
1.2、搭建Nacos配置中心客户端
(1)引入依赖
<!-- 引入 nacos config 配置中心客户端依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
(2)添加配置信息
引入nacos-config配置中心客户端依赖之后,还需要告诉应用程序,从哪个地址获取配置信息,需要在【bootstrap.yml】配置文件中,添加如下内容:
server:
port: 9988
spring:
application:
name: nacos-config-consumer # 微服务名称
cloud:
# 这里是nacos的配置属性
nacos:
# 配置中心配置,配置管理
config:
enabled: true # 启用nacos配置中心
server-addr: 127.0.0.1:8848 # nacos server 配置中心服务端的地址
namespace: dev # 命名空间,用于区别不同的环境,例如:开发环境、测试环境
group: DEFAULT_GROUP # 分组名称,可以看作是一个项目工程
prefix: 'application-dev' # 配置文件的 dataid 值
file-extension: yaml # 指定配置文件的扩展名称,文件后缀
(3)创建配置信息
打开nacos控制台界面,进入配置管理菜单,配置列表界面,选择创建配置,输入配置信息即可。
(4)编写测试类
package com.gitcode.demo.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @version 1.0.0
* @Date: 2023/4/22 17:24
* @Copyright (C) ZhuYouBin
* @Description:
*/
@RestController
@RequestMapping("/api/nacos")
public class GetConfigController {
@Value("${appVersion}")
private String appVersion;
@Value("${appName}")
private String appName;
@GetMapping("/getConfig")
public String getConfig() {
String msg = "应用名称: " + appName + ", 当前版本: " + appVersion;
System.out.println(msg);
return msg;
}
}
(5)运行测试
启动工程,浏览器访问【localhost:9988/api/nacos/getConfig】地址,查看是否能够获取到配置信息。
(6)动态刷新配置
当配置信息修改之后,默认情况下,客户端是不会动态的获取最新配置的,不过可以通过下面几种方式实现配置的动态刷新功能。
- 第一种情况:如果使用的是【@Value】注解获取的配置信息,那就可以结合【@RefreshScope】注解实现,动态刷新配置。
- 第二种情况:通过注入【ConfigurableApplicationContext】对象,调用该对象的【getEnvironment()】方法,获取到环境对象,再调用其中的【getProperty()】方法,动态获取配置信息。
package com.gitcode.demo.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @version 1.0.0
* @Date: 2023/4/22 17:24
* @Copyright (C) ZhuYouBin
* @Description:
*/
// 动态刷新配置
@RefreshScope
@RestController
@RequestMapping("/api/nacos")
public class GetConfigController {
@Value("${appVersion}")
private String appVersion;
@Value("${appName}")
private String appName;
/**
* 注入配置上下文对象
*/
@Autowired
private ConfigurableApplicationContext applicationContext;
@GetMapping("/getConfig")
public String getConfig() {
String msg = "应用名称: " + appName + ", 当前版本: " + appVersion;
System.out.println(msg);
return msg;
}
@GetMapping("/getConfig2")
public String getConfig2() {
ConfigurableEnvironment environment = applicationContext.getEnvironment();
String appName = environment.getProperty("appName");
String appVersion = environment.getProperty("appVersion");
String msg = "应用名称: " + appName + ", 当前版本: " + appVersion;
System.out.println(msg);
return msg;
}
}
到此,nacos配置中心客户端就搭建好啦。
二、配置持久化到MySQL
2.1、创建数据库
默认情况下,nacos是采用嵌入式的数据库保存配置信息,当然它也支持将配置信息保存到MySQL数据库里面,这就需要我们手动修改NacosServer工程的配置文件,修改配置文件之间,需要创建好对应的MySQL数据库。
打开Nacos Server工程的解压目录,进入里面的【conf】目录下,找到一个【mysql-schema.sql】文件,这个就是nacos提供给我们的持久化数据库的SQL脚本文件,将这个SQL脚本文件导入到MySQL数据库里面即可。
2.2、修改NacosServer服务端配置
进入Nacos Server服务端的【conf】目录下,找到【application.properties】配置文件,修改MySQL数据库的连接信息。
# 启用mysql进行持久化
spring.datasource.platform=mysql
# 数据库的数量
db.num=1
# 数据库连接地址
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
db.user.0=root
db.password.0=root
修改完成之后,重新启动Nacos Server服务即可实现配置信息的持久化。
2.3、运行测试
重新启动Nacos Server服务,然后进入nacos控制台,创建配置信息,查看MySQL数据库中是否有对应的数据记录即可。
到此,nacos配置信息就成功的持久化到MySQL数据库啦。
综上,这篇文章结束了,主要介绍微服务组件之Nacos配置中心基础环境搭建、配置持久化、动态刷新配置。