Nacos Namespace/Group/DataID三者关系解读

 更新时间:2024年12月24日 14:29:27   作者:91猿说编程  
本文介绍了Nacos中的命名空间(Namespace)、配置分组(Group)和配置集ID(DataID)的概念,并详细说明了它们之间的关系和应用场景,同时,还提供了三者在不同环境下的配置切换方案,包括DataID方案、Group方案和命名空间方案

命名空间(Namespace)

用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。

Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。

配置分组(Group)

Nacos 中的一组配置集,是组织配置的维度之一。

通过一个有意义的字符串(如 Buy 或 Trade )对配置集进行分组,从而区分 Data ID 相同的配置集。

当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。

配置分组的常见场景:不同的应用或组件使用了相同的配置类型,如 database_url 配置和 MQ_topic 配置。

配置集 ID(Data ID)

Nacos 中的某个配置集的 ID。配置集 ID 是组织划分配置的维度之一。

Data ID 通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。

Data ID 通常采用类 Java 包(如 com.taobao.tc.refund.log.level)的命名规则保证全局唯一性。此命名规则非强制。

配置集:一组相关或者不相关的配置项的集合称为配置集。

在系统中,一个配置文件通常就是一个配置集,包含了系统各个方面的配置。

例如,一个配置集可能包含了数据源、线程池、日志级别等配置项。

三者关系

这三者的关系类似于Java里面的package名和类名,最外层的Namespace是可以用于区分部署环境的,Group和DataID逻辑上区分两个目标对象。

默认情况

Namespace=public,Group=DEFAULT_GROUP,默认Cluster是DEFAULT

具体情况

Nacos默认的命名空间是public,我们就可以利用Namespace来实现隔离,比如我们现在有三个环境:开发、测试、生产环境,我们就可以创建三个Namespace,不同的N amespace之间是隔离的。

Group本身就是分组的意思,它可以把不同的微服务划分到同一个分组里面去。

剩下的就是具体微服务,一个Service可以包含多个Cluster,Nacos默认Cluster是DEFAULT,Cluster是对指定微服务的一个虚拟划分。

比如说,将一个Service部署在北京和和杭州的机房中,北京机房的Service就可以起名为(BJ),杭州机房中的Service就可以起名为(HZ),这样就可以尽量让同一个机房的微服务互相调用,提升性能。

切换不同环境

1. DataID方案

指定spring.profile.active和配置文件的DataID来使不同环境下读取不同的配置,配置规则:默认空间+新建dev和test两个DataId:

  1. 新建dev配置DataID(已经创建完成)
  2. 新建test配置DataID

2. Group方案

新建配置的时候填入分组DEV_GROUP

同样的方式在建立一个同名的dataId分组为TEST_GROUP

这里相当于相同的目录下不同的文件

  • 项目配置bootstrap.properties
spring.application.name=nacos-config-client
spring.cloud.nacos.discovery.server-addr=192.168.43.11:8848

# Nacos作为配置中心地址
spring.cloud.nacos.config.server-addr=192.168.43.11:8848

# 指定yaml格式的配置
spring.cloud.nacos.config.file-extension=properties

# 配置要使用的nacos配置中心分组
spring.cloud.nacos.config.group=TEST_GROUP
  • application.properties
# 激活使用profile
spring.profiles.active=info
  • application-info.properties
# nacos配置
server.port=3377

测试效果

3. 命名空间方案

新建命名空间

切换命名空间

  • 修改配置文件bootstrap.properties实现切换
# 指定命名空间 dev
#spring.cloud.nacos.config.namespace=401827ae-19b9-4fb4-a1fc-e55d57e6f6fe

# 指定命名空间 test
spring.cloud.nacos.config.namespace=5e79a451-9283-47cb-ac86-3bae58352240

添加分组和dataId(可以从default空间克隆)

参考上面的方案

测试结果

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java 文件上传的实例详解

    Java 文件上传的实例详解

    这篇文章主要介绍了Java 文件上传的实例详解的相关资料,希望通过本文大家能掌握这部分内容,使用几种文件上传的方法,需要的朋友可以参考下
    2017-09-09
  • 使用Gradle打依赖包失败的问题及解决

    使用Gradle打依赖包失败的问题及解决

    这篇文章主要介绍了使用Gradle打依赖包失败的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • 浅析Java中SimpleDateFormat为什么是线程不安全的

    浅析Java中SimpleDateFormat为什么是线程不安全的

    SimpleDateFormat是Java中用于日期时间格式化的一个类,它提供了对日期的解析和格式化能力,本文主要来和大家一起探讨一下SimpleDateFormat为什么是线程不安全的,感兴趣的可以了解下
    2024-02-02
  • java简单读取properties配置文件的方法示例

    java简单读取properties配置文件的方法示例

    这篇文章主要介绍了java简单读取properties配置文件的方法,涉及java针对properties配置的载入及文件属性读取相关操作技巧,需要的朋友可以参考下
    2017-09-09
  • Java实现贪吃蛇大作战小游戏的示例代码

    Java实现贪吃蛇大作战小游戏的示例代码

    本文主要介绍了Java实现贪吃蛇大作战小游戏的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 分享Java开发必须掌握的日志分析命令

    分享Java开发必须掌握的日志分析命令

    这篇文章主要介绍了分享Java开发必须掌握的日志分析命令,在日常工作中,如果我们遇到线上问题,一般的处理步骤应该是先保留现场,然后再考虑回滚,之后再是解决问题
    2019-07-07
  • 基于SpringBoot+Redis实现一个完整的发布订阅系统

    基于SpringBoot+Redis实现一个完整的发布订阅系统

    在分布式系统中,消息队列和发布订阅模式是实现服务间解耦、异步通信的重要手段,本文将详细介绍如何在Spring Boot项目中集成Redis,实现一个简单但功能完整的发布订阅系统,需要的朋友可以参考下
    2026-02-02
  • Java线程核心操作之创建、启动与安全停止完全解析

    Java线程核心操作之创建、启动与安全停止完全解析

    Java作为一种广泛使用的编程语言,具有丰富的多线程支持,在Java中处理多线程的核心在于Thread类和Runnable接口,这篇文章主要介绍了Java线程核心操作之创建、启动与安全停止完全解析的相关资料,需要的朋友可以参考下
    2026-03-03
  • spring使用ehcache实现页面缓存示例

    spring使用ehcache实现页面缓存示例

    这篇文章主要介绍了spring使用ehcache实现页面缓存示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • RabbitMQ延时队列详解与Java代码实现

    RabbitMQ延时队列详解与Java代码实现

    这篇文章主要介绍了RabbitMQ延时队列详解与Java代码实现,RabbitMQ 延时队列是指消息在发送到队列后,并不立即被消费者消费,而是等待一段时间后再被消费者消费。这种队列通常用于实现定时任务,需要的朋友可以参考下
    2023-04-04

最新评论