Spring Cloud Alibaba-nacos多人开发实现环境隔离(namespace的引用)

echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075) 交流学习。


你是否碰到过多人协同开发的时候,经常会因为集群发现服务的原因最终调用的是他人的服务,调试的是时候经常发现读取到了一些你不需要的别人添加的配置,调用服务出现乱入测试等,本文就是解决这些问题的。

一个nacos怎么区分多环境

关键还是在于我们下图标记的group,我们可以看到这里的话默认添加的配置是default开头的,但是平时开发的时候,我们可以有意识的去加一些标记,比如把default改成为dev、test、pro等
在这里插入图片描述

使用配置group可以解决我们环境的隔离,但是隔离的力度还不够,假如多人协同开发这一个项目,我们一个dev开头并不能解决问题。

nacos的命名空间的引用(解决多人开发环境隔离的开始)

namespace在阿里设计的起初原因是:namespace主要是进行业务隔离的,多个业务或者部门可以用一个Nacos,但是数据都相互屏蔽。这里是不是和我们的需要解决的问题很接近了?当你开启namespace之后,你的配置就能独属于你,这个时候,你就可以在独属于你的配置内添加其他分组的内容。

怎么创建命名空间

命名空间我们可以在nacos的管理界面看到,如下图:

在这里插入图片描述

  • 直接点击新建命名空间即可,注意命名空间是可以自动生成的

在这里插入图片描述

  • 完成之后我们就可以看到我们创建命名空间了

在这里插入图片描述

使用命名空间解决多人开发环境隔离问题

学会了使用命名空间我们,发现我们的配置都已经独立了,但是项目里面怎么使用这个独立的命名空间呢?

在我们的配置文件boostrap.yml中添加如下内容,你就可以获得这个独立的命名空间内的内容(namespace的值就是我们命名空间上生成的命名空间ID)

spring:
  cloud:
    nacos:
      config:
        server-addr: 192.168.22.71:8848
        namespace: 6a4e2b2e-1f17-48c2-9ec8-010fd7c0eb66

有了独立的命名空间,配置都独立了,但是重复添加配置却成了复杂的工作

刚刚生产的命名空间是啥也没有的,我们每个人都自己生成一个命名空间,那就要每个人一份配置,这样会产生大量的重复添加配置的工作。

在这里插入图片描述

nacos帮我们解决了这个问题,他拥有一个从某个空间克隆配置到另外一个空间的功能
在这里插入图片描述

这样我们就得到了很多的配置。

到这里是不是好像还没有解决我们的多人相互调用的问题?

很简单,我们有了独立的命名空间,配置就不再依赖我们的项目指定的名称也就是这个配置:

spring:
  application:
    name: spring-cloud-nacos-consumer-test

多个相互隔离解决方案

将我们的项目名称更改了就可以了,我们可以去添加一些特许的标记在项目名称后面。

相同的项目:甲将他命名称为如下
spring:
  application:
    name: spring-cloud-nacos-consumer-test
    
相同的项目:已将他命名称为如下
spring:
  application:
    name: spring-cloud-nacos-consumer-test

多分组的环境配置共享

当我们做好了分组之后,发现我们配置的都是我们自己项目的配置,很多其他项目分组的或者其他环境的配置我们都需要的情况下,我们好像没有办法拿到。如下面这种情况,假设:DEV使我们的开发分组,这个是我们开发某个项目去添加的,但是DEVAULT却是我们所有项目都必备的,那这里就存在了一个问题,怎么读取多个分组的配置文件?

在这里插入图片描述

extension-configs帮忙我们解决多分组配置问题

spring:
  cloud:
    nacos:
      config:
        server-addr: 192.168.22.71:8848
        namespace: 462743fb-8228-49e4-8896-1bc6e62c8ac6
        group: spring-cloud-nacos-consumer.yml
        file-extension: yaml
        extension-configs:
            - data-id: spring-cloud-nacos-consumer.yml
              group: DEV_GROUP
              refresh: true
            - data-id: spring-cloud-nacos-consumer.yml
              group: DEFAULT_GROUP
              refresh: true
  • 一个分组对应一个data-id + group
  • refresh:true代表的是动态配置开启

到这里为止,我们就已经完成了环境配置隔了,多环境隔离,同项目多人开发隔离,多分组的配置获取。

### 关于Spring Cloud Alibaba Nacos Discovery的配置与使用 Nacos 是阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台。`spring-cloud-starter-alibaba-nacos-discovery` 提供了基于 Spring Cloud 的集成支持,使得微服务可以轻松实现注册与发现功能。 #### Maven依赖引入 为了在项目中启用 `nacos-discovery` 功能,需在项目的 `pom.xml` 文件中添加如下依赖: ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2023.1.0</version> <!-- 版本号应根据实际需求调整 --> </dependency> ``` 上述代码片段展示了如何通过Maven构建工具来引入必要的starter包[^1]。 #### 配置文件设置 在应用的 `application.yml` 或者 `application.properties` 中进行相应的配置以连接到Nacos服务器并完成服务注册和发现操作。下面是一个典型的YAML格式配置实例: ```yaml spring: application: name: example-service # 定义服务名称 cloud: nacos: discovery: server-addr: localhost:8848 # 设置Nacos Server地址 namespace: public # 可选命名空间ID,默认为空字符串"" group: DEFAULT_GROUP # 组名,默认为DEFAULT_GROUP metadata: # 自定义元数据键值对 version: v1 # 示例版本信息 environment: dev # 运行环境标记(dev/test/prod等) ``` 此部分描述了基本的服务端口以及网络位置参数设定方式[^2]。 #### 启动类注解声明 为了让应用程序能够自动向Nacos注册自己作为一个可用的服务节点,在主启动类上加上特定的@Enable...系列注解即可激活该特性: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import com.alibaba.cloud.nacos.NacosDiscoveryProperties; @SpringBootApplication public class ExampleApplication { public static void main(String[] args) { SpringApplication.run(ExampleApplication.class, args); } } ``` 注意这里并没有显式调用任何额外的方法去手动触发注册过程;这是因为当检测到classpath下存在相关组件时,框架会替开发者处理好这一切逻辑细节[^3]。 另外如果希望进一步定制化行为比如修改默认心跳间隔时间,则可以通过重写某些bean定义或者直接扩展官方提供的接口类来达成目的。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xlecho

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值