Nacos配置管理

原理图:

1、统一配置管理

① 在Nacos中添加配置信息

② 在弹出表单中填写配置信息

③ 配置获取的步骤*(原理)

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

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

⑤ 在目标服务的resource目录添加一个bootstrap.yml文件,这个文件是引导文件,优先级高于application.yml

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

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

@RestController
@RequestMapping("/user")
public class UserController { // 注入nacos中的配置属性
@Value("${pattern.dateformat}")
private String dateformat;

// 编写controller,通过日期格式化器来格式化现在时间并返回
@GetMapping("now")
public String now(){
return LocalDate.now().format(
DateTimeFormatter.ofPattern(dateformat, Locale.CHINA)
);
}
// ... 略
}

总结:

将配置交给Nacos管理的步骤
① 在Nacos中添加配置文件
② 在微服务中引入nacos的config依赖
③ 在微服务中添加bootstrap.yml,配置nacos地址、当前环境、服务名称、文件后缀名。这些决定了程序启动时去nacos读取哪个文件

2、配置自动刷新

Nacos中的配置文件变更后,微服务无需重启就可以感知。不过需要通过下面两种配置实现

方式一:在@Value注入的变量所在类上添加注解@RefreshScope

方式二:使用@ConfigurationProperties注解

@Component
@Data
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
private String dateformat;
}

总结:

1、Nacos配置更改后,微服务可以实现热更新,方式:
① 通过@Value注解注入,结合@RefreshScope来刷新
② 通过@ConfigurationProperties注入,自动刷新
2、注意事项:
① 不是所有的配置都适合放到配置中心,维护起来比较麻烦
② 建议将一些关键参数,需要运行时调整的参数放到nacos配置中心,一般都是自定义配置

3、多环境配置共享

微服务启动时会从nacos读取多个配置文件:

  • [spring.application.name]-[spring.profiles.active].yaml,例如:userservice-dev.yaml
  • [spring.application.name].yaml,例如:userservice.yaml

无论profile如何变化,[spring.application.name].yaml这个文件一定会加载,因此多环境共享配置可以写入这个文件

多种配置的优先级:(先加载本地 -> 在加载服务名-profile.yaml -> 最后加载服务名.yaml   后加载覆盖先加载)

总结:

1、微服务会从nacos读取的配置文件:
① [服务名]-[spring.profile.active].yaml,环境配置
② [服务名].yaml,默认配置,多环境共享
2、优先级:
① [服务名]-[环境].yaml >[服务名].yaml > 本地配置

4、Nacos集群搭建

图解:

集群搭建步骤:

  1. 搭建MySQL集群并初始化数据库表
  2. 下载解压nacos
  3. 修改集群配置(节点信息)、数据库配置
  4. 分别启动多个nacos节点
  5. nginx反向代理

具体参考:https://www.aliyundrive.com/s/2Yj3oBnyJMt

SpringCloud-03-Nacos配置管理的更多相关文章

  1. SpringCloud Alibaba Nacos服务注册与配置管理

    Nacos SpringCloud Alibaba Nacos是一个狗抑郁构建云原生应用的动态服务发现.配置管理和服务管理平台. Nacos:Dynamic Naming and Configurat ...

  2. Spring Cloud Alibaba | Nacos配置管理

    目录 Spring Cloud Alibaba | Nacos配置管理 1. pom.xml 项目依赖 2. 在 bootstrap.properties 中配置 Nacos server 的地址和应 ...

  3. SpringCloud使用Nacos服务发现实现远程调用

    本文使用SpringCloud结合Nacos服务发现,Feign远程调用做一个简单的Demo. 1 Nacos 关于Nacos之前写了两篇文章关于SpringBoot对它的使用,感兴趣可以查看一下. ...

  4. SpringBoot开发案例Nacos配置管理中心

    前言 在开发过程中,通常我们会配置一些参数来实现某些功能,比如是否开启某项服务,告警邮件配置等等.一般会通过硬编码.配置文件或者数据库的形式实现. 那么问题来了,如何更加优雅的实现?欢迎来到 Naco ...

  5. Spring Cloud Alibaba 实战(十二) - Nacos配置管理

    本章主要内容是:使用Nacos管理配置以及实现配置管理的原因,配置如何管理以及动态刷新和最佳实现总结,最后是Nacos配置刷新原理解读 该技术类似于Spring Cloud Config 1 配置管理 ...

  6. 基于springcloud gateway + nacos实现灰度发布(reactive版)

    什么是灰度发布? 灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式.在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B ...

  7. SpringCloud Alibaba Nacos 服务注册

    业务服务接入Nacos服务治理中心 启动Nacos访问地址为:http://101.200.201.195:8848/nacos/ 创建bom工程用于管理依赖(下方附加源码地址) 准备工作完成后开始接 ...

  8. 微服务(五)nacos配置管理

    1 统一配置管理 1.1 nacos中添加配置文件 注意:项目的核心配置,需要热更新的配置才有放到nacos管理的必要.基本不会变更的一些配置还是保存在微服务本地比较好. 1.2 从微服务拉取配置 微 ...

  9. Nacos配置管理最佳实践

    Nacos一个最常用的功能就是配置中心,在具体使用时往往是多个团队,甚至整个公司的研发团队都使用同一个Nacos服务.那么使用时如何保证配置在各个团队之间的隔离,又能保证配置管理的便捷性?下面就来介绍 ...

  10. Nacos配置管理

    一.在Nacos添加公共配置 二.项目中读取方式 1. 引入nacos-config依赖 首先,在要使用 nacos 来管理配置的服务中,引入nacos-config 依赖: <!--nacos ...

随机推荐

  1. Java Socket Demo

    服务端: package com.sux.demo; import java.io.*; import java.net.ServerSocket; import java.net.Socket; i ...

  2. 图解 Promise 实现原理(四)—— Promise 静态方法实现

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/Lp_5BXdpm7G29Z7zT_S-bQ作者:Morrain 了用法,原生提供了Promis ...

  3. 5G“乍到”,图扑带你了解室内定位可视化的实现与新突破

    前言 现代工业化的推进在极大加速现代化进程的同时也带来的相应的安全隐患,在传统的可视化监控领域,一般都是基于 Web SCADA 的前端技术来实现 2D 可视化监控,本系统采用 Hightopo 的  ...

  4. Serverless 架构开发手册 — “人人都是 Serverless 架构师”先导篇

    摘要:本篇实战将介绍如何以超低成本构建动态的 Web 站点,并且实现灵活扩展,限流等效果,最后再跟大家聊一聊"现代应用"的相关概念. 相信很多同学都有过想要拥有自己的 Web 站点 ...

  5. freeswitch的gateway实现出中继的主备方案

    概述 freeswitch是一款简单好用的VOIP开源软交换平台. 某些呼叫场景中,我们有2条出中继线路可选,2条出中继需要按照主备模式来配置,优先使用主中继呼叫,当主中继出现问题时,呼叫自动转移到备 ...

  6. C#将日期格式化为指定格式

    private void btn_GetTime_Click(object sender, EventArgs e) { lab_time.Text = DateTime.Now.ToString(& ...

  7. spring--集成RocketMQ

    在Spring Boot中集成RocketMQ通常涉及以下步骤: 1. **添加依赖**:首先,需要在项目的`pom.xml`文件中添加RocketMQ的Spring Boot Starter依赖. ...

  8. 怎样实现WPF Prism Module的国际化和本地化?

    怎样实现WPF Prism Module的国际化和本地化? English | 简体中文 上一篇有简单介绍主工程的国际化,使用的资源字典(XAML)实现的. 这几天我添加了几个Prism模块(Modu ...

  9. Go-获取指定长度随机字符串

    // GetCode 获取一个随机用户唯一编号 func GetCode(codeLen int) string { // 1. 定义原始字符串 rawStr := "abcdefghijk ...

  10. 百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.11.20)

    百度网盘会员账号共享(11.20更新) 账号:zqv29268 密码:7003wayb 账号:rpz75364 密码:riyk1648 账号:0580quqn 密码:148hxhe 账号:132620 ...