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

目录

前言

需求分析

解决方案

实现步骤

进入nacos控制面板

新建配置

项目配置获取步骤

统一配置管理步骤

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

新建bootstrap.yml文件

更改application.yml文件

测试

总结


前言

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

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

需求分析

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

解决方案

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

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

实现步骤

进入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读取哪个文件
相关推荐
xu_wenming2 小时前
嵌入式软件架构中的6种解耦艺术
c语言·驱动开发·嵌入式硬件·架构
ZGIAI3 小时前
ZGI Workflow 变量池:接住节点输出
人工智能·架构
ZGIAI3 小时前
ZGI 记忆隔离:多人共用不串号
人工智能·架构
星栈独行4 小时前
决定 Agent 交付下限的「操作系统」:Harness 六层架构拆解
人工智能·架构
Cicada1284 小时前
配置文件格式选择指南:JSON、YAML、TOML、INI、ENV、XML
架构
美狐美颜SDK开放平台6 小时前
视频美颜SDK是什么?直播APP开发中美颜功能实现方式介绍
深度学习·架构·实时互动·音视频·视频美颜sdk
AKCJDJ6 小时前
k8s的管理及控制器管理
云原生·容器·kubernetes
画中有画7 小时前
论多源异构数据集成与数据架构设计
架构
风萧何8 小时前
架构艺术,是权衡的艺术。
前端·javascript·架构