Nacos(五):多环境下如何“读取”Nacos中相应的配置
参考感谢
前言
前景回顾:
- Nacos(四):SpringCloud项目中接入Nacos作为配置中心
- Nacos(三):Nacos与OpenFeign的对接使用
- Nacos(二):SpringCloud项目中接入Nacos作为注册中心
通过前面几篇介绍,已经基本了解了Nacos做为注册中心和配置中心的基本用法。
在实际开发中,通常一个系统会准备开发环境、测试环境、预发环境、正式环境
那么如何保证指定环境启动时服务能正确读取到Nacos上相应环境的配置文件呢
本文主要对Nacos作为配置中心时,如何对多环境配置文件进行读取进行论述。
我的环境
- Windows10
- JDK8
- SpringCloud:Finchley.RELEASE
- SpringBoot:2.0.4.RELEASE
- spring-cloud-alibaba-dependencies:0.2.2.RELEASE
- Nacos-server:1.0.1
本文的项目Demo继续沿用 Nacos(四)中的工程nacos-config
,若小伙伴还没有之前的环境,可至源码地址中下载
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两个环境启动后,进行测试
访问 http://127.0.0.1:9980/getValue 返回:这里是dev环境
访问 http://127.0.0.1:9981/getValue 返回:这里是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不同
修改项目中的配置文件bootstrap.yml
在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共同使用,推荐这种方案
- 文章作者: LarsCheng
- 文章链接: 本文首发于个人博客:https://www.larscheng.com/nacos-namespace/
- 发布方式:OpenWrite 最懂你的科技自媒体管理平台
- 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LarsCheng's Blog!
Nacos(五):多环境下如何“读取”Nacos中相应的配置的更多相关文章
- (转 留存)Windows环境下的NodeJS+NPM+GIT+Bower安装配置步骤
Windows环境下的NodeJS+NPM+GIT+Bower安装配置步骤 标签: NodeJSnpmbower 2015-07-17 16:38 3016人阅读 评论(0) 收藏 举报 分类: G ...
- Linux环境下shell和vim中乱码原因及消除办法
shell和vim中乱码原因及消除办法 作者:Jack47 在Linux下开发,经常遇到乱码问题:shell或者vim中显示不了中文,或者能够显示,但不能输入中文.每次都是上网去搜,或者同事告诉我一些 ...
- Windows环境下在IDEA编辑器中spark开发安装步骤
以下是windows环境下安装spark的过程: 1.安装JDK(version:1.8.0.152) 2.安装scala(version:2.11/2.12) 3.安装spark(version:s ...
- linux环境下搭建osm_web服务器一(Postgresql配置及osm2pgsql原始数据导入):
Postgresql配置及osm2pgsql原始数据导入 2012年,Ubuntu 12.04LTS发布,又一个长效支持版,我们又该更新OpenStreetMap服务器了,这次,将详细在博客中记录配置 ...
- Linux环境下Gitblit服务搭建及秘钥配置
一.安装gitblit服务 1.下载地址 https://pan.baidu.com/s/1wQ3TEE_gw5xZvyFPZB9xFg 2.上传至linux服务器并解压缩 tar xvf gitbl ...
- 分享一个linux环境下快速读取行数的命令
最初是因为我需要计算一天的日志行数,如果用传统意义上的cat a.log |wc -l的话因为是单线程,所以需要计算半小时的样子,后来同组的小伙伴教了我一个方法可以有效提高计算速度,将计算时间减半. ...
- linux环境下java读取sh脚本并执行
Process process; String cmd = "/home/ty/t.sh";//这里必须要给文件赋权限 chmod u+x fileName; ...
- SpringBoot系列四:SpringBoot开发(改变环境属性、读取资源文件、Bean 配置、模版渲染、profile 配置)
声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念 SpringBoot 开发深入 2.具体内容 在之前已经基本上了解了整个 SpringBoot 运行机制,但是也需要清 ...
- SpringBoot开发(改变环境属性、读取资源文件、Bean 配置、模版渲染、profile 配置)
1.概念 SpringBoot 开发深入 2.具体内容 在之前已经基本上了解了整个 SpringBoot 运行机制,但是也需要清楚的认识到以下的问题,在实际的项目开发之中,尤其是 Java 的 MVC ...
随机推荐
- R035---偷个懒,用UiPath录制电脑操作过程,迅速实现流程自动化
一.缘起 UiPath可以录制你操作电脑的过程,从而实现自动化. 目前有点鸡肋,因为有些操作过程无法录制,例如: 键盘快捷键 修改键 右键点击 鼠标悬停 即便如此,录制功能有时候还是可以用一下,特别 ...
- 洛谷P2057 [SHOI2007]善意的投票 题解
题目链接: https://www.luogu.org/problemnew/show/P2057 分析: 由0和1的选择我们直觉的想到0与S一堆,1与T一堆. 但是发现,刚开始的主意并不一定是最终的 ...
- ehcache的使用 Shiro与Ehcache的结合(附:EhcacheUtils)
ehcache 缓存的使用 合理的使用缓存会极大的提高程序的运行效率.切记:缓存请勿滥用. 配置ehcache与Shiro shiro初识请查看该文章 https://blog.csdn.net/py ...
- spring配置文件比较全的约束
个人总结:Spring的配置文件applicationContext.xml约束文件.全面约束 <?xml version="1.0" encoding="utf- ...
- Error:Some file crunching failed, see logs for details
Information:Gradle tasks [:myapp2:assembleDebug] Error:Some file crunching failed, see logs for deta ...
- Python(简单图形和文件处理)编程
Python确实是一门很简洁而且功能有强大的语言,我觉得开始学习很容易理解,说到熟练和精通还是不容易的,还需不断学习. 从最基础的语法学习,有些部分各种语言是相同的,让人很好理解.编程也是从最简单语法 ...
- VM虚拟机Linux系统eth0下面没有inet和inet6
今天打开虚拟机发现ip有问题,VM虚拟机Linux系统eth0下面没有inet和inet6,明明都是配置好的 打开任务管理器-> 服务-> 打开VM的nat和DHCP和hostd 正常后:
- Win常用软件
本节只适合windows系统 VScode 下载 安装 双击安装 打开目录方式 右键文件夹->使用VSCode打开 命令行打开 code folder [dzlua@win10:~]$ ls a ...
- 统计学习方法6—logistic回归和最大熵模型
目录 logistic回归和最大熵模型 1. logistic回归模型 1.1 logistic分布 1.2 二项logistic回归模型 1.3 模型参数估计 2. 最大熵模型 2.1 最大熵原理 ...
- ES 24 - 如何通过Elasticsearch进行聚合检索 (分组统计)
目录 1 普通聚合分析 1.1 直接聚合统计 1.2 先检索, 再聚合 1.3 扩展: fielddata和keyword的聚合比较 2 嵌套聚合 2.1 先分组, 再聚合统计 2.2 先分组, 再统 ...