美文网首页
多服务nacos配置文件统一管理

多服务nacos配置文件统一管理

作者: 孤泉冷月 | 来源:发表于2021-06-16 09:28 被阅读0次

    背景

    nacos配置文件每个服务都有一个,而且在开发环境下每个nacos配置文件需要保持一致,并且每个服务打包时各个nacos配置文件需要互相独立.
    nacos配置文件在开发环境下经常修改,每次每个nacos配置文件都要改一遍,还容易出错冲突, 需要有一个文件统一管理nacos的命名空间和开发环境

    使用一个文件统一管理

    • 使用 spring.profiles.include 并利用SpringBoot加载顺序机制作nacos配置文件 结构如下
    +----------------------------------+             
    |     开发根目录下:                  |             
    |  bootstrap-framework.yml         |
    | (含spring.profiles.active,       |
    |  spring.cloud.nacos.namespace)   |
    +----------------------------------+             
                |
                | 
                ↓
    +------------------------------------+
    |  服务内:                            |       由于SpringBoot的加载机制, 此文件在开发环境下相同字段会被上面的替代,不同的会和上面的互补
    |  bootstrap-framework.yml           |        !!但是在服务打包的时候生效
    | (含spring.profiles.active,         |
    |  spring.cloud.nacos.namespace)     |
    +------------------------------------+
                |
                | 
                ↓
    +-------------------------+
    |     服务内:              |         在此文件内使用`spring.profiles.include='framework'`
    |     bootstrap.yml       |         统一引入`spring.profiles.active`和`spring.cloud.nacos.namespace`
    +-------------------------+
    

    注意

    在开发环境下,在根目录下的bootstrap-frame.yml修改activate或namespace 会在所有服务都会生效
    !! 但是,如果要将服务打包, 请在对应服务内的bootstrap-frame.yml文件修改activate或namespace, 此文件不会被打包进去

    总结

    利用Spring.profiles.include 可以将不同的服务配置整合, 同时它也遵守SpringBoot配置文件的加载机制,
    利用这个机制我们可以统一管理开发环境下的配置文件

    SpringBoot 配置文件加载机制

    Spring Boot从以下位置加载配置: 优先级从高到低顺序,高优先级覆盖低优先级,如有不同内容,高优先级和低优先级形成互补配置

    1. 命令行参数
    2. 来自java:comp/env的JNDI属性
    3. java系统属性(System.getProperties())
    4. 操作系统环境变量
    5. RandomValuePropertySource配置的random.*属性值
    6. jar包外部的application-{profile}.properties或者application.yml(带spring.profile)配置文件
    7. jar包内部的application-{profile}.properties或者application.yml(带spring.profile)配置文件
    8. jar包外部的application.properties或者application.yml(不带spring.profile)配置文件
    9. jar包内部的application.properties或者application.yml(不带spring.profile)配置文件
    10. @Configuration注解类上的@PropertySource
    11. 通过SpringApplication.setDefaultProperties指定的默认属性

    相关文章

      网友评论

          本文标题:多服务nacos配置文件统一管理

          本文链接:https://www.haomeiwen.com/subject/sorxyltx.html