前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Cloud微服务解决多环境隔离及Nacos分组方案

Spring Cloud微服务解决多环境隔离及Nacos分组方案

作者头像
IT苦逼一枚
发布2020-06-27 23:37:05
7.1K1
发布2020-06-27 23:37:05
举报
文章被收录于专栏:测试帮日记测试帮日记

一、问题产生背景

笔者所在的团队采用了Spring Cloud+Nacos微服务技术方案落地后,在实际进行中遇到问题。通常一个项目的开发会拆分为dev开发环境、test测试环境以及prod生产环境,而不同环境都依赖于Nacos注册中心。

最初,我们是各个环境都搭建了一套Nacos注册中心和配置中心,而Nacos会占用资源比较大,这样相当于需要3个环境的Nacos都启起来才支持开发。

接着,更多的项目要采用Spring Cloud+Nacos这一套微服务框架,将需要占用更多的机器,更多的Nacos注册中心。如果就这样无限扩展,相信越到后面,服务器资源占用将进入死循环,越占越多。

二、Nacos技术深入调研

为了解决以上问题,我们重新对Nacos技术进行了深入的研究和探索。最终发现Nacos本来就提供了Namespace命名空间+Group分组来隔离环境,一个Nacos机器起起来,是可以通过Namespace命名空间+Group分组支持环境无限扩展,通过资源隔离,也就解决了我们的资源扩展问题。

下面将对此进行分享。

三、Namespace

Nacos引入了命名空间(Namespace)的概念来进行多环境配置和服务的管理及隔离

Namespace也是官方推荐的多环境支持方案。

3.1如何进行配置和服务的管理、隔离

当我们的服务达到一定的数量,集中式的管理许多服务会十分不便,

那我们可以将这些具有相同特征或属性的服务进行分组管理,服务对应的配置也进行分组隔离

这里的分组就是Namespace的概念,将服务和配置纳入相同的Namespace进行管理

不同Namespace下的服务和配置之间就隔离开来

3.2创建和获取NamespaceID

NamespaceId值是在配置文件配置时必须要填入的配置项,所以需要我们先创建Namespace和Id,步骤如下:

(1)nacos 的控制台左边功能栏看到有一个命名空间的功能,点击就可以看到新建命名空间 的按钮

(2)新建成功后,可以在命名空间列表中查看到你所创建的Namespace和他生成的ID值

3.3Namespace下新建配置文件

启动Nacos-Server,进入Nacos控制台,切换到Namespace:dev界面,新建配置文件

DataId:nacos-namespace-dashan-dev.yml

Group:namespace-dashan

配置格式:YAML

配置内容:

nacos:

config: 项目:nacos-namespace-dashan,Namespace:dev

继续新建配置文件

DataId:nacos-namespace-dashantwo-dev.yml

Group:namespace-dashantwo

配置格式:YAML

配置内容:

nacos:

config: 项目:nacos-namespace-dashantwo,Namespace:dev

切换到Namespace:test环境,按照dev中的创建方式,分别创建 nacos-namespace-dashanone-test.yml和 nacos-namespace-dashantwo-test.yml

注意检查DataId是否正确、group、配置内容与环境是否匹配

3.4创建项目

创建Nacos启动项目,在bootstrap.yml文件中加入:

server:

port: 81-1

spring:

application:

name: nacos-namespace-dashanone

profiles:

active: dev

cloud:

nacos:

discovery:

server-addr: 127.0.0.1:8848

namespace: edbd013b-b178-44f7-8caa-e73071e49c4d

group: namespace-dashanone

config:

server-addr: 127.0.0.1:8848

prefix: ${spring.application.name}

file-extension: yml

namespace: edbd013b-b178-44f7-8caa-e73071e49c4d

group: namespace-dashanone

创建test环境配置文件bootstrap-dev.yml:

server:

port: 8812

spring:

application:

name: nacos-namespace-dashanone

profiles:

active: test

cloud:

nacos:

discovery:

server-addr: 127.0.0.1:8848

namespace: 0133bd1e-25c3-4985-96ed-a4e34efdea2e

group: namespace-dashanone

config:

server-addr: 127.0.0.1:8848

prefix: ${spring.application.name}

file-extension: yml

namespace: 0133bd1e-25c3-4985-96ed-a4e34efdea2e

group: namespace-dashanone

重复以上操作,再创建一个名为nacos-namespace-dashantwo的子项目

nacos-namespace-dashantwo项目的dev和test启动端口分别设置为8901和8902,group为:namespace-dashantwo

记得修改spring.application.name、namespace和group

3.5启动项目

启动项目

观察Nacos控制台:

这样不同环境的配置文件就实现了隔离

四、实际操作

4.1 Group区分

配置列表样例:

具体操作:

1.在bootstrap.properties配置文件中加入配置: spring.cloud.nacos.config.group=组名

2.在Nacos配置列表中新建配置

3.配置发布后启动项目查看日志

可以看出Group已经改变

4.说明:

spring.cloud.nacos.config.group 默认为DEFAULT_GROUP

4.2Namespace进行环境隔离

样例:

具体操作:

1.在Nacos命名空间中新建命名空间

2.新建命名空间

3.确认后

4.此时返回配置列表,可以看到已经配置好的命名空间

5.切换到TEST空间,并添加一条配置

6.在bootstrap.properties配置文件中加入配置:

spring.cloud.nacos.config.namespace=命名空间ID

这样当项目启动之后,不同命名空间可以看到不同的服务:

五、总结

通过Nacos的Group分组和Namespace环境隔离,很好的解决了服务区分问题,避免了资源占用过大

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试帮日记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、问题产生背景
  • 二、Nacos技术深入调研
  • 三、Namespace
    • 3.1如何进行配置和服务的管理、隔离
      • 3.2创建和获取NamespaceID
        • 3.3Namespace下新建配置文件
          • 3.4创建项目
            • 3.5启动项目
            • 四、实际操作
              • 4.1 Group区分
                • 4.2Namespace进行环境隔离
                • 五、总结
                相关产品与服务
                对象存储
                对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档