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

【Nacos】配置管理、微服务配置拉取、实现配置热更新、多环境配置


在这里插入图片描述

🐌个人主页: 🐌 叶落闲庭
💨我的专栏:💨
c语言
数据结构
javaEE
操作系统
Redis

石可破也,而不可夺坚;丹可磨也,而不可夺赤。


Nacos

  • 一、nacos实现配置管理
    • 1.1 统一配置管理
    • 1.1 nacos完成配置管理
  • 二、微服务配置拉取
    • 2.1 引入Nacos的配置管理客户端依赖
    • 2.2 在resource目录添加引导文件bootstrap.yml
    • 2.3 验证(读取nacos中的配置信息)
  • 三、实现配置热更新
    • 3.1 通过@Value注解注入,结合@RefreshScope
    • 3.2 通过@ConfigurationProperties注入,自动刷新
  • 四、多环境配置
    • 4.1 [服务名]-[spring.profile.actie].yaml,环境配置
    • 4.2 [服务名].yaml,多环境共享,默认配置
    • 4.5 本地配置

一、nacos实现配置管理

1.1 统一配置管理

在微服务搭建中,每个微服务中的业务都需要去完成数据库查询,并且服务之间还会完成相互调用,而要完成相互调用,需要将每个服务都注册到服务中心,消费者就可以从服务中心完成注册发现实现服务获取和负载均衡,完成远程调用,随着服务的增多,可能会有数十上百上千条这种情况,这时就需要对配置文件进行修改,这个配置文件可能跟数十上百上千条微服务都有关系,这时就需要逐个去修改配置,会非常麻烦,而且在配置完后,还需要对每个服务进行重启,而进行统一配置管理后只需要对一个配置文件进行修改即可,通过配置管理服务就可以实现在修改完配置文件后不需要重启服务就可以使用,配置管理服务是通过在服务启动时先去读取配置管理服务上的配置,再和本地的配置进行结合作为完整配置进行使用


在这里插入图片描述


1.1 nacos完成配置管理

  • 在nacos中添加配置信息:
    在这里插入图片描述
  • 填写配置信息:
    在这里插入图片描述

  • 发布:

在这里插入图片描述


二、微服务配置拉取

统一配置完成后,在微服务项目启动时,就需要对该配置进行拉取,即项目启动时,要先读取nacos中的配置文件,那么就需要获取nacos的地址,而nacos的地址在本地配置文件中,要想提前知道nacos地址,就需要创建一个名为bootstrap.yml的文件,这个文件的优先级比本地配置文件properties.yml文件高很多,所以将nacos地址的相关配置加在bootstrap.yml中就可以提前加载nacos地址从而访问nacos配置文件了。

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

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

2.2 在resource目录添加引导文件bootstrap.yml

spring:application:name: userservice	# 服务名称profiles:active: dev	# 开发环境,这里是devcloud:nacos:server-addr: localhost:8848 # nacos地址config:file-extension: yaml  #文件后缀名

2.3 验证(读取nacos中的配置信息)

  • nacos的配置信息
pattern:dateformat: yy-MM-dd HH:mm:ss
  • 在userservice的Controller中读取当前时间信息,通过该配置展现出来
@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@Value("${pattern.dateformat}")private String dateformat;@GetMapping("now")public String now() {return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));}
}

三、实现配置热更新

3.1 通过@Value注解注入,结合@RefreshScope

@Slf4j
@RestController
@RequestMapping("/user")
@RefreshScope
public class UserController {@Autowiredprivate UserService userService;@Value("${pattern.dateformat}")private String dateformat;@GetMapping("now")public String now() {return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));}
}

3.2 通过@ConfigurationProperties注入,自动刷新

@Data
@Component
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {private String dateformat;
}
@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@Autowiredprivate PatternProperties patternProperties;@GetMapping("now")public String now() {return LocalDateTime.now().format(DateTimeFormatter.ofPattern(patternProperties.getDateformat()));}
}

四、多环境配置

4.1 [服务名]-[spring.profile.actie].yaml,环境配置

pattern:dateformat: yy/MM/dd HH:mm:ssname: 环境配置dev

4.2 [服务名].yaml,多环境共享,默认配置

pattern:envSharedValue: 环境共享属性值name: 环境共享属性值default

4.5 本地配置

pattern:name: 本地环境local

优先级:[服务名]-[spring.profile.actie].yaml > [服务名].yaml > 本地配置

http://www.lryc.cn/news/234386.html

相关文章:

  • HTML5学习系列之网页图像
  • go语言学习之旅之Go语言数据类型
  • Day49 力扣单调栈 : 739. 每日温度 |496.下一个更大元素 I
  • 实用篇-ES-RestClient查询文档
  • 2023年第九届数维杯国际大学生数学建模挑战赛
  • TensorRT基础知识及应用【学习笔记(十)】
  • [内存泄漏][PyTorch](create_graph=True)
  • 【Git学习二】时光回溯:git reset和git checkout命令详解
  • 多维时序 | MATLAB实现PSO-GRU-Attention粒子群优化门控循环单元融合注意力机制的多变量时间序列预测
  • MySQL缓冲池的优化与性能提升
  • 一些RLHF的平替汇总
  • 7.docker部署前端vue项目,实现反向代理配置
  • 字符串函数详解
  • Mybatis学习笔记-映射文件,标签,插件
  • 【C++】模板初阶 【 深入浅出理解 模板 】
  • 无需API开发,伯俊科技实现电商与客服系统的无缝集成
  • Python | 机器学习之逻辑回归
  • 手机,蓝牙开发板,TTL/USB模块,电脑四者之间的通讯
  • Springboot更新用户头像
  • Express.js 与 Nest.js对比
  • 总结 CNN 模型:将焦点转移到基于注意力的架构
  • 2023.11.16 hivesql高阶函数之开窗函数
  • QTableWidget常用信号的功能
  • Vue理解01
  • 4、FFmpeg命令行操作8
  • 【MySQL】索引与事务
  • 切换为root用户后,conda:未找到命令
  • Qt退出界面
  • 【数据标注】Label Studio用于机器学习标注
  • py字符串转字符串数组