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读取哪个文件
相关推荐
Lei活在当下3 小时前
【现代 Android APP 架构】09. 聊一聊依赖注入在 Android 开发中的应用
java·架构·android jetpack
pan3035074793 小时前
GRPC详解
微服务·grpc
一尘之中4 小时前
【架构人生】一种“低耦合、高内聚”的处世哲学
架构·ai写作
喵个咪4 小时前
开箱即用的GO后台管理系统 Kratos Admin - 站内信
后端·微服务·go
ABdolphin5 小时前
Spring-cloud 主键Eureka
java·云原生·eureka
AKAMAI6 小时前
AI推理硬件选型指南:CPU 与 GPU 的抉择
人工智能·云原生·云计算
Ryan今天学习了吗10 小时前
💥不说废话,带你上手使用 qiankun 微前端并深入理解原理!
前端·javascript·架构
陈果然DeepVersion10 小时前
Java大厂面试真题:Spring Boot+微服务+AI智能客服三轮技术拷问实录(四)
spring boot·redis·微服务·kafka·spring security·智能客服·java面试
Serverless 社区11 小时前
算力成本降低 33%,与光同尘用 Serverless AI 赋能影视商业内容生产
人工智能·云原生·serverless
Xの哲學11 小时前
Linux eMMC子系统深度解析:从硬件协议到内核实现
linux·网络·算法·架构·边缘计算