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/Shanghaidriver-class-name: com.mysql.cj.jdbc.Driverusername: ${hm.db.un:root}password: ${hm.db.pw:123}
mybatis-plus:configuration:default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandlerglobal-config:db-config:update-strategy: not_nullid-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: devcloud:nacos:server-addr: 192.168.218.15:8848config: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
无需重启,再次测试购物车功能:

加入成功!
无需重启服务,这说明我们的配置热更新就生效了!
相关文章:
Nacos配置管理+共享配置、配置热更新
1. 什么是配置管理? Nacos 配置管理是一个集中管理配置的工具。 它把微服务的配置集中存放,方便管理。可以动态更新配置,配置变了,微服务能马上知道并更新,不用重启。还能进行版本控制,记录配置的历史版本方便回滚。…...
asp.net core系统记录当前在线人数
实时记录当前在线人数,登录后保持120秒在线状态,在线状态保存在缓存中,采用滑动过期,在120秒内请求了系统,自动续活120秒;超过时间则移除用户在线状态; 需要在登录过滤器标记用户在线状态需要排…...
秒杀场景的设计思考
秒杀场景的设计思考 在学习Redis的之后,一个绕不开的话题就是秒杀系统的设计。本文将从下面👇🏻几个方面展开一下个人简单的理解: 秒杀场景的介绍设计的核心思路怎么限流、削峰、异步planB总结 秒杀场景的介绍 秒杀场景是…...
快速掌握Haproxy原理架构
文章目录 一、原理架构二、无负载均衡三、四层负载均衡的工作流程四、七层负载均衡工作流程五、基础属性mode 属性retries 属性maxconn 属性clitimeout 属性servtimeout 属性states uri 属性 一、原理架构 四层tcp代理:Haproxy仅在客户端和服务器之间双向转发流量&…...
基于Centos7.X系统端口占用处理
1、查看当前端口占用情况 使用 netstat 查看系统中占用的端口和相关的进程。 netstat -tuln 或者 ss -tnl 选项解释: -t 显示 TCP 连接-u 显示 UDP 连接-l 显示监听的端口-n 以数字形式显示端口号和 IP 2、具体进程的pid netstat -anp | grep <port_numb…...
MySQL的索引失效的原因有那些
1. 数据类型不匹配 详细说明:MySQL在比较不同数据类型的值时,可能会尝试进行隐式转换。如果这种转换导致了复杂度增加或无法直接利用索引,则会导致索引失效。 实例与解决方案: -- 错误示例:数据类型不匹配 select *…...
Java重要面试名词整理(十):Kafka
文章目录 Kafka简介相关概念Kraft集群 Kafka收发消息梳理客户端工作机制消费者分组消费机制生产者拦截器机制消息序列化机制消息分区路由机制生产者消息缓存机制发送应答机制生产者消息幂等性生产者消息事务 Kafka集群架构设计-Kafka的Zookeeper元数据梳理Leader Partition选举…...
内置ALC的前置放大器D2538A/D3308
一、概述 D2538A/D3308是芯谷科技推出的带有ALC(自动电平控制)的前置音频放大器芯片,最初产品为单声道/立体声收录机及盒式录音机而开发,作为录音/回放的磁头放大器使用;由于产品的高增益、低噪声及ALC外部可调的特性&…...
04-微服务02
我们将黑马商城拆分为5个微服务: 用户服务 商品服务 购物车服务 交易服务 支付服务 由于每个微服务都有不同的地址或端口,相信大家在与前端联调的时候发现了一些问题: 请求不同数据时要访问不同的入口,需要维护多个入口地址…...
Java中的this关键字详解:深入理解与应用
目录 一、this关键字的基本概念 二、this指代当前对象 示例: 三、this区分成员变量与方法参数 示例: 四、使用this()调用构造方法 示例: 五、使用this传递当前对象 示例: 六、this的其他注意事项输出结果: …...
2、C#基于.net framework的应用开发实战编程 - 设计(二、四) - 编程手把手系列文章...
二、设计; 二.四、制定设计规范; 编码规范在软件编程里起到了非常重要的作用,主要是让代码更加的规范化,更加的简洁,更加的漂亮,更加的能够面向对象显示。 以前那个系列就有发布C#的编码规范的文…...
设置首选网络类型以及调用Android框架层的隐藏API
在Android SDK中提供的framework.jar是阉割版本的,比如有些类标记为hide,这些类不会被打包到这个jar中,而有些只是类中的某个方法或或属性被标记为hide,则这些类或属性会被打包到framework.jar,但是我们无法调用&#…...
“Gold-YOLO:基于聚合与分发机制的高效目标检测新范式”
🏡作者主页:点击! 🤖编程探索专栏:点击! ⏰️创作时间:2024年12月26日8点00分 神秘男子影, 秘而不宣藏。 泣意深不见, 男子自持重, 子夜独自沉。 论文源地址(有视频…...
神经网络-AlexNet
AlexNet是在2012年的ImageNet竞赛后,整理发表的文章,也是对CNN网络的衍生。 网络结构 AlexNet网络结构如下图所示,网络分为了上下两部分,对应两个不同的GPU训练,可以更好的利用GPU算力。只有在特殊的网络层后&#x…...
Hutool 发送 HTTP 请求的几种常见写法
最简单的 GET 请求: String result HttpUtil.get("https://www.baidu.com");带参数的 GET 请求: // 方法1: 直接拼接URL参数 String result HttpUtil.get("https://www.baidu.com?name张三&age18");// 方法2: 使用 HashMap…...
【Linux】进度条
本文中,我们来写一个进度条。 本文大纲: 写一个命令行版的进度条。 1.回车换行 2.缓冲区问题(本文不深究) 2.1测试代码 3.写一个什么样的进度条? version1 version2 回车换行 这俩不是一个概念&…...
【zookeeper核心源码解析】第四课:客户端与服务端读写的io核心流程
系列文章目录 【zookeeper核心源码解析】第一课:zk启动类核心流程序列图 【zookeeper核心源码解析】第二课:俯瞰QuorumPeer启动核心流程,实现选举关键流程 【zookeeper核心源码解析】第三课:leader与follower何时开始同步&#…...
强化学习蘑菇书笔记
绪论 强化学习就是一个智能体在一个不确定的环境中最大化它的奖励。智能体在一个环境中获取某个状态后,做一个动作,也称为决策,在环境中执行这个决策以后,会有一个奖励。尽可能多地获得更多的奖励。 强化学习概述 强化学习与监…...
《机器学习》——线性回归模型
文章目录 线性回归模型简介一元线性回归模型多元线性回归模型误差项分析一元线性模型实例完整代码 多元线性模型实例完整代码 线性回归模型简介 线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。 相关关系&…...
Linux(Centos 7.6)网卡信息没有了问题处理
1.问题现象 虚拟机打开后,使用ifconfig查看IP信息,虚拟机默认的网卡名称是ens33,ifconfig没有看到相关问题,远程连接工具Xshell也不能正常访问该虚拟机。 [rootnode1 ~]# ifconfig lo: flags73<UP,LOOPBACK,RUNNING> mtu…...
Qwen3-ForcedAligner-0.6B真实效果:实时录音场景下口音适应与断句准确性展示
Qwen3-ForcedAligner-0.6B真实效果:实时录音场景下口音适应与断句准确性展示 1. 项目概述 Qwen3-ForcedAligner-0.6B是阿里巴巴基于Qwen3-ASR-1.7B和ForcedAligner-0.6B双模型架构开发的本地智能语音转录工具。这个工具最大的特点是能够在完全离线的环境下&#x…...
Phi-4-reasoning-vision-15B在研发协作中的应用:代码IDE截图理解与问题定位
Phi-4-reasoning-vision-15B在研发协作中的应用:代码IDE截图理解与问题定位 1. 引言:研发协作中的视觉理解需求 在软件开发团队中,工程师们每天都要处理大量代码截图和IDE界面。当遇到问题时,最常见的做法是把报错截图或代码片段…...
OpenClaw学习记录:Phi-3-mini-128k-instruct自动生成Anki记忆卡片
OpenClaw学习记录:Phi-3-mini-128k-instruct自动生成Anki记忆卡片 1. 为什么需要自动化记忆卡片 备考过程中最痛苦的经历莫过于整理海量笔记后,还要手动制作Anki记忆卡片。去年准备技术认证考试时,我花了整整两周时间把300多页PDF的精华内容…...
ThinkPHP5防跨目录访问报错?手把手教你如何安全解除LNMP的open_basedir限制
ThinkPHP5跨目录访问难题:LNMP环境下open_basedir限制的深度解析与安全实践 当你在LNMP环境中部署ThinkPHP5应用时,是否遇到过这样的报错信息?那些红色的"Warning"和"Fatal error"不仅打断了安装流程,更让人对…...
从沙漏到矿机:聊聊离散元法DEM是怎么‘算’出颗粒世界的(附Rocky/EDEM软件对比与学习资源)
从沙漏到矿机:离散元法DEM如何重构颗粒世界的数字镜像 沙漏里的细沙流淌时,每一粒沙子都在重力和碰撞中演绎着独特的运动轨迹。这种看似简单的物理现象背后,隐藏着一个复杂的多体动力学问题——如何精确描述成千上万颗粒之间的相互作用&#…...
【PyCon 2025闭门分享精要】:Python 3.14 JIT底层调度器深度调优——用3行代码撬动47% CPU利用率提升
第一章:Python 3.14 JIT编译器性能调优配置总览Python 3.14 引入了实验性内置 JIT(Just-In-Time)编译器,基于 Pyston 的优化后端重构,支持函数级动态编译与类型特化。该 JIT 默认处于禁用状态,需通过环境变…...
氧化镓高体积热容的特性,集成高介电常数界面的结侧冷却架构
速览:技术背景与挑战背景: 虽然宽禁带(WBG)半导体(如SiC、GaN)已取得进展,但超宽禁带(UWBG)材料如氧化镓(Ga₂O₃)具有更高的理论极限。痛点&…...
OpenClaw模型配置详解:Kimi-VL-A3B-Thinking多模态接口接入
OpenClaw模型配置详解:Kimi-VL-A3B-Thinking多模态接口接入 1. 为什么选择Kimi-VL-A3B-Thinking 去年我在尝试构建一个自动化内容处理工作流时,发现市面上大多数模型对图文混合内容的理解能力有限。直到偶然在开发者社区看到Kimi-VL-A3B-Thining的评测…...
Python高效处理MDF/MF4数据的实战指南——asammdf深度解析
1. 为什么你需要asammdf处理MDF/MF4文件 第一次接触汽车测试数据时,我被各种.MDF和.MF4文件搞得晕头转向。这些由CANape、INCA等工具生成的测量数据格式,记录着车辆运行时各传感器的海量信息。传统做法是用厂商配套软件打开,但当你需要批量处…...
论文引用格式太复杂?9种主流标准一键搞定,2026年硕博生必备神器推荐
💡 核心要点 你是否也遇到过这样的崩溃时刻:熬夜写完论文,却被导师的一句"引用格式不规范,重新调整"打回原形?手动调整APA、MLA、GB/T 7714等不同格式,一个标点符号都不能错,一篇论文…...
