SpringCloud Alibaba —— Nacos 分类配置 - Go语言中文社区

SpringCloud Alibaba —— Nacos 分类配置


前文

SpringCloud 简介

SpringCloud 版本选型

SpringCloud 工程构建

SpringCloud —— Eureka 注册中心

SpringCloud —— Eureka 集群

SpringCloud —— 服务注册进 Eureka 集群

SpringCloud —— Eureka 自我保护

SpringCloud —— SpringCloud Consul 实现服务注册中心

SpringCloud —— 三个注册中心的异同点

SpringCloud —— Ribbon

SpringCloud —— Ribbon 负载均衡算法

SpringCloud —— OpenFeign

SpringCloud —— Hystrix 简介

SpringCloud —— Hystrix 断路器

SpringCloud —— HystrixDashboard 服务监控

SpringCloud —— Gateway 网关

SpringCloud —— Config 配置中心

SpringCloud —— Sleuth 分布式请求链路跟踪

SpringCloud Alibaba —— Nacos 服务注册

SpringCloud Alibaba —— Nacos 配置中心

多环境多项目管理问题

问题一:

  • 实际开发中,通常一个系统会准备
  • dev 开发环境
  • test 测试环境
  • prod 生产环境
  • 如何保证指定环境启动时服务能正确读取到 Nacos 上相应环境的配置文件呢?

问题二:

  • 一个大型分布式微服务系统会有很多的微服务子项目
  • 每个微服务项目又都会有相应的开发环境、测试环境、预发环境、正式环境…
  • 那么怎么对这些微服务配置进行管理呢?

Nacos 的图形化管理界面

配置管理

在这里插入图片描述

命名空间

在这里插入图片描述

Namespace + Group + Data ID 三者关系

Namespace + Group + Data ID 是什么?

类似 Java 里面的 package 名和类名

最外层的 namespace 是可以用于区分部署环境的,Group 和 DataID 逻辑上区分两个目标对象

三者关系

在这里插入图片描述
默认情况:

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

为什么这样设计?

Nacos 默认的命名空间是 public,Namespace 主要用来实现隔离

比方说我们现在有三个环境:开发、测试、生产环境,我们就可以创建三个 Namespace,不同的 Namespace 之间是隔离的

Group 默认是 DEFAULT_GROUP,Group 可以把不同的微服务划分到同一个分组里面去

Service 就是微服务;一个 Service 可以包含多个 Cluster(集群),Nacos 默认 Cluster 是 DEFAULT,Cluster 是对指定微服务的一个虚拟划分。比方说为了容灾,将 Service 微服务分别部署在了杭州机房和广州机房

这时就可以给杭州机房的 Service 微服务起一个集群名称(HZ),给广州机房的 Service 微服务起一个集群名称(GZ),还可以尽量让同一个机房的微服务互相调用,以提升性能

最后是 Instance,就是微服务的实例

三种方案加载配置

DataID 方案

指定 spring.profile.active 和配置文件的 DataID 来使不同环境下读取不同的配置

默认空间 + 默认分组 + 新建 dev 和 test 两个 DataID

在该界面点击 + 号,添加新的配置
在这里插入图片描述
编写配置,点击发布
在这里插入图片描述
现在该界面的 DEFAULT_GROUP 已经有两个配置文件,这里 dev 表示开发环境,test 表示测试环境
在这里插入图片描述

通过 spring.profile.active 属性就能进行多环境下配置文件的读取

这里的 active 配置的是什么就加载什么
在这里插入图片描述

测试

启动主启动类 ,访问 http://localhost:3377/config/info
在这里插入图片描述

Group 方案

通过 Group 实现环境区分

在这里插入图片描述

在 Nacos 图形界面控制台上面新建配置文件 DataID

新建两个配置,然后放到不同的 GROUP 里面去
在这里插入图片描述
在这里插入图片描述

同名的文件放到不同的 GROUP 里面
在这里插入图片描述

bootstrap + application

在 config 下增加一条 group 的配置即可,可配置为 DEV_GROUP 或 TEST_GROUP

在这里插入图片描述

访问 http://localhost:3377/config/info
在这里插入图片描述
将 group 改为 DEV_GROUP
在这里插入图片描述
访问 http://localhost:3377/config/info 也是 OK 的
在这里插入图片描述

Namspace 方案

新建 dev / test 的 Namespace

点击命名空间选项,然后点击新建命名空间按钮
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
再新建一个
在这里插入图片描述
可以发现,dev 和 test 都是可以删除的,但是 public 是不可以删除的

回到服务管理-服务列表查看

现在有命名空间 public、dev、test
在这里插入图片描述
这是命名空间 dev
在这里插入图片描述
这是命名空间 test
在这里插入图片描述

按照域名配置填写

在 dev 下新建配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现在 dev 下有三个配置文件
在这里插入图片描述

YML

那么如何去访问这些配置文件呢?很简单,拷贝这个 dev 的 id

在这里插入图片描述
将 id 放到 bootstrap.yml 文件里面(注意 group,这里只会访问 gorup 为 DEV_GROUP 组的配置文件),如下:
在这里插入图片描述
启动服务,访问
http://localhost:3377/config/info 也是 OK 的
在这里插入图片描述
如果想访问 dev 组里面不同的配置文件,只需要修改 bootstrap.yml 文件里面的 group 即可


完整代码已上传至码云 完整代码地址,感兴趣的朋友可以下载运行下

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/Woo_home/article/details/106243200
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-05-30 22:00:02
  • 阅读 ( 780 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢