微服务-nacos配置管理
Nacos配置管理
统一配置管理:一次配置更改并支持热更新。将核心配置存储到配置管理服务,当微服务启动时会自动读取配置管理服务中的配置信息并结合本地配置启动。当配置改动时,配置管理服务会自动通知微服务,微服务读取新配置并自动热更新,无需重新启动。
配置中心的思路是:
1、首先把项目中各种配置全部都放到一个集中的地方进行统一管理,并提供一套标准的接口。2、当各个服务需要获取配置的时候,就来配置中心的接口拉取自己的配置。
3、当配置中心中的各种参数有更新的时候,也能通知到各个服务实时的过来同步最新的信息,使之动态更新。
Hello配置管理
使用nacos作为配置中心,其实就是将nacos当做一个服务端,将各个微服务看成是客户端,将各个微服务的配置文件统一存放在nacos上,然后各个微服务从nacos上拉取配置即可。
对应的依赖为spring-cloud-starter-alibaba-nacos-config注意:启用配置中心后,需要配置文件写到bootstrap配置文件中。只能是bootstrap.yml或bootstrap.properties优先级等级为bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml
需要注意:SpringCloud默认将bootstrap移除了,需要手动添加bootstrap依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> <version>3.1.5</version></dependency
消费者配置
spring.cloud.nacos.config.server-addr=localhost:8848 服务配置中心的配置spring.cloud.nacos.config.file-extension=yaml 配置使用的后缀名spring.cloud.nacos.config.prefix=nacos-consumer 配置DataId名称,默认就是服务名称spring.cloud.nacos.config.group=DEFAULT_GROUP 默认分组名称spring.profiles.active=dev 读取指定配置文件,配置参数dev开发环境、prod生产环境、test测试环境
配置设置的概念:
- 命名空间Namespace:不同的项目可以分为不同的命名空间。
- 配置分组Group:根据项目的不同环境可以一个分组。
- 配置集Data ID:服务不同环境的不同配置,就是一个配置集
使用nacos配置管理
DataID就是配置文件名称,不能冲突,采用【微服务名称-profile.yaml或properties】,如user-service-dev.yaml。默认DataId为spring.cloud.nacos.config.prefix,后面可以添加spring.profiles.active值,对应的文件后缀为spring.cloud.nacos.config.file-extension
分组采用默认即可。配置内容应该只有可能有热更新需求的配置信息,不是将所application.yml中内容全部拷贝。例如数据库地址一般不会频繁更新的,所以添加到配置管理中就不合适。这里适合一些开关类型或者模板类型的配置,pattern.dateformat=yyyy-MM-dd
微服务配置拉取
项目启动先读取nacos中的配置文件,然后读取本地配置文件application.yaml,合并后再创建spring容器,加载受管bean。项目中提供bootstrap.yml优先application.yml,这里配置nacos地址,从而实现nacos中配置信息的读取在控制器中读取配置信息进行验证
@Value("${pattern.dateformat}")
private String dateFormat;
@GetMapping("now")public String now(){ return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateFormat));}
配置热更新
可以在nacos控制台上手动编辑更新配置信息。事实上nacos中的配置文件变更后,微服务无需重启就可以感知。需要通过2种配置方式实现
方式1:在@Value注入的变量所在类上添加注解@RefreshScope
@Slf4j @RestController @RequestMapping("/user")@RefreshScopepublic class UserController { @Value("pattern.dateformat") private String dateFormat;}
在微服务日志中可以看到服务更新的自动通知
方式2:使用@ConfigurationProperties注解
@Component @Data@ConfigurationProperties(prefix="pattern")public class PatternProperties { private String dataformat;}
修改控制器类通过PatternProperties组件获取配置信息
@Autowiredprivate PatternProperties properties;@GetMapping("now")public String now() { return LocalDateTime.now().format(DateTimeFormatter.ofPattern(properties.getDateformat()); }
推荐配置更新时优先考虑使用@ConfigurationProperties,而不是@Value+@RefreshScope
多环境配置共享
某个配置在开发、测试、生产等不同环境下的数据值一致,每个配置文件中都写一次是不合理的,而且修改时必须在每个配置文件中进行修改就更加的不合理了。微服务启动时会从nacos读取多个配置文件
- 【spring.application.name】-【spring.profiles.active】.yaml,例如userservice-dev.yaml
- 【spring.application.name】.yaml,例如userservice.yaml
- 【spring.application.name】,没有后缀,例如userservice无论profile如何变化,[spring.application.name].yaml文件一定会被加载,因此多环境共享配置可以写入这个配置文件中。多配置优先级:服务名-profile.yaml > 服务名.yaml > 本地配置
相关文章:
微服务-nacos配置管理
Nacos配置管理 统一配置管理:一次配置更改并支持热更新。将核心配置存储到配置管理服务,当微服务启动时会自动读取配置管理服务中的配置信息并结合本地配置启动。当配置改动时,配置管理服务会自动通知微服务,微服务读取新配置并自…...
【开发问题】flink的sql任务,用命令行执行
flink-sql 命令行flink-sql的客户端sql文件地址sql的内容 命令行 /mnt/flink/flink-1.17.1/bin/sql-client.sh embedded -f /mnt/flink/flink-1.17.1/examples/sql/oracle2Oracle flink-sql的客户端 /mnt/flink/flink-1.17.1/bin/sql-client.shsql文件地址 /mnt/flink/flink-1…...
Git常见问题
git clone 提示OpenSSL SSL_read git clone 时提示Connection was reset, errno 10054类错误 fatal: unable to acce ss https://github.com/fex-team/ueditor.git/: OpenSSL SSL_read: Connection was reset, errno 10054 备注:以下方法只是归纳整理,…...
Android如何实现开机自启
开机自启有很多种办法,下面用广播的方式实现。 1、首先先创建广播,开机代码 /*** Created by Forrest.* User: Administrator* Date: 2023/3/6* Description:*/ public class BootCompleteReceiver extends BroadcastReceiver {Overridepublic void on…...
Java数组实现的简单点名器
Java数组实现的简单点名器 需求分析代码实现小结Time 需求分析 Java数组实现的简单点名器 用数组将名单存储,然后调用Random函数取随机数实现随机点名。 代码实现 import java.util.Random;public class DianMingDemo {public static void main(String[] args) {//…...
百度UEditor编辑器如何关闭抓取远程图片功能
百度UEditor编辑器如何关闭抓取远程图片功能 这个坑娘的功能,开始时居然不知道如何触发,以为有个按钮,点击一下触发,翻阅了文档,没有发现,然后再网络上看到原来是复制粘贴非白名单内的图片到编辑框时触发&a…...
网站无法访问的常见原因
有多种问题可能会阻止用户访问您的网站。本文将解决无法访问网站,且没有错误消息指示确切问题的情况,希望对您有所帮助。 无法访问网站的常见原因有: (1)DNS 设置不正确。 (2)域名已过期。 (3)空白或没有索引文件。 (4)网络连接问题。 DNS 设…...
(树) 剑指 Offer 34. 二叉树中和为某一值的路径 ——【Leetcode每日一题】
❓ 剑指 Offer 34. 二叉树中和为某一值的路径 难度:中等 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:…...
HDFS集群滚动升级以及回滚相关
HDFS集群滚动升级以及回滚相关 介绍不停机滚动升级非联邦HA集群联邦HA集群 停机升级--非HA集群HDFS集群降级和回滚异同点共同点不同点 HA集群降级(downgrade)注意事项 集群回滚操作 介绍 在hadoop v2中,HDFS支持namenode高可用(H…...
【LeetCode】094. 分割回文串II
文章目录 1. 解题思路1.1 创建dp表1.2 状态转移方程1.3 提前求出所有子串是否是回文串 2. 整体代码 1. 解题思路 1.1 创建dp表 这道题我们使用动态规划的方法来解,首先创建一个大小为字符串长度的dp表。dp[i] 表示 s[0, i] 的字符串最小划分多少次可以全划分为回文…...
CBCGPRibbon 添加背景图片
resource.h中声明资源的ID:ID_RIBBON_BACKIMAGE rc文件中添加png图片路径: ID_RIBBON_BACKIMAGE PNG DISCARDABLE "res\\bkribbon.png" 代码中添加下测: //添加背景图片 m_wndRibbonBar.SetBackgroundImage(ID_RIB…...
无涯教程-Perl - last 语句函数
当在循环内遇到 last 语句时,循环立即终止,程序控制在循环后的下一条语句处恢复。您可以为LABEL提供最后一个语句,其中LABEL是循环的标签。 last 语句可以在嵌套循环内使用,如果未指定LABEL,则该语句将适用于最近的循环…...
网络安全 Day13-Linux三剑客awk知识
Linux三剑客awk知识 1. awk 介绍2. awk 语法3. 练习 1. awk 介绍 awk 是一门语言, 也是一个命令,Linux 有三剑客命令: grep/sed/awk三剑客的特长 grep 过滤内容sed 取行awk 取列 2. awk 语法 取列 取第一列文件($1): awk {print $1} 文件指定分隔符为文件: awk -F "指…...
java讲解Spring Boot配置文件级别 相互覆盖关系 解决一方不愿意给数据库密码 一方不愿意给源码时 数据库配置问题
前面 我们讲过Spring Boot 修改临时变量的方式 但另一个场景 就是 我们 在本地开发环境 用的是一个配置 但如果项目经理上线 他想改这些配置 怎么弄呢 特别是数据库之类的配置 很多线上是不太一样的 那么 我们先看一个比较基本的方法 在配置文件的同目录下创建一个目录 叫 con…...
点击表格行高亮
css中三元表达式 :class"[activeIndex index ? color : , item]"点击行高亮 <div click"actvied(index)" :class"[activeIndex index ? color : , item]"v-for"(item, index) in tableData" :key"index">{{ item…...
基于粒子群优化算法的配电网光伏储能双层优化配置模型[IEEE33节点](选址定容)(Matlab代码实现)
目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码、数据、讲解 💥1 概述 由于能源的日益匮乏,电力需求的不断增长等,配电网中分布式能源渗透率不断提高,且逐渐向主动配电网方…...
零代码爬虫平台SpiderFlow的安装
什么是 Spider Flow ? Spider Flow 是一个高度灵活可配置的爬虫平台,用户无需编写代码,以流程图的方式,即可实现爬虫。该工具支持多数据源、自动保存至数据库、任务监控、抓取 JS 动态渲染页面、插件扩展(OCR 识别、邮…...
Java 与其他编程语言:比较分析
Java 擅长可移植性和可靠性,Python 擅长通用性和简单性,JavaScript 擅长 Web 开发,C 擅长性能,Go 擅长效率。 在广阔的软件开发世界中,选择正确的编程语言对于任何项目的成功都至关重要。Java 是一种以其多功能性和可移…...
Linux性能分析工具介绍(二)--内存、进程、磁盘、IO分析
目录 一、引言 二、Linux性能分析工具介绍 ------>2.1、进程 ------>2.2、内存 ------>2.3、磁盘 ------>2.4、IO 一、引言 本章从内存、IO、进程的角度,分析linux系统的性能 二、Linux性能分析工具介绍 2.1、进程 2.1.1、top top命令可以动态查看进程…...
海外热门地区/国家常见主体证件示例
海外热门地区/国家常见主体证件示例(本页面内容较多,你可以通过CtrlF搜索) Overseas Popular Areas / Countries Examples of Common certificates (This page has more content, you can search by CtrlF) 中国香港…...
macOS极简安装OpenClaw:gemma-3-12b-it镜像10分钟体验
macOS极简安装OpenClaw:gemma-3-12b-it镜像10分钟体验 1. 为什么选择OpenClawGemma组合 上周我在测试自动化工作流时,偶然发现OpenClaw这个开源框架。它最吸引我的是能直接在本地电脑上实现"AI操控电脑"——就像有个数字员工帮你点击鼠标、整…...
第23章 2014真题作文
目录 题目2014.11-论软件需求管理 题目2014.11-论非功能性需求对企业应用架构设计的影响 题目2014.11-论软件的可靠性设计 题目2014.11-论网络安全体系设计 题目2014.11-论软件需求管理 软件需求管理是一个对系统需求变更了解和控制的过程。需求管理过程与需求开发过程相互…...
Linux内核模块加载机制深度解析
1. Linux内核模块加载机制深度解析在Linux系统开发中,内核模块的动态加载机制为开发者提供了极大的灵活性。作为一名长期从事内核开发的工程师,我经常需要深入理解模块加载的完整流程,这对调试复杂驱动问题和性能优化至关重要。本文将以linux…...
AI Agent三大核心组件解析:Skills、MCP与Plugins
随着人工智能技术的快速发展,AI Agent已成为连接用户需求与智能服务的重要桥梁。在构建高效的AI Agent系统时,Skills、MCP和Plugins构成了其核心功能架构的三个重要组成部分。本文将深入分析这三种组件的特点、差异以及它们在AI Agent体系中的协同作用。…...
FreeRTOS消息队列原理与实战应用指南
1. FreeRTOS消息队列核心概念解析消息队列作为FreeRTOS中最核心的通信机制之一,其设计理念源于操作系统中的生产者-消费者模型。在实际嵌入式开发中,我经常用它来解决任务间的数据传递问题。与裸机编程中的全局变量共享不同,消息队列通过内核…...
企业SEO优化与个人SEO优化有什么不同_外部链接建设在SEO优化中扮演什么角色
企业SEO优化与个人SEO优化的不同 在当今数字化时代,SEO(搜索引擎优化)已成为企业和个人提升在线曝光度和吸引流量的关键策略。企业SEO优化与个人SEO优化在策略、目标和实施上存在显著差异。了解这些不同是制定有效优化计划的重要一步。 企业…...
CSS Scroll Snap:打造丝滑滚动体验
CSS Scroll Snap:打造丝滑滚动体验让滚动不再是粗暴的跳跃,而是优雅的吸附。CSS Scroll Snap 让页面流动如丝绸般顺滑。一、为什么需要 Scroll Snap? 作为一名追求像素级还原的 UI 匠人,我深知一个粗糙的滚动体验能瞬间毁掉精心设…...
postcss-cssnext替代方案终极指南:如何选择最适合的CSS工具
postcss-cssnext替代方案终极指南:如何选择最适合的CSS工具 【免费下载链接】postcss-cssnext postcss-cssnext has been deprecated in favor of postcss-preset-env. 项目地址: https://gitcode.com/gh_mirrors/po/postcss-cssnext 曾经让前端开发者能够使…...
从零搭建AI开发环境:Python 3.10.11、CUDA 12.1与PyTorch一站式配置指南
1. 环境准备:从零开始的硬件与软件检查 在开始搭建AI开发环境之前,我们需要确保硬件和基础软件都满足要求。我遇到过很多新手朋友因为忽略了这个步骤,导致后续安装过程频频出错。首先确认你的电脑配备了NVIDIA显卡,这是使用CUDA加…...
华为eNSP实战:通过路由器物理接口高效打通VLAN间通信
1. VLAN间通信基础与华为eNSP环境搭建 刚接触网络工程的朋友可能对VLAN间通信感到困惑。简单来说,VLAN就像大楼里的不同楼层,而路由器就是连接这些楼层的电梯。我在实际项目中遇到过不少新手配置VLAN路由的问题,最常见的就是物理接口配置错误…...
