Nacos(五):多环境下如何“读取”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_GROUPTEST_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的常用场景之一是不同环境的配置的区分隔离,例如:开发测试环境和生产环境的资源(如配置、服务)隔离等。

创建命名空间

创建命名空间DEVTEST,不同的命名空间会生成相应的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共同使用,推荐这种方案

参考感谢




Nacos(五):多环境下如何“读取”Nacos中相应的配置

原文地址:https://www.cnblogs.com/larscheng/p/11407459.html

时间: 2024-08-25 08:01:28

Nacos(五):多环境下如何“读取”Nacos中相应的配置的相关文章

多jdk环境下安装多个tomcat冲突解决配置方法

                                                 文章转载自:[169IT-最新最全的IT资讯] 参考方案一: 一个服务器两个jdk,一个是jdk1.4,一个是jdk1.6. 同样tomcat版本是,tomcat5.0和tomcat6.0.都安装在一个服务器上. tomcat5.0匹配jdk1.4, tomcat6.0匹配jdk1.6, 1.首先指定tomcat匹配的jdk tomcat/bin目录下 catalina.bat setclasspa

CentOS环境下,gdb调试中出现:Missing separate debuginfos, use: debuginfo-install.....的问题

在gdb调试时segmentation fault问题时,遇到下面的了问题: Program received signal SIGABRT, Aborted.0x00007ffff73eb925 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:6464 return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);Missing separate debuginfos, use:

Windows环境下vs2015+opencv3.1+contrib库安装配置

最近几天在安装opencv,也看了网上的一些帖子,结合自己遇到的一些问题写了点内容. 准备: 1. opencv最新的版本是3.10,可以到官网下载http://opencv.org/.官网下载提取后会得到两个文件夹:build和sources.我们需要用到的是sources,用CMake重新编译sources里的内容,再添加contrib库.build里的内容是官网已经编译好的,有其他博客是讲利用build安装的,而这里我们并未用到.opencv也可从GitHub下载https://githu

Windows环境下在IDEA编辑器中spark开发安装步骤

以下是windows环境下安装spark的过程: 1.安装JDK(version:1.8.0.152) 2.安装scala(version:2.11/2.12) 3.安装spark(version:spark-2.3.0-bin-hadoop2.6.tgz) 4.安装wintuils(设置windows系统的环境变量HADOOP_HOME) 以下是spark开发环境搭建: 1.scala插件安装 2.全局JDK和Library的设置 3.配置全局的scala SDK 4.导入spark依赖包(s

SpringBoot系列四:SpringBoot开发(改变环境属性、读取资源文件、Bean 配置、模版渲染、profile 配置)

1.概念 SpringBoot 开发深入 2.具体内容 在之前已经基本上了解了整个 SpringBoot 运行机制,但是也需要清楚的认识到以下的问题,在实际的项目开发之中,尤其是 Java 的 MVC 版项目里面,所有的项目都一定需要满足于如下几点要求: · 访问的端口不能够是 8080,应该使用默认的 80 端口: · 在项目之中为了方便进行数据的维护,建议建立一系列的*.properties 配置文件,例如:提示消息.跳转路径: · 所有的控制器现在都采用了 Rest 风格输出,但是正常来讲

windows环境下MySQL-5.7.12-winx64下载安装与配置

系统:64位Win-7 官网压缩包:mysql-5.7.12-winx64.zip 前后花了一些时间,以前都是下载软件直接安装在本地,现在这个不一样,下载压缩包后要解压缩到安装目录,然后在控制台下配置服务. 整体的流程如下: 1. 下载: 到http://dev.mysql.com/downloads/mysql/下载,或者登陆mysql官网按Downloads——Community——MySQL Community Server顺序访问,可以看到 我的机子是64位的,于是选第二个(344.2M

关于IDEA开发环境下的Kafka+Spark Streaming的classpath配置方式

一.前言 在使用Spark Streaming中的Kafka Direct API进行Kafka消费的过程中,通过spark-submit的方式提交jar包,会出现如下错误信息,提示无法找到KafkaUtils. Exceptionin thread "main" java.lang.NoClassDefFoundError: org/apache/spark/streaming/kafka/KafkaUtils$ at com.zhkmxx.scala.app.KafkaStream

生产环境下的ssh服务远程登陆的配置

ssh服务远程登陆的配置 1. 修改ssh默认登陆端口为52113,禁止root登陆 方法一:用vi打开sshd_config,编辑好的内容写入. vi /etc/ssh/sshd_config port 52113     #ssh 连接默认的端口 PermitRootLogin no   #禁止root用户远程 UseDNS no    #不使用DNS PermitEmptyPasswords no #禁止空密码 GSSAPIAuthentication no   #linux下SSH远程连

win10环境下MinGW和MSYS的安装与配置

最近在看<Python高级编程>这本书,里面讲到需要安装MinGW和MSYS.因此,也了解到MinGW是针对Windows平台开发的编译器,可以实现gcc编译器的各种功能. 1.首先,从官网http://www.mingw.org/下载相应版本的MinGW, 2.双击安装之后,最后会出现如图所示 3.通过计算机 ---> 属性 ---> 高级系统设置 ---> 环境变量,修改配置属性 4.输入gcc -v 查看,显示版本信息,则表示安装成功: 提示:MSYS直接在官网下载,按