Nacos&微服务配置管理和拉取

目录

前言

需求分析

解决方案

实现步骤

进入nacos控制面板

新建配置

项目配置获取步骤

统一配置管理步骤

引入Nacos的配置管理客户端依赖

新建bootstrap.yml文件

更改application.yml文件

测试

总结


前言

回顾之前的微服务项目结构,搭建了两个微服务,分别是userservice 和orderservice ,每一个微服务都需要对数据库进行查询,每一个服务之间还进行了相互调用, 要实现相互调用就需要将每一个服务注册到注册中心 ,消费者就可以从注册中心完成服务的发现实现服务的获取和负载均衡

随着项目的变大,我们的微服务越来越多,我们可能会面临一些问题,比如配置文件需要修改,那么我们就要逐个去调整每一个微服务的配置文件,并且调整完成之后每一个微服务都需要重启

需求分析

  • 希望对每一个微服务的配置文件进行统一管理
  • 改动完了之后不用对服务进行重启,实现热更新

解决方案

需要一个配置管理服务,记录微服务中一些核心的配置,在微服务启动的时候可以去读取配置管理服务中的配置与本地的配置进行结合作为完整配置

当配置管理服务更改之后会立即通知微服务,微服务就会立即读取新的配置实现热更新

实现步骤

进入nacos控制面板

新建配置

配置内容不是将项目中的配置内容全部粘贴过来,是需要进行热更新的配置添加进来就行,然后点击发布

这样就添加成功了

项目配置获取步骤

在项目启动之后会读取nacos中的配置文件,但读取之前需要知道nacos地址,而nacos地址通常会在application.yml中,所以在读取本地配置文件之前需要读取bootstrap.yml,bootstrap.yml文件是引导文件,优先级高于application.yml

统一配置管理步骤

引入Nacos的配置管理客户端依赖

复制代码
<!--nacos配置管理依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

新建bootstrap.yml文件

在userservice中的resource目录添加一个bootstrap.yml文件

复制代码
spring:
  application:
    name: userservice
  profiles:
    active: dev #环境
  cloud:
    nacos:
      server-addr: localhost:8848 #nacos地址
      config:
        file-extension: yaml #后缀名

更改application.yml文件

将application.yml文件中与bootstrap.yml文件冲突的配置删掉,例如:

复制代码
  application:
    name: userservice
  cloud:
    nacos:
      server-addr: localhost:8848 #nacos服务地址

测试

user-service中将pattern.dateformat这个属性注入到UserController中做测试

java 复制代码
    @Value("${pattern.dateformat}")
    private String dateformat;

    @GetMapping("now")
    public String now() {
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
    }

重启userservice,浏览器进入 http://localhost:8081/user/now

这里就已经获取到了nacos配置文件

总结

  • 将配置交给Nacos管理的步骤
    1. 在Nacos中添加配置文件
    2. 在微服务中引入nacos的config依赖
    3. 在微服务中添加bootstrap.yml,配置nacos地址、当前环境、服务名称、文件后缀名。这些决定了程序启动时去nacos读取哪个文件
相关推荐
天空属于哈夫克33 天前
企业微信二次开发:精准实现关键词自动回复
架构·企业微信
分布式存储与RustFS3 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
晨米酱3 天前
AGENTS.md:Agent 的上下文策略层
面试·架构·agent
这个DBA有点耶3 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
codeejun3 天前
每日一Go·MySQL-5、锁机制全解析
云原生·golang
码流子3 天前
高速公路安全监测实践:碰撞监测预警+物联网底座,从感知到处置的闭环
大数据·人工智能·物联网·算法·架构
moMo3 天前
从固定流程到问题路由:让 LangGraph RAG 按需检索
架构
张洛闻Eren3 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
白远山3 天前
上海24小时自助健身房解决方案实战指南与经验分享
java·数据库·架构·需求分析
LorryJovens3 天前
【LAAP科研】双系统具身AGI范式研究——基于LAAP认知架构与Jev概率决策模型的系统性技术调研与范式验证
人工智能·gpt·安全·架构