tulip notes
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Star-Lord

希望一天成为大师的学徒
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • SCAlibaba-Nacos

    • 使用Nacos实现服务注册与发现
    • 几种不同的服务消费方式
    • 使用Nacos实现配置管理
    • nacos实现数据持久化
    • Nacos配置管理-补充
      • 格式补充
      • namespace
      • 配置文件优先级
      • 分类
      • DataId相关
      • 永久实例
  • SCAlibaba-Sentinel

  • 负载均衡与服务调用

  • 服务熔断与降级

  • 服务链路追踪与网关

  • 分布式实战与细节

  • 其他

  • 《SpringCloud》笔记
  • SCAlibaba-Nacos
EffectTang
2025-03-03
目录

Nacos配置管理-补充

# Nacos配置管理-补充

# 格式补充

使用nacos-server进行配置管理时,可以发现,数据支持不同的格式。

然而server设置了不同的格式,如果我们的SpringBoot(也就是nacos客户端)项目没进行对应配置的话,那应用就无法读取到对应数据。

SpringBoot(也就是nacos客户端)项目,它默认是properties的一个文件扩展名,但是你改了它(nacos-server)的格式,你就需要相应的进行配置了。通过一个叫做file extension来进行配置。

spring:
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yaml
1
2
3
4
5
6

如此一来,nacos-server即使换成yaml格式,也能正常读取了。

# namespace

对于不同环境的项目,怎么实现不同配置文件对应不同环境呢?这里推荐通过namespace,也就是命名空间的方式,因为它可以被权限所控制。

当然,通过DataId也可以,但不建议。因为权限不好管理。

SpringBoot项目中,namespace的值,应该还有一点需要注意。

在Nacos配置中使用的namespace字段应该填写的是命名空间的ID(通常是UUID格式),而不是命名空间的名称。即使你的命名空间名字叫dev,你也需要填入对应的UUID形式的命名空间ID。

# 配置文件优先级

bootstrap.properties > bootstrap.yml > application.properties > application.yml

# 分类

以下为分类的一个建议:

Namespace:代表不同环境,如开发、测试、生产环境。

Group:代表某项目,如XX医疗项目、XX电商项目

Datald:每个项目下往往有若干个工程(微服务),每个配置集(Datald)是一个工程(微服务)的主配置文件

# DataId相关

假如我们的服务名跟nacos-server中的data ID,这个值不一样的话,我们通常情况下是读取不到的。

关于它的一个命名规范在官网中有说明,

${prefix}-${spring.profiles.active}.${file-extension}
1
  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  • spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档 (opens new window)。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

但,假如说我们还需要去读取一些个共享的一些公共的配置文件,那此时,nacos-server的data ID就跟服务名不一样了,对不对?因为它是共享变量,对应多个微服务。如何解决呢?

nacos组件提供了2种方式

  • extension-configs
spring:
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        namespace: c9f18cb4-b445-4da4-b526-f52bf3298730
        group: partA
        extension-configs:
          - data-id: sss-user-common
#           refresh 默认是 false
            refresh: true
#            默认值是 DEFAULT_GROUP
#            group:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
  • shared-configs
spring:
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        namespace: c9f18cb4-b445-4da4-b526-f52bf3298730
        group: partA
        shared-configs[0]:
          data-id: bb-fu-pass
1
2
3
4
5
6
7
8
9

它们2个都是数组,因此写法有2种,以上写法2种都适用

一个问题。因为它们都是数组形式,如果数组里面有多个相同的配置,那谁会生效呢?更详细一点就是,不同的shared-configs对应的配置,有多个key是相同的,但它们的value是不同,此时会选择谁的value呢?

它会以后读取到的为优先。也就是下标最大的才生效。

那再继续,如果跟自带的data id重现了重复的key,谁会生效呢?

答案是:自带的data id会生效。

继续优先级:

extension-configs > shared-configs

那这种优先级有什么用呢?

比如说,有些功能我虽然引用了公共的,但是我自己里面配置了还是用的我自己的。那么这个时候出现了这种情况,你知道怎么解了吧。

# 永久实例

修改 order-demo 中的配置,设置 ephemeral 为 fasle ,即注册为永久实例:

spring:
  cloud:
    nacos:
      # 服务端用户名密码
      username: nacos
      password: nacos
      # 服务发现
      discovery:
        # 命名空间
        namespace: 0faa0970-1179-4143-8aa2-cac3ee6b42ec
        # 服务端地址,默认:127.0.0.1:8848
        server-addr: 127.0.0.1:8848
        # 是否临时实例
        ephemeral: fasle

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
上次更新: 2025/04/23, 16:23:16
nacos实现数据持久化
初识Sentinel-流量治理组件

← nacos实现数据持久化 初识Sentinel-流量治理组件→

最近更新
01
面向切面跟自定义注解的结合
05-22
02
时间跟其他数据的序列化
05-19
03
数据加密与安全
05-17
更多文章>
Theme by Vdoing | Copyright © 2023-2025 EffectTang
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式