赞
踩
这篇文章,主要介绍微服务组件之Nacos配置中心基础环境搭建、配置持久化、动态刷新配置。
目录
Nacos是Spring Cloud Alibaba微服务生态中,一个可以实现服务发现、配置管理的组件,也就是说Nacos同时具备了注册中心、配置中心的功能,和Spring Cloud Config的配置中心不同的是,Nacos实现的配置中心可以将内容保存在Git仓库里面,也可以将配置信息保存到MySQL数据库里面,默认情况下,配置信息是采用嵌入式的数据库保存的。
前一篇文章介绍了Nacos实现注册中心的功能,并且搭建了Nacos Server服务端工程,这篇文章也是需要使用Nacos Server服务端工程,可以参考前一篇文章搭建【【微服务笔记19】微服务组件之Nacos注册中心基础环境搭建】。
- <!-- 引入 nacos config 配置中心客户端依赖 -->
- <dependency>
- <groupId>com.alibaba.cloud</groupId>
- <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
- </dependency>
引入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 # 指定配置文件的扩展名称,文件后缀
打开nacos控制台界面,进入配置管理菜单,配置列表界面,选择创建配置,输入配置信息即可。
- 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;
- }
- }
启动工程,浏览器访问【localhost:9988/api/nacos/getConfig】地址,查看是否能够获取到配置信息。
当配置信息修改之后,默认情况下,客户端是不会动态的获取最新配置的,不过可以通过下面几种方式实现配置的动态刷新功能。
- 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配置中心客户端就搭建好啦。
默认情况下,nacos是采用嵌入式的数据库保存配置信息,当然它也支持将配置信息保存到MySQL数据库里面,这就需要我们手动修改NacosServer工程的配置文件,修改配置文件之间,需要创建好对应的MySQL数据库。
打开Nacos Server工程的解压目录,进入里面的【conf】目录下,找到一个【mysql-schema.sql】文件,这个就是nacos提供给我们的持久化数据库的SQL脚本文件,将这个SQL脚本文件导入到MySQL数据库里面即可。
进入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服务即可实现配置信息的持久化。
重新启动Nacos Server服务,然后进入nacos控制台,创建配置信息,查看MySQL数据库中是否有对应的数据记录即可。
到此,nacos配置信息就成功的持久化到MySQL数据库啦。
综上,这篇文章结束了,主要介绍微服务组件之Nacos配置中心基础环境搭建、配置持久化、动态刷新配置。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。