配置中心新贵:Nacos,阿里开源,真香!!

作者:废物大师兄
来源:www.cnblogs.com/cjsblog/p/14007311.html

本文探讨Nacos作为配置中心,如何实现不同环境(开发、测试、灰度、正式)的配置管理问题。

配置中心新贵:Nacos,阿里开源,真香!!

就像Maven用groupId、artifactId、version三者来定位jar包在仓库中的位置一样,Nacos也提供了 Namespace (命名空间) 、Data ID (配置集ID)、 Group (组) 来确定一个配置文件(或者叫配置集)。

由此,实现多环境配置的方案也有三种:

1、用命名空间(namespace)来区分不同的环境,一个命名空间对应一个环境;

2、用配置组(group)来区分不同的环境,命名空间用默认的public即可,一个组对应一种环境;

3、用配置集ID(Data ID)名称来区分不同的环境,命名空间和组用默认的即可,通过文件命名来区分;

接下来,逐个来看

http://{host}:{port}/nacos

http://{host}:{port}/nacos/index.html

默认用户名密码都是nacos

配置中心新贵:Nacos,阿里开源,真香!!

为了方便演示,这里建了一个名为example的Spring Boot项目

配置中心新贵:Nacos,阿里开源,真香!!

pom.xml

1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4     <modelVersion>4.0.0</modelVersion> 5     <parent> 6         <groupId>org.springframework.boot</groupId> 7         <artifactId>spring-boot-starter-parent</artifactId> 8         <version>2.3.6.RELEASE</version> 9         <relativePath/> <!-- lookup parent from repository -->10     </parent>11     <groupId>com.example</groupId>12     <artifactId>example</artifactId>13     <version>0.0.1-SNAPSHOT</version>14     <name>example</name>15 16     <properties>17         <java.version>1.8</java.version>18         <spring-cloud-alibaba.version>2.2.3.RELEASE</spring-cloud-alibaba.version>19     </properties>20 21     <dependencies>22         <dependency>23             <groupId>org.springframework.boot</groupId>24             <artifactId>spring-boot-starter-web</artifactId>25         </dependency>26         <dependency>27             <groupId>com.alibaba.cloud</groupId>28             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>29         </dependency>30     </dependencies>31 32     <dependencyManagement>33         <dependencies>34             <dependency>35                 <groupId>com.alibaba.cloud</groupId>36                 <artifactId>spring-cloud-alibaba-dependencies</artifactId>37                 <version>${spring-cloud-alibaba.version}</version>38                 <type>pom</type>39                 <scope>import</scope>40             </dependency>41         </dependencies>42     </dependencyManagement>43 44     <build>45         <plugins>46             <plugin>47                 <groupId>org.springframework.boot</groupId>48                 <artifactId>spring-boot-maven-plugin</artifactId>49             </plugin>50         </plugins>51     </build>52 53 </project>

bootstrap.yml

spring:  application:    name: example  cloud:    nacos:      config:        server-addr: 192.168.100.10:8848        file-extension: yaml

HelloController.java

package com.example.controller;import org.springframework.beans.factory.annotation.Value;import org.springframework.cloud.context.config.annotation.RefreshScope;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/** * @author ChengJianSheng * @data 2020/11/19 */@RestController@RequestMapping("/hello")@RefreshScopepublic class HelloController {    @Value("${greet.hello}")    private String greet;    @GetMapping("/sayHi")    public String sayHi() {        return greet;    }}

1、利用 Data ID 命名 来区分环境

利用Data ID命名来区分环境,命名空间和组默认即可

在 Nacos Spring Cloud 中,dataId 的完整格式如下:

${prefix}-${spring.profiles.active}.${file-extension}
  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置

  • spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}

  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

配置中心新贵:Nacos,阿里开源,真香!!

配置中心新贵:Nacos,阿里开源,真香!!

配置中心新贵:Nacos,阿里开源,真香!!

配置中心新贵:Nacos,阿里开源,真香!!

配置中心新贵:Nacos,阿里开源,真香!!

用命令行启动也是一样的

配置中心新贵:Nacos,阿里开源,真香!!

例如:

java -Dspring.profiles.active=test -jar example-0.0.1-SNAPSHOT.jar

配置中心新贵:Nacos,阿里开源,真香!!

2、利用 Group 来区分环境

项目不变,我们把spring.application.name改成example2

命名空间用默认的public

配置中心新贵:Nacos,阿里开源,真香!!

配置中心新贵:Nacos,阿里开源,真香!!

配置中心新贵:Nacos,阿里开源,真香!!

java -Dspring.cloud.nacos.config.group=DEV_GROUP -jar example-0.0.1-SNAPSHOT.jar

配置中心新贵:Nacos,阿里开源,真香!!

java -Dspring.cloud.nacos.config.group=TEST_GROUP -jar example-0.0.1-SNAPSHOT.jar

配置中心新贵:Nacos,阿里开源,真香!!

java -Dspring.profiles.active=test -Dspring.cloud.nacos.config.group=TEST_GROUP -jar example-0.0.1-SNAPSHOT.jar

如果是这样的话,这个时候,Data ID 命名就应该是 example2-test.yaml

3、利用 Namespace 区分环境

配置中心新贵:Nacos,阿里开源,真香!!

创建命名空间的时候,如果不指定ID,则自动生成的id就是这样的uuid字符串,我们还是自己指定一个有意义的ID吧

配置中心新贵:Nacos,阿里开源,真香!!

配置中心新贵:Nacos,阿里开源,真香!!

配置中心新贵:Nacos,阿里开源,真香!!

配置中心新贵:Nacos,阿里开源,真香!!

配置中心新贵:Nacos,阿里开源,真香!!

配置中心新贵:Nacos,阿里开源,真香!!

配置中心新贵:Nacos,阿里开源,真香!!

java -Dspring.cloud.nacos.config.namespace=ns_dev -jar example-0.0.1-SNAPSHOT.jar

配置中心新贵:Nacos,阿里开源,真香!!

java -Dspring.profiles.active=dev -Dspring.cloud.nacos.config.namespace=ns_dev -jar example-0.0.1-SNAPSHOT.jar

配置中心新贵:Nacos,阿里开源,真香!!

java -Dspring.cloud.nacos.config.namespace=ns_test -jar example-0.0.1-SNAPSHOT.jar

配置中心新贵:Nacos,阿里开源,真香!!

java -Dspring.profiles.active=test      -Dspring.cloud.nacos.config.namespace=ns_test      -Dspring.cloud.nacos.config.group=TEST_GROUP      -jar example-0.0.1-SNAPSHOT.jar

配置中心新贵:Nacos,阿里开源,真香!!

4、小结

第一种,用 Data ID 区分环境,虽然简单,但是每个项目要创建4个配置文件,随着项目的增多,都在一个命名空间下回显得很混乱,查找起来也不是很方便,而且不利于做权限控制

第二种,用Group区分,问题也是一样的

综上,最好的是用Namespace区分环境,清晰明了,而且有利于做权限控制

https://nacos.io/zh-cn/docs/concepts.html

2021-06-10 原文

配置中心新贵:Nacos,阿里开源,真香!!的相关文章

微软开源的这个小工具,真香!

秋叶Excel 4天前 以下文章来源于懂点Word的晓阳老师 ,作者晓阳老师 本文作者:晓阳老师 本文来源:懂点Word的晓阳老师(ID:BigTongXiaoYi) 本文编辑:尔冬.竺兰 今天想给大 ...

校园社交回潮成“真香”!阿里、头条、京东想对少男少女做什么?

导 读 社交的本质是基于时代信息技+术的发展而不断扩展的人类交际边界.从前的车马书信.飞鸽传书到电报.手机,面对即将到来的5G和物联网时代,社交的形式一定会发生焕然一新的转变. 作者 | 苗戈 为了避 ...

中华酷联老四强手机品牌再回归一员:699元新机配置真香?

现在的国产手机四强大多数人都已经很熟悉了,也就是华为小米OPPOvivo组成的"华米OV".但在这一轮之前的国产手机老四强可能就不是太多人熟悉了,只有像小智这样的老机友才知道.它们 ...

电动吊床香不香?顾客定制版真香!想要啥配置你说了算!

电动吊床香不香?顾客定制版真香!想要啥配置你说了算!

真香!我在法国知名厨艺院校学厨艺,好吃又好玩儿!

各位小伙伴们好,我的笔名是甄诚,曾经就读于首都经济贸易大学市场营销专业,在19年10月份来到法国巴黎蓝带厨艺学院开始正式学习法餐,今天我就来和大家分享一下我为什么到法国学习法餐以及在法国蓝带的就读体验 ...

调白菜饺子馅,最忌放盐杀白菜水分 ,大厨教会你正确做法,真香

调白菜饺子馅,最忌放盐杀白菜水分 ,大厨教会你正确做法,真香

家常烙饼好吃有诀窍,掌握这三种方法,层次分明,外皮酥脆,真香

家常烙饼好吃有诀窍,掌握这三种方法,层次分明,外皮酥脆,真香 家常烙饼好吃有诀窍,掌握这三种方法,层次分明,外皮酥脆,真香 展开

炖猪蹄时,切记“3不放”的窍门,猪蹄Q弹软烂,不腥不油腻,真香

炖猪蹄时,切记“3不放”的窍门,猪蹄Q弹软烂,不腥不油腻,真香

这6个还没被发现的好用国产APP,真香

相信大家平时都用过很多非常好用的APP,但是下面非常小众的好用国产APP,你用过吗?接下来就带各位一探究竟,希望可以帮到你哦! 1.学习强国 国家出品的学习类APP,党员同学们想必是人手一个,视频版块 ...

这些车上的东西都是假的!但买的人却觉得真香!

假货 是我们坚决需要抵制的 假货 意味着知识产权收到侵犯 意味着质量差   汽车上同样有"假货"   就问你够不够唬人? 我们在马路上会看到部分车型为了设计而专门在后杠上设置有&q ...