当前位置: 首页 > article >正文

Nacos配置管理+共享配置、配置热更新

1. 什么是配置管理?

Nacos 配置管理是一个集中管理配置的工具。

它把微服务的配置集中存放,方便管理。可以动态更新配置,配置变了,微服务能马上知道并更新,不用重启。还能进行版本控制,记录配置的历史版本方便回滚。并且可以对配置分组,区分不同环境或项目组的配置。同时有一定的权限控制保障配置安全


2. 共享配置

把微服务共享的配置抽取到Nacos中统一管理,这样就不需要每个微服务都重复配置了。分为两步:

2.1. 在Nacos中添加共享配置

cart-service购物车模块为例,将application.yaml中重复的配置集中一起放到Nacos管理中

jdbc相关配置:

日志相关配置:

然后是swagger以及OpenFeign的配置:

而后在nacos控制台分别添加这些配置。

 在配置管理->配置列表中点击+新建一个配置:

在弹出的表单中填写对应信息:

 详细配置信息如下:

spring:
  datasource:
    url: jdbc:mysql://${hm.db.host:192.168.218.15}:${hm.db.port:3307}/${hm.db.database}?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: ${hm.db.un:root}
    password: ${hm.db.pw:123}
mybatis-plus:
  configuration:
    default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler
  global-config:
    db-config:
      update-strategy: not_null
      id-type: auto

这里的jdbc的相关参数并没有写死,例如:

  • 数据库ip:通过${hm.db.host:192.168.218.15}配置了默认值192.168.218.15,同时允许通过${hm.db.host}来覆盖默认值

  • 数据库端口:同样通过${hm.db.port:3307}配置了默认值为3307,同时允许通过${hm.db.port}来覆盖默认值

  • 数据库database:可以通过${hm.db.database}来设定,无默认值

在控制台查看新增的配置


2.2 拉取共享配置

2.2.1 在cart-service模块中引入依赖:

代码如下:

        <!--nacos配置管理-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--读取bootstrap文件-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
2.2.2  新建bootstrap.yaml

代码如下:

spring:
  application:
    name: cart-service      # 微服务名称
  profiles:
    active: dev
  cloud:
    nacos:
      server-addr: 192.168.218.15:8848
      config:
        file-extension: yaml  # 配置文件类型
        shared-configs: #共享配置
          - data-id: shared-jdbc.yaml
          - data-id: shared-log.yaml
          - data-id: shared-swagger.yaml

2.2.3 修改cart-service模块的application.yaml

代码如下:

server:
  port: 8082
feign:
  okhttp:
    enabled: true  # 开启okhttp
hm:
  db:
    database: hm-cart  #数据库名
  swagger:
    title: "黑马商城购物车服务接口文档"
    package: com.hmall.cart.controller
2.2.4 测试

启动服务,发现所有配置都生效了,说明成功了!


3. 配置热更新

 配置热更新代表的我们修改完配置文件后,不需要重启服务,它会更新到微服务中,简单来说就是可以自动更新,不需要重新启动服务。

分为两步:

3.1 添加配置到Nacos

在nacos中添加一个配置文件,将购物车的上限数量添加到配置中

查看配置:

注意:  配置文件中购物车数量的变量名要和项目中读取配置类中定义的变量名要一致


3.2 新建一个属性读取类

新建一个config包,包下新一个名为CartProperties类,用来读取配置

代码如下:

package com.hmall.cart.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Data
@Component
@ConfigurationProperties(prefix = "hm.cart")
public class CartProperties {
    private Integer maxItems;
}

 在业务中使用该属性


3.3 测试

向购物车中添加多个商品 

在nacos控制台,将购物车上限配置为10

 

无需重启,再次测试购物车功能:

加入成功!

无需重启服务,这说明我们的配置热更新就生效了!


http://www.kler.cn/a/458172.html

相关文章:

  • Redis Stream:实时数据处理的高效解决方案
  • el-pagination 为什么只能展示 10 条数据(element-ui@2.15.13)
  • 【Rust自学】8.4. String类型 Pt.2:字节、标量值、字形簇以及字符串的各类操作
  • WebRTC的三大线程
  • 基本算法——分类
  • python爬虫--小白篇【selenium自动爬取文件】
  • [Unity Shader][Unity Shader][图形渲染]Shader数学基础19-选择使用3×3或4×4变换矩阵的技巧
  • 音视频入门基础:MPEG2-TS专题(23)——通过FFprobe显示TS流每个packet的信息
  • 设计宝藏解压密码
  • 单片机优先级
  • Java实现简单爬虫——爬取疫情数据
  • 定义Shape:打造属于你的独特图形
  • YOLOv10目标检测-训练自己的数据
  • LAION-SG:一个大规模、高质量的场景图结构注释数据集,为图像-文本模型训练带来了革命性的进步。
  • leecode377.组合总和IV
  • 【MySQL】十三,关于MySQL的全文索引
  • jangow靶机
  • 【探花交友】day01—项目介绍与环境搭建
  • 10道JavaWeb常问面试题
  • Dify服务器部署教程
  • Python中构建终端应用界面利器——Blessed模块
  • QT笔记- QTreeView + QFileSystemModel 当前位置的保存与恢复 #选中 #保存当前索引
  • 2025年我国网络安全发展形势展望
  • C语言基础学习记录-内存管理
  • TCP 为什么采用三次握手和四次挥手以及 TCP 和 UDP 的区别
  • 实用技巧:关于 AD修改原理图库如何同步更新到有原理图 的解决方法