当前位置:   article > 正文

【微服务笔记20】微服务组件之Nacos配置中心基础环境搭建、配置持久化、动态刷新配置_nacos 配置中心 搭建

nacos 配置中心 搭建

这篇文章,主要介绍微服务组件之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)引入依赖

  1. <!-- 引入 nacos config 配置中心客户端依赖 -->
  2. <dependency>
  3. <groupId>com.alibaba.cloud</groupId>
  4. <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  5. </dependency>

(2)添加配置信息

引入nacos-config配置中心客户端依赖之后,还需要告诉应用程序,从哪个地址获取配置信息,需要在【bootstrap.yml】配置文件中,添加如下内容:

  1. server:
  2. port: 9988
  3. spring:
  4. application:
  5. name: nacos-config-consumer # 微服务名称
  6. cloud:
  7. # 这里是nacos的配置属性
  8. nacos:
  9. # 配置中心配置,配置管理
  10. config:
  11. enabled: true # 启用nacos配置中心
  12. server-addr: 127.0.0.1:8848 # nacos server 配置中心服务端的地址
  13. namespace: dev # 命名空间,用于区别不同的环境,例如:开发环境、测试环境
  14. group: DEFAULT_GROUP # 分组名称,可以看作是一个项目工程
  15. prefix: 'application-dev' # 配置文件的 dataid 值
  16. file-extension: yaml # 指定配置文件的扩展名称,文件后缀

(3)创建配置信息

打开nacos控制台界面,进入配置管理菜单,配置列表界面,选择创建配置,输入配置信息即可。

(4)编写测试类

  1. package com.gitcode.demo.controller;
  2. import org.springframework.beans.factory.annotation.Value;
  3. import org.springframework.web.bind.annotation.GetMapping;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5. import org.springframework.web.bind.annotation.RestController;
  6. /**
  7. * @version 1.0.0
  8. * @Date: 2023/4/22 17:24
  9. * @Copyright (C) ZhuYouBin
  10. * @Description:
  11. */
  12. @RestController
  13. @RequestMapping("/api/nacos")
  14. public class GetConfigController {
  15. @Value("${appVersion}")
  16. private String appVersion;
  17. @Value("${appName}")
  18. private String appName;
  19. @GetMapping("/getConfig")
  20. public String getConfig() {
  21. String msg = "应用名称: " + appName + ", 当前版本: " + appVersion;
  22. System.out.println(msg);
  23. return msg;
  24. }
  25. }

(5)运行测试

启动工程,浏览器访问【localhost:9988/api/nacos/getConfig】地址,查看是否能够获取到配置信息。

(6)动态刷新配置

当配置信息修改之后,默认情况下,客户端是不会动态的获取最新配置的,不过可以通过下面几种方式实现配置的动态刷新功能。

  • 第一种情况:如果使用的是【@Value】注解获取的配置信息,那就可以结合【@RefreshScope】注解实现,动态刷新配置。
  • 第二种情况:通过注入【ConfigurableApplicationContext】对象,调用该对象的【getEnvironment()】方法,获取到环境对象,再调用其中的【getProperty()】方法,动态获取配置信息。
  1. package com.gitcode.demo.controller;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.beans.factory.annotation.Value;
  4. import org.springframework.cloud.context.config.annotation.RefreshScope;
  5. import org.springframework.context.ConfigurableApplicationContext;
  6. import org.springframework.core.env.ConfigurableEnvironment;
  7. import org.springframework.web.bind.annotation.GetMapping;
  8. import org.springframework.web.bind.annotation.RequestMapping;
  9. import org.springframework.web.bind.annotation.RestController;
  10. /**
  11. * @version 1.0.0
  12. * @Date: 2023/4/22 17:24
  13. * @Copyright (C) ZhuYouBin
  14. * @Description:
  15. */
  16. // 动态刷新配置
  17. @RefreshScope
  18. @RestController
  19. @RequestMapping("/api/nacos")
  20. public class GetConfigController {
  21. @Value("${appVersion}")
  22. private String appVersion;
  23. @Value("${appName}")
  24. private String appName;
  25. /**
  26. * 注入配置上下文对象
  27. */
  28. @Autowired
  29. private ConfigurableApplicationContext applicationContext;
  30. @GetMapping("/getConfig")
  31. public String getConfig() {
  32. String msg = "应用名称: " + appName + ", 当前版本: " + appVersion;
  33. System.out.println(msg);
  34. return msg;
  35. }
  36. @GetMapping("/getConfig2")
  37. public String getConfig2() {
  38. ConfigurableEnvironment environment = applicationContext.getEnvironment();
  39. String appName = environment.getProperty("appName");
  40. String appVersion = environment.getProperty("appVersion");
  41. String msg = "应用名称: " + appName + ", 当前版本: " + appVersion;
  42. System.out.println(msg);
  43. return msg;
  44. }
  45. }

到此,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数据库的连接信息。

  1. # 启用mysql进行持久化
  2. spring.datasource.platform=mysql
  3. # 数据库的数量
  4. db.num=1
  5. # 数据库连接地址
  6. 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
  7. db.user.0=root
  8. db.password.0=root

修改完成之后,重新启动Nacos Server服务即可实现配置信息的持久化。

2.3、运行测试

重新启动Nacos Server服务,然后进入nacos控制台,创建配置信息,查看MySQL数据库中是否有对应的数据记录即可。

到此,nacos配置信息就成功的持久化到MySQL数据库啦。

综上,这篇文章结束了,主要介绍微服务组件之Nacos配置中心基础环境搭建、配置持久化、动态刷新配置。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/284406
推荐阅读
相关标签
  

闽ICP备14008679号