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

nacos配置管理改造

为什么需要配置中心

在单体应用或小规模系统时,通常把配置写在项目里的application.propertitesconfig.yml文件里,随代码一起打包部署。

会遇到问题:

  • 修改配置需要重启
  • 环境混乱,开发、测试、预发、生产环境各有不同的配置,经常要在不同分支或不同文件里改来改去,一不小心就把测试环境的配置发到了生产,就是严重事故
  • 配置散落各处

当系统拆分为微服务之后,上述问题会演变为灾难:

  • 管理失控:100个服务就有100份配置文件,如果数据库密码需要定期更换,得手动改100次,漏掉一个就导致服务宕机
  • 动态伸缩难:微服务实例会根据流量自动扩缩容,新启动的容器必须能立即拉取到最新的配置,而不能依赖容器镜像里写死的旧配置

因此使用配置中心解决了上述问题:

  • 动态生效:配置中心允许在不重启应用的情况下,实时推送配置变更。例如当发现线上功能有问题,可以立即通过配置中心关掉某个功能开关,或者调高日志级别,几秒钟内全网生效,无需发版
  • 集中管理与权限审计:所有服务的配置都存放在一个统一的web控制台里,可以一目了然的看到订单服务有哪些配置,支付服务有哪些配置,同时可以设置权限,谁改了配置,什么时候改的,改了什么都留有审计日志,出了问题便于追溯
  • 环境隔离与版本控制:配置中心通常支持命令空间Namespace或分组,可以轻松管理dev, test, prod三套环境,同一份配置ID对应不同的值,应用启动时只需指定环境标签即可,彻底杜绝改错环境的问题,并且配置变更支持版本回滚,改错了可以一键恢复
  • 服务感知与健康检查:配置中心通常和服务注册中心配合。当配置变更,能感知到哪些服务实例在运行,并精准推送。如果某个客户端没收到配置,配置中心还能提供配置拉取接口,确保客户端主动轮询,保证最终一致性。

现代配置中心Apollo, Nacos, Consul已经进化成了动态配置管理平台,承载了更多职责:

  • 灰度发布:只让10%的测试用户先应用新配置,没问题再全量推送
  • 依赖解耦:运维和开发分工更清晰,开发只写代码占位符${mysql.host},运维在配置中心填具体的IP,双方互不干扰

什么是Nacos

Nacos支持几乎所有主流类型的服务的发现、配置和管理。

  • Kubernetes Service
  • gRPC, Dubbo RPC Service
  • Spring Cloud RESTFul Service

Nacos快速开始

Nacos依赖Java环境来运行,

将Spring Cloud微服务接入Nacos进行配置管理,主要涉及服务端准备、客户端依赖引入、配置文件迁移以及代码动态刷新四个步骤。

  1. 启动Nacos Server
  2. 在各个微服务模块的pom.xml这种,添加nacos配置中心的starter依赖。

引入nacos config依赖,即nacos 配置中心的starter依赖:
在项目根pom.xml中引入,这样各个服务也能从根pom中拿到

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>
  1. 调整配置文件
    每个服务都需要引入spring.config.import,导入nacos配置,不再推荐使用bootstrap.yml,

本地保留application.yml,只放启动必需的配置,

例如用户服务的application.yml保留以下内容;注意添加服务发现的地址,配置中心的地址,

spring:application:name:imagecore-backend-user-serviceprofiles:active:tencentcloud:nacos:discovery:server-addr:xxx:8848config:server-addr:xx:8848file-extension:ymlconfig:import:-nacos:imagecore-backend-user-service-nacos:imagecore-backend-user-service-tencent
  1. 迁移配置文件到nacos控制台

在nacos控制台中,进入配置管理——》配置列表,
点击新建配置,Data ID通常命名为your-service-name.yml,与配置中的一致,Group保持默认的DEFAULT-GROUP,配置格式选择YAML,
注意DataID也必须和import里面的一样imagecore-backend-user-service-tencent


同理,picture-service, space-service也是,

这样就修改成功了。

http://www.jsqmd.com/news/1178575/

相关文章:

  • VS Code Arduino 扩展弃用后:3种替代方案迁移指南与性能实测
  • C++17类模板参数推导:从原理到嵌入式实战避坑指南
  • 学人工智能只能当算法工程师?错!这5个岗位薪资更高更缺人
  • C++多线程开发实战:从基础同步到内存模型的避坑指南
  • 软件项目开发实践 7 步排错指南:从需求分析到测试的常见 5 大误区
  • 攻克So层SSL Pinning:Frida与IDA逆向实战指南
  • VTK分隔文本读取器开发:从CSV到三维可视化的C++实现
  • C++实现自动驾驶变道决策模拟器:状态机与代价函数设计详解
  • 如何快速掌握英雄联盟Akari助手:面向游戏玩家的免费效率工具完整指南
  • AI Agent开发实战:从基础到企业级项目的完整学习路径
  • 终极Deceive教程:3分钟掌握英雄联盟隐身技巧,享受真正的游戏自由 [特殊字符]
  • Pandas数据处理实战地图:从摄入到交付的6阶段操作指南
  • 我们如何用离散数学构建一个安全、完全可控的 Agent 内核-大模型可以生成内容、计划和工具调用建议,但不应拥有最终执行权。OneCode 在模型输出与真实行动之间建立确定性内核
  • optimizerDuck:开源免费的Windows系统优化工具实战指南
  • 30天从零搭建AI自动化业务:Claude AI与AI Agent技术实战
  • 鸿蒙智能体开发实战:37.鸿蒙壁纸大师 - 异步消息推送(Webhook)
  • Linux新手入门指南:从零开始掌握Linux Mint与核心命令
  • Vue 3 + PWA:头像明明命中缓存,为什么返回首页还会再次请求?
  • iOS应用隐私合规实战:Guideline 5.1.2与ATT框架深度解析
  • 3个实用场景解析:如何用VideoDownloadHelper浏览器扩展高效获取在线视频资源
  • Krea2与ComfyUI人设图生成:从环境配置到高级工作流实战
  • C++调用WPS API实现Office文档自动化:免费、轻量、国产化替代方案
  • 回溯算法实战:从四后问题理解递归、剪枝与C++实现
  • UniApp中AES加密实战:从Crypto-JS到WebAssembly的高性能方案
  • Unity角色动画实战:Mixamo资源整合与Animator系统深度配置指南
  • TB67H480FNG与STM32F303VE的电机控制优化方案
  • A3910与STM32F401RE电机控制开发实战
  • QQ三国商行查询工具逆向实战:从CE定位到易语言HOOK封包解密
  • FastAPI核心原理:类型提示与Pydantic如何驱动校验、序列化与文档生成
  • Prompt重构失败?Perplexity精准检索失效真相,资深AI工程师的12条避坑清单