温州做网站的公司有哪些,微信公众号网站自己做导航条,模板下载网站源码,淄博网站建设哪家便宜前情回顾#xff1a; 
《Spring Cloud Alibaba基础教程#xff1a;使用Nacos实现服务注册与发现》《Spring Cloud Alibaba基础教程#xff1a;支持的几种服务消费方式》《Spring Cloud Alibaba基础教程#xff1a;使用Nacos作为配置中心》《Spring Cloud Alibaba基础教程 
《Spring Cloud Alibaba基础教程使用Nacos实现服务注册与发现》《Spring Cloud Alibaba基础教程支持的几种服务消费方式》《Spring Cloud Alibaba基础教程使用Nacos作为配置中心》《Spring Cloud Alibaba基础教程Nacos配置的加载规则详解》
通过之前两篇对Nacos配置管理功能的介绍已经学会了在Nacos中如何加入配置以及Spring Cloud应用如何通过配置来加载到对应的内容。接下来我们讨论一个在使用配置中心时都需要关注的一个问题多环境的配置如何实现与管理 
多环境管理 
在Nacos中本身有多个不同管理级别的概念包括Data ID、Group、Namespace。只要利用好这些层级概念的关系就可以根据自己的需要来实现多环境的管理。 
下面我就来介绍一下可以使用的几种实现方式 
使用Data ID与profiles实现 
Data ID在Nacos中我们可以理解为就是一个Spring Cloud应用的配置文件名。通过上一篇《Spring Cloud Alibaba基础教程Nacos配置的加载规则详解》我们知道默认情况下Data ID的名称格式是这样的${spring.application.name}.properties即以Spring Cloud应用命名的properties文件。 
实际上Data ID的规则中还包含了环境逻辑这一点与Spring Cloud Config的设计类似。我们在应用启动时可以通过spring.profiles.active来指定具体的环境名称此时客户端就会把要获取配置的Data ID组织为${spring.application.name}-${spring.profiles.active}.properties。 实际上更原始且最通用的匹配规则是这样的${spring.cloud.nacos.config.prefix}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}。而上面的结果是因为${spring.cloud.nacos.config.prefix}和${spring.cloud.nacos.config.file-extension}都使用了默认值。 动手试一试 
我们可以用《Spring Cloud Alibaba基础教程使用Nacos作为配置中心》一文中的列子可在文末仓库中获取为基础体验一下这种区分环境的配置方式。 
第一步先在Nacos中根据这个规则创建两个不同环境的配置内容。比如 如上图我们为alibaba-nacos-config-client应用定义了DEV和TEST的两个独立的环境配置。我们可以在里面定义不同的内容值以便后续验证是否真实加载到了正确的配置。 
第二步在alibaba-nacos-config-client应用的配置文件中增加环境配置spring.profiles.activeDEV 
第三步启动应用我们可以看到日志中打印了加载的配置文件 
2019-01-30 15:25:18.216  INFO 96958 --- [           main] o.s.c.a.n.c.NacosPropertySourceBuilder   : Loading nacos data, dataId: alibaba-nacos-config-client-DEV.properties, group: DEFAULT_GROUP使用Group实现 
Group在Nacos中是用来对Data ID做集合管理的重要概念。所以如果我们把一个环境的配置视为一个集合那么也就可以实现不同环境的配置管理。对于Group的用法并没有固定的规定所以我们在实际使用的时候需要根据我们的具体需求可以是架构运维上对多环境的管理也可以是业务上对不同模块的参数管理。为了避免冲突我们需要在架构设计之初做好一定的规划。这里我们先来说说如何用Group来实现多环境配置管理的具体实现方式。 
动手试一试 
第一步先在Nacos中通过区分Group来创建两个不同环境的配置内容。比如 如上图我们为alibaba-nacos-config-client应用定义了DEV环境和TEST环境的两个独立的配置这两个匹配与上一种方法不同它们的Data ID是完全相同的只是GROUP不同。 
第二步在alibaba-nacos-config-client应用的配置文件中增加Group的指定配置spring.cloud.nacos.config.groupDEV_GROUP 
第三步启动应用我们可以看到日志中打印了加载的配置文件 
2019-01-30 15:55:23.718  INFO 3216 --- [main] o.s.c.a.n.c.NacosPropertySourceBuilder   : Loading nacos data, dataId: alibaba-nacos-config-client.properties, group: DEV_GROUP使用Namespace实现 
Namespace在本系列教程中应该还是第一次出现。先来看看官方的概念说明用于进行租户粒度的配置隔离。不同的命名空间下可以存在相同的Group或Data ID的配置。Namespace的常用场景之一是不同环境的配置的区分隔离例如开发测试环境和生产环境的资源如配置、服务隔离等。 
在官方的介绍中就介绍了利用其可以作为环境的隔离使用下面我们就来试一下吧 
动手试一试 
第一步先在Nacos中根据环境名称来创建多个Namespace。比如 第二步在配置列表的最上方可以看到除了Public之外多了几个刚才创建的Namepsace。分别在DEV和TEST空间下为alibaba-nacos-config-client应用创建配置内容 第三步在alibaba-nacos-config-client应用的配置文件中增加Namespace的指定配置比如spring.cloud.nacos.config.namespace83eed625-d166-4619-b923-93df2088883a。 这里需要注意namespace的配置不是使用名称而是使用Namespace的ID。 第四步启动应用通过访问localhost:8001/test接口验证一下返回内容是否正确。这种方式下目前版本的日志并不会输出与Namespace相关的信息所以还无法以此作为加载内容的判断依据。 
深入思考 
上面我们分别利用Nacos配置管理功能中的几个不同纬度来实现多环境的配置管理。从结果上而言不论用哪一种方式都能够胜任需求但是哪一种最好呢 
第一种通过Data ID与profile实现。 
优点这种方式与Spring Cloud Config的实现非常像用过Spring Cloud Config的用户可以毫无违和感的过渡过来由于命名规则类似所以要从Spring Cloud Config中做迁移也非常简单。缺点这种方式在项目与环境多的时候配置内容就会显得非常混乱。配置列表中会看到各种不同应用不同环境的配置交织在一起非常不利于管理。建议项目不多时使用或者可以结合Group对项目根据业务或者组织架构做一些拆分规划。
第二种通过Group实现。 
优点通过Group按环境讲各个应用的配置隔离开。可以非常方便的利用Data ID和Group的搜索功能分别从应用纬度和环境纬度来查看配置。缺点由于会占用Group纬度所以需要对Group的使用做好规划毕竟与业务上的一些配置分组起冲突等问题。建议这种方式虽然结构上比上一种更好一些但是依然可能会有一些混乱主要是在Group的管理上要做好规划和控制。
第三种通过Namespace实现。 
优点官方建议的方式通过Namespace来区分不同的环境释放了Group的自由度这样可以让Group的使用专注于做业务层面的分组管理。同时Nacos控制页面上对于Namespace也做了分组展示不需要搜索就可以隔离开不同的环境配置非常易用。缺点没有啥缺点可能就是多引入一个概念需要用户去理解吧。建议直接用这种方式长远上来说会比较省心。虽然可能对小团队而言项目不多第一第二方式也够了但是万一后面做大了呢注意不论用哪一种方式实现。对于指定环境的配置spring.profiles.activeDEV、spring.cloud.nacos.config.groupDEV_GROUP、spring.cloud.nacos.config.namespace83eed625-d166-4619-b923-93df2088883a都不要配置在应用的bootstrap.properties中。而是在发布脚本的启动命令中用-Dspring.profiles.activeDEV的方式来动态指定会更加灵活。 参考资料 
Nacos官方文档
代码示例 
本文示例读者可以通过查看下面仓库的中的alibaba-nacos-config-client项目 
Githubhttps://github.com/dyc87112/SpringCloud-Learning/Giteehttps://gitee.com/didispace/SpringCloud-Learning/
如果您对这些感兴趣欢迎star、follow、收藏、转发给予支持 
以下专题教程也许您会有兴趣 
Spring Boot基础教程Spring Cloud基础教程