• SpringCloud 配置管理:Nacos



    统一配置管理

    image

    将配置交给 Nacos 管理的步骤:

    1. 在 Nacos 中添加配置文件。
    2. 在微服务中引入 nacos 的 config 依赖。
    3. 在微服务中添加 bootstrap.yml,配置 nacos 地址、当前环境、服务名称、文件后缀名。这些决定了程序启动时去 nacos 读取哪个文件。

    具体操作:

    1)在 Nacos 中添加配置信息

    image

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

    image

    3)配置获取的步骤如下

    image

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

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

    5)在 resource 目录添加一个 bootstrap.yml 文件,这个文件是引导文件,优先级高于 application.yml

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

    6)测试:将(Nacos 配置内容中的)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 配置更改后,微服务可以实现热更新,两种方式如下:

    1. 通过 @Value 注解注入,结合 @RefreshScope 来刷新。
    2. 通过 @ConfigurationProperties 注入,自动刷新。

    注意事项:

    • 不是所有的配置都适合放到配置中心,否则维护起来比较麻烦。
    • 建议将一些关键参数,需要运行时调整的参数放到 nacos 配置中心,一般都是自定义配置。

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

    image

    方式二:使用 @ConfigurationProperties 注解

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

    配置共享

    多环境配置共享

    微服务会从 nacos 读取的配置文件:

    • [服务名]-[spring.profile.active].yaml环境配置(例如 userservice-dev.yaml)。
    • [服务名].yaml默认配置,多环境共享(例如 userservice.yaml)。
    • 无论 profile 如何变化,[服务名].yaml 这个文件一定会加载,因此多环境共享配置可以写入这个文件。

    image

    配置加载优先级:

    image


    多服务配置共享

    不同服务之间共享配置文件的两种方式:

    1. 通过 shared-configs 指定
    2. 通过 extension-configs 指定

    方式一:通过 shared-configs 指定

    spring:
      application:
        name: userservice  # 服务名称
      profiles:
        active: dev  # 环境
      cloud:
        nacos:
          server-addr: localhost:8848  # Nacos 地址
          config: 
            file-extension: yaml  # 文件后缀名
            shared-configs:  # 多微服务间共享的配置列表
              - dataId: common.yaml  # 要共享的配置文件 id
    

    方式二:通过 extension-configs 指定

    spring:
      application:
        name: userservice  # 服务名称
      profiles:
        active: dev  # 环境
      cloud:
        nacos:
          server-addr: localhost:8848  # Nacos 地址
          config:
            file-extension: yaml  # 文件后缀名
            extends-configs:  # 多微服务间共享的配置列表
              - dataId: extend.yaml  # 要共享的配置文件 id
    

    多种配置的优先级:

    image

  • 相关阅读:
    react中利用useRef、forwardRef、useImperativeHandle获取并处理dom
    【算法|动态规划No.10】leetcode LCR 089. 打家劫舍 & LCR 090. 打家劫舍 II
    Anaconda下 Prophet的安装,pystan和fbprophet的版本问题
    ROS系列:第六章 机器人建模
    进程管理6——进程地址空间
    网络原理的讲解
    网络爬虫——HTTP和HTTPS的请求与响应原理
    【基本数据结构】平衡二叉树
    vue学习之element-ui组件集成
    数据库表关系详解(一对多、一对一、多对多)
  • 原文地址:https://www.cnblogs.com/juno3550/p/16351406.html