读取nacos配置_Nacos 5:多环境下如何读取Nacos中配置_楼上由我守护的博客-程序员宅基地

技术标签: 读取nacos配置  

前言

通过前面几篇介绍,已经基本了解了Nacos做为注册中心和配置中心的基本用法。在实际开发中,通常一个系统会准备开发环境、测试环境、预发环境、正式环境那么如何保证指定环境启动时服务能正确读取到Nacos上相应环境的配置文件呢?本文主要对Nacos作为配置中心时,如何对多环境配置文件进行读取进行论述。

Data ID方案

在上一篇文章中有对Data ID进行过介绍,它的命名规则为:${prefix}-${spring.profile.active}.${file-extension}

通过其中的spring.profile.active属性即可进行多环境下配置文件的读取

一起来试一下吧~

新建配置

1、启动Nacos-Server后,创建配置文件Data ID为:nacos-config-dev.yml, 其配置如下:

server:

port: 9980

nacos:

config: 这里是dev环境

2、继续创建配置文件Data ID为:nacos-config-test.yml, 其配置如下:

server:

port: 9981

nacos:

config: 这里是test环境

多环境测试

通过Idea启动nacos-config项目,并指定spring.profiles.active,通过不同的环境进行启动:

通过上面的配置,将项目分为dev、test两个环境启动后,进行测试

可以看到,分别以dev、test启动后相应的读取到不同的配置,dev环境读取到启动端口为9980,test读取到启动端口9981

Group方案

上面介绍了通过指定spring.profile.active和配置文件的DataID来使不同环境下读取不同的配置

这里也可以不用DataID,直接通过Group实现环境区分

注:这种方式不太推荐,切换不灵活,需要切换环境时要改Gruop配置

新建配置

1、创建配置文件Data ID为:nacos-config.yml, Group为:DEV_GROUP, 其配置如下:

server:

port: 9980

nacos:

config: 这里是dev环境

2、继续创建配置文件Data ID为:nacos-config.yml, Group为:TEST_GROUP, 其配置如下:

server:

port: 9981

nacos:

config: 这里是test环境

这里的两个配置文件他们的DataID相同但是Group不同

在config下增加一条group的配置,指定配置文件所在的group,可配置为DEV_GROUP或TEST_GROUP

spring:

application:

name: nacos-config

cloud:

nacos:

discovery:

server-addr: 127.0.0.1:8848

config:

server-addr: 127.0.0.1:8848

prefix: ${spring.application.name}

file-extension: yml

group: DEV_GROUP

启动测试

将group配置为DEV_GROUP启动进行测试

访问 http://127.0.0.1:9980/getValue 返回:这里是dev环境

将group配置为TEST_GROUP启动进行测试

访问 http://127.0.0.1:9981/getValue 返回:这里是test环境

通过指定group的方式启动,DEV_GROUP读取到启动端口为9980,TEST_GROUP读取到启动端口9981

说明

只通过Group来进行多环境的区分的方式我不推荐使用,因为涉及到了多环境自然就会改变spring.profile.active,而profile一旦生效,配置文件就会依据DataID的规则进行查找。所以Group的方式仅作参考。

Group的合理用法应该是配合namespace进行服务列表和配置列表的隔离和管理

Namespace方案

Namespace命名空间进行环境隔离也是官方推荐的一种方式。Namespace的常用场景之一是不同环境的配置的区分隔离,例如:开发测试环境和生产环境的资源(如配置、服务)隔离等。

创建命名空间

创建命名空间DEV和TEST,不同的命名空间会生成相应的UUID,如下图

新建配置文件

1、在命名空间DEV下创建DataID为:nacos-config.yml,Group为默认值的配置,配置如下:

server:

port: 9980

nacos:

config: 这里是DEV命名空间

2、在命名空间TEST下创建DataID为:nacos-config.yml,Group为默认值的配置,配置如下:

server:

port: 9981

nacos:

config: 这里是TEST命名空间

修改项目中的配置文件bootstrap.yml

在config下增加一条namespace的配置,指定当前配置所在的命名空间ID。注意是命名空间ID!!!配置如下

spring:

application:

name: nacos-config

cloud:

nacos:

discovery:

server-addr: 127.0.0.1:8848

config:

server-addr: 127.0.0.1:8848

prefix: ${spring.application.name}

file-extension: yml

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

启动测试

将namespace配置为DEV的ID:edbd013b-b178-44f7-8caa-e73071e49c4d,启动进行测试

访问 http://127.0.0.1:9980/getValue 返回:这里是DEV命名空间

将namespace配置为TEST的ID:0133bd1e-25c3-4985-96ed-a4e34efdea2e,启动进行测试

访问 http://127.0.0.1:9981/getValue 返回:这里是TEST命名空间

通过指定namespace的方式启动,均可读取到对应的启动端口和相关配置

说明

Namespace是官方推荐的环境隔离方案,确实有他的独到之处,使用namespace这种方案,同时可以与DataID+profile的方式结合

同时释放Group的限制,大大提高多环境配置管理的灵活性。

总结

通过上面三种方案的介绍,想必大家对于多环境下的配置读取方式应该有所选择

DataID: 适用于项目不多,服务量少的情况。

Group:实现方式简单,但是容易与DataID方案发生冲突,仅适合于本地调试

Namespace:实现方式简单,配置管理简单灵活,同时可以结合DataID共同使用,推荐这种方案

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42241168/article/details/112941195

智能推荐

关于RakNet的一些入门的入门的总结_cfzjxz的博客-程序员宅基地

网上说这个是非常好的网络引擎,具体介绍请百度之拿来研究了一番,发现资料比较少(除了官网的那些文档),例子也比较少Step1:           官网下载压缩包(还让填信息发邮件确认..orz...)           解压缩以后,编译RakNet_VS2008.sln生成静态链接库(Static Lib)或者动态链接库(DLL),看各人喜好,           我用的是S

网络结构搜索 (NAS: Network Architecture Search)_Law-Yao的博客-程序员宅基地_网络结构搜索

NAS Definition基于搜索策略,并结合约束条件 (如accuracy、latency),在搜索空间内 (set of candidate operations or blocks)探索最优网络结构、或组件结构 (如detector的backbone、FPN); 高效的NAS算法,通常是Trade-off between data-driven and experience-driv...

Node.js学习笔记----中间件的分类_萤火虫的小尾巴的博客-程序员宅基地

文章目录中间件的分类应用级别中间件路由级别中间件错误级别中间件express内置中间件第三方中间件自定义中间件中间件的分类应用级别中间件路由级别中间件错误级别中间件express内置中间件第三方中间件自定义中间件...

STL 简单 iterator 的实现(含源码)_chengonghao的博客-程序员宅基地

STL的中心思想在于将容器(container)和算法(algorithms)分开,彼此独立设计,最后再以一贴胶着剂将它们撮合在一起,而这个胶着剂就是迭代器(iterator)。         迭代器是访问容器的工具。注意,先有容器,才有访问容器的工具。迭代器需要了解容器的特性才能实现,这决定了迭代器必须要深入到容器内部,于是STL干脆把迭代器的开发交给容器的设计者。         迭

AI如何练就读唇术?唇语识别数据功不可没_数据堂官方账号的博客-程序员宅基地

所谓的“唇语识别”,其实并不神秘。早在古代,就有专门的唇语师存在。通过长期的训练,他们具备了“观察别人的嘴型,解读其表达语句”的能力。随着科技的发展,人工智能在各领域渐次开放,在唇语识别上,机器已经在赶超人类了。从技术路径上,唇语识别是一项集机器视觉与自然语言处理于一体的复合型技术。运用机器视觉技术从图像中识别出说话人的人脸,提取此人连续说话时口型变化的特征。将连续变化的特征输入到唇语识别模型中,识别说话人口型对应的发音,运用大数据计算出可能性最大的自然语言语句。在唇语识别过程中,口型与发音,发音与

随便推点

word里实现在方框中打勾和打叉_ecjtuync的博客-程序员宅基地_不插入文本框情况下在方框里面打钩或打叉

1:首先插入对号,通过菜单“插入-特殊符号-数学符号”,倒数第二行第二个字符就是它,然后选中对号,选择菜单“格式-中文版式-带圈字符”,选成方框即可。2:这个方法是在网上看到的,在word里输入大写的“R”,然后字体改成“Wingdings 2”,就OK了!如果是T的话就是打叉3:菜单:“插入/符号/”,在字体一栏选择"Wingdings",倒数第二个就是了。

linux下httpd-2.2.21安装_wzh20099的博客-程序员宅基地

Linux 安装 httpd-2.2.21 Apache服务过程笔记:====== donwload httpd-2.2.21.tar.bz2 ======httpd-2.2.21.tar.bz2 For Linux下载地址: http://www.linuxidc.com/Linux/2011-10/44566.htmtar jxvf httpd-2.2.21.tar.b...

索引贴——移动开发(.Net CF 停止更新)_weixin_30596735的博客-程序员宅基地

这是关于本人博客的技术索引贴,希望能方便的让您阅读到相关技术文章——不断更新中。一整理才发现,好多啊,哈哈~一、.Net CF技巧:搜集、转载一些和CF开发相关的辅助文章,比较适合初学者、开发入门者。『原创』关于“手机拍照识别二维码”WM版运行中的小问题及解决~『原创』+『参考』亲手实验:使用C#在PPC中播放声音 『原创』+『参考』使用C#在PPC的Today界面上的任务栏加入应...

面试中的这些坑,你踩过几个?_茅坤宝骏氹的博客-程序员宅基地_面试踩坑

转载自  面试中的这些坑,你踩过几个?01、请你做一个自我介绍误区:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有。要点:简历上有的可以一两句话带过,重点回答面试官关心的问题,那就是求职者能否胜任工作。包括:最强的技能、最深入研究的技术领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,重点突出...

小白聊智慧制造:一文读懂信息物理系统(CPS)_物联研究的博客-程序员宅基地_信息物理系统

随着我国“中国制造2025”的不断深入,越来越多的制造业企业在探索中国的制造业升级。制造业的智能升级有美国的工业互联网和德国的工业4.0两种方式,根据我国制造业所处的阶段,大多数企业选择德国工业4.0的方案。工业4.0的方案之中,最核心的信息物理系统(CPS)。说到信息物理系统,大家一定不陌生,说起来也如数家珍。那么什么是信息物理系统(CPS)?德国的制造业升级为什么会提出这个系统? 01 信息物...

0705 - 说说 NSPopover 的一个坑_weixin_33971205的博客-程序员宅基地

今天开发 iTips,遇到一个很诡异的问题:NSOutlineView 中的 NSTableCellView 中的 NSTextField,始终有一个背景色,无论怎么设置都无法去掉。如下图中左侧部分所示:关键的,相同的代码在另一个项目中,则没有问题,奇了怪了。Google 了快一个小时,最后终于在 GitHub 的一个项目的一个 Issue 的一个评论里,有人说了一点,才 终于知道为什么:N...

推荐文章

热门文章

相关标签