Nacos配置中心使用规范

1. 关于Nacos引用方式

Nacos在Spring框架应用中使用方式共用4种:

1、nacos 原生引用方式

2、spring 引用方式

3、spring boot 引用方式

4、spring cloud 引用方式

每一种用法,略有差异,具体请参考Nacos官方文档:
Nacos 快速开始


2. 命名规范

2.1. 关于命名空间NameSpace的命名规范

命名空间NameSpace主要用于不同产品、不同平台,在配置管理上实现权限隔离,互不干扰。
命名格式规范:

 

{产品编码}-{环境名}

命名空间ID统一采用大写字母

{环境名} 为可选项,可以没有,如果有请使用拼音字母全拼

例如: JSCP、JSST、JSICP-HUANAN、JSICP-HUADONG

2.2. 关于Data ID的命名规范

2.2.1. 通用配置Data ID命名规范

命名格式规范:

 

{产品编码}-common-{配置特征名}.{文件类型}

配置特征名:即描述某一类配置共有的特征

2.2.2. 应用配置Data ID命名规范

应用配置相对于通用配置而言,专指应用独有的配置,不会也不应被其它应用使用的配置。
命名规范格式:

 

{应用服务名称}-{配置特征名}.{文件类型}

应用服务名称:即【spring.application.name】名称,同时也是微服务在注册中心的ID,具有唯一性。

Data ID 命名统一采用小写字母

例如:服务名为【jscp-jportal】 对应的应用配置data id为【jscp-jportal.properties】或者【jscp-jportal.yml】


2.3. 关于分组Group的命名规范

同一产品下的所有配置,在同一分组下,便于配置管理;
命名规范格式:

 

{分组名为产品编码}

Group分组名统一采用小写字母

例如:jscp、jsicp

2.4. 关于归属应用的命名规范

归属应用,不同于Group分组,通过分组可以快速找到某产品下所有的配置,但一个分组下包含了不同应用的配置,以及通用配置,如何快速找到某一应用下的所有配置?归属应用,应运而生。
命名规范格式:

 

{归属应用名为微服务名}

归属应用名与微服务名 【spring.application.name】 保持一致,同时也是微服务在注册中心的ID

2.5. 命名范例

以JLite为例,命名空间【JSICP-HUANAN】下的配置如下:

Data IDGroup归属应用备注
jsicp-common-mysql.ymljsicp通用配置
jsicp-common-redis.ymljsicp通用配置
jsicp-common-kafka.ymljsicp通用配置
jsicp-common-elasticsearch.ymljsicp通用配置
jsicp-common-hbase.ymljsicp通用配置
jsicp-common-mongodb.ymljsicp通用配置
jsicp-common-oss.ymljsicp通用配置
jsicp-common-constant.ymljsicp通用配置:常量
jlite-boot-starter.ymljsicpjlite-boot-starter应用配置:jlite
jlite-boot-starter-messages_en_us.propertiesjsicpjlite-boot-starter国际化配置-英文
jlite-boot-starter-messages_zh_cn.propertiesjsicpjlite-boot-starter国际化配置-中文简体
jlite-boot-starter-messages_zh_tw.propertiesjsicpjlite-boot-starter国际化配置-中文繁体
jlite-cloud-gateway.ymljsicpjlite-cloud-gateway应用配置:网关
jlite-cloud-gateway-flow-rule.jsonjsicpjlite-cloud-gateway应用配置:网关限流
jlite-cloud-gateway-api-group.jsonjsicpjlite-cloud-gateway应用配置:网关API分组

注意: 为什么建议将通用配置,按照配置特征进行data-id区分,这样做更有利于配置的管理,可以清楚知道每一个微服务,具体用到了哪些配置项。

如果将所有通用配置放在一起,无论配置是否真正被使用到,配置文件都会被加载,当遇到技术栈升级时,比如需要对数据库密码策略进行更换,或者OSS账号密码泄漏需要更换账号。此时,在众多微服务中,哪些微服务应该重启?无法准确快速知道。


3. 关于启动配置文件的加载使用规范

spring boot构建的应用
启动时最先被加载的配置文件为:application.properties

spring cloud构建的应用
启动时最先被加载的配置文件为:bootstrap.properties

原则上本地配置文件:bootstrap.properties / application.properties 仅用于配置Nacos的地址、账号、日志文件存储位置等需要在启动后第一时间加载的参数。

4. 关于日志配置文件的使用规范

spring boot应用不再需要logback-spring.xml配置文件

日志文件如何配置?

4.1. 日志配置

【第一步】 bootstrap.yml

## 日志配置
logging:
  file:
    name: ./logs/${spring.application.name}.log
  level:
    org.springframework.boot.context.config.ConfigFileApplicationListener: debug # 生产上建议将该类的日志级别设为debug,这样可以清楚知道,启动时应用程序加载了哪些配置文件,分别从哪里加载的。

# 生产上建议将该类的日志级别设为debug,这样可以清楚知道,启动时应用程序加载了哪些配置文件,分别从哪里加载的。

该配置的作用是指定日志文件存储位置,必须放在bootstrap.yml文件中,因为需要保证在应用启动第一时间能读取到。

【第二步】 application.yml

## 日志配置
logging:
  file:
    max-history: 3  # 日志文件保留天数
    max-size: 200MB # 日志文件大小
  level:
    com.jht.jlite.gateway.filter.CustomGlobalFilter: debug
    com.jht.jlite.gateway.strategy.CustomStrategyRouteFilter: debug

以上配置,相比logback-spring.xml配置更加简洁,放在应用对应nacos配置中,可以动态修改生效。



 

5. 关于应用程序部署目录结构的规范

应用程序部署目录结构规范,以Jlite 网关为例:

|
---jlite-cloud-gateway
    |
    |
    |---jlite-cloud-gateway-1.0.1-RELEASE.jar # jar包排除配置文件
    |
    |---libdecrypt.so
    |
    |---manage.sh # 启动脚本中不再注入非JVM参数,统一移到bootstrap.yml
    |
    |---config
    |   |
    |   |---bootstrap.yml # 启动配置
    |   |
    |---config-example # 配置参考:在nacos上建立同名data-id
    |   |
    |   |---jlite-cloud-gateway.yml
    |   |
    |   |---jlite-cloud-gateway-api-group.json
    |   |
    |   |---jlite-cloud-gateway-flow-rule.json
    |   |
    |---logs # 日志文件默认目录,Docker容器化部署将该目录映射到宿主机即可
    |   |
    |   |
  1. 为什么建议将jar包中的配置文件排除,这样做对于每一个配置项数据,在哪里进行配置(本地配置文件目录或配置中心),更加清晰,可见。便于问题的分析定位查找。
     

  2. 启动脚本 manage.sh 文件中,不再注入除JVM参数以外的其它任何启动参数,相关参数(环境,版本号,Nacos地址、日志文件目录)统一放到配置文件 bootstrap.yml 中管理。

5.1. 打包时排除本地配置文件的方法

打包时,请将 src/main/resources 目录下所有配置文件排除在jar包之外。
具体排除方法,在pom.xml文件中添加plugin:

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <!-- 排除各类配置文件 -->
                    <excludes>
                        <exclude>*.yml</exclude>
                        <exclude>*.yaml</exclude>
                        <exclude>*.properties</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

5.2. 打包时自动从Nacos下载配置文件

请在pom文件中添加nacos-maven-plugin插件,

该插件是我司自定义开发的maven插件,希望通过简单的配置,实现打包时自动从Nacos配置中心下载配置文件,解决打包时过多依赖人工处理的问题。配置将按Data ID生成同名文件,生成的文件目录为:target/config-example/

<!-- Nacos打包插件,用于下载配置文件 -->
<plugin>
    <groupId>com.js.nacos</groupId>
    <artifactId>nacos-maven-plugin</artifactId>
    <version>1.1.2</version>
    <!-- 可选参数,可以不配置 -->
    <configuration>
        <!-- skip 如果为true,将不会从nacos下载任何配置,默认为false -->
        <skip>true</skip>
        <server-addr>10.10.204.110:8848</server-addr>
        <namespace>billing-cloud</namespace>
        <user>app</user>
        <password>123456</password>
    </configuration>
    <executions>
        <execution>
            <!--插件运行所在生命周期-->
            <phase>package</phase>
            <goals>
                <!-- 插件目标名固定为:config-download -->
                <goal>config-download</goal>
            </goals>
        </execution>
    </executions>
</plugin>

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值