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

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


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

一个nacos怎么区分多环境

关键还是在于我们下图标记的group,我们可以看到这里的话默认添加的配置是default开头的,但是平时开发的时候,我们可以有意识的去加一些标记,比如把default改成为dev、test、pro等
Spring Cloud Alibaba-nacos多人开发实现环境隔离(namespace的引用)_第1张图片

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

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

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

怎么创建命名空间

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

Spring Cloud Alibaba-nacos多人开发实现环境隔离(namespace的引用)_第2张图片

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

Spring Cloud Alibaba-nacos多人开发实现环境隔离(namespace的引用)_第3张图片

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

Spring Cloud Alibaba-nacos多人开发实现环境隔离(namespace的引用)_第4张图片

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

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

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

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

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

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

Spring Cloud Alibaba-nacos多人开发实现环境隔离(namespace的引用)_第5张图片

nacos帮我们解决了这个问题,他拥有一个从某个空间克隆配置到另外一个空间的功能
Spring Cloud Alibaba-nacos多人开发实现环境隔离(namespace的引用)_第6张图片

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

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

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

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却是我们所有项目都必备的,那这里就存在了一个问题,怎么读取多个分组的配置文件?

Spring Cloud Alibaba-nacos多人开发实现环境隔离(namespace的引用)_第7张图片

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代表的是动态配置开启

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

你可能感兴趣的:(SpringCloud,SpringCloud,微服务,nacos,config,分布式)