Nacos,阿里开源,是真的香!!
作者:廢物大師兄
來(lái)源:www.cnblogs.com/cjsblog/p/14007311.html
作者主頁(yè):https://home.cnblogs.com/u/cjsblog/
本文探討?Nacos?作為配置中心,如何實(shí)現(xiàn)不同環(huán)境(開(kāi)發(fā)、測(cè)試、灰度、正式)的配置管理問(wèn)題。
就像Maven用groupId、artifactId、version三者來(lái)定位jar包在倉(cāng)庫(kù)中的位置一樣,Nacos也提供了 Namespace (命名空間) 、Data ID (配置集ID)、 Group (組) 來(lái)確定一個(gè)配置文件(或者叫配置集)。
由此,實(shí)現(xiàn)多環(huán)境配置的方案也有三種:
1、用命名空間(namespace)來(lái)區(qū)分不同的環(huán)境,一個(gè)命名空間對(duì)應(yīng)一個(gè)環(huán)境;
2、用配置組(group)來(lái)區(qū)分不同的環(huán)境,命名空間用默認(rèn)的public即可,一個(gè)組對(duì)應(yīng)一種環(huán)境;
3、用配置集ID(Data ID)名稱(chēng)來(lái)區(qū)分不同的環(huán)境,命名空間和組用默認(rèn)的即可,通過(guò)文件命名來(lái)區(qū)分;
接下來(lái),逐個(gè)來(lái)看
http://{host}:{port}/nacos
http://{host}:{port}/nacos/index.html
默認(rèn)用戶名密碼都是nacos
為了方便演示,這里建了一個(gè)名為example的Spring Boot項(xiàng)目:
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:?examplecloud:nacos:config:server-addr:?192.168.100.10:8848file-extension:?yamlSpring Boot 基礎(chǔ)不介紹了
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") @RefreshScope public?class?HelloController?{@Value("${greet.hello}")private?String?greet;@GetMapping("/sayHi")public?String?sayHi()?{return?greet;} }1、利用 Data ID 命名 來(lái)區(qū)分環(huán)境
利用Data ID命名來(lái)區(qū)分環(huán)境,命名空間和組默認(rèn)即可。
在 Nacos Spring Cloud 中,dataId 的完整格式如下:
?${prefix}-${spring.profiles.active}.${file-extension}prefix 默認(rèn)為 spring.application.name 的值,也可以通過(guò)配置項(xiàng) spring.cloud.nacos.config.prefix來(lái)配置
spring.profiles.active 即為當(dāng)前環(huán)境對(duì)應(yīng)的 profile,詳情可以參考 Spring Boot文檔。注意:當(dāng) spring.profiles.active 為空時(shí),對(duì)應(yīng)的連接符 - 也將不存在,dataId 的拼接格式變成?{file-extension}
file-exetension 為配置內(nèi)容的數(shù)據(jù)格式,可以通過(guò)配置項(xiàng) spring.cloud.nacos.config.file-extension 來(lái)配置。目前只支持 properties 和 yaml 類(lèi)型。
用命令行啟動(dòng)也是一樣的:
例如:
java?-Dspring.profiles.active=test?-jar?example-0.0.1-SNAPSHOT.jar2、利用 Group 來(lái)區(qū)分環(huán)境
項(xiàng)目不變,我們把spring.application.name改成example2
命名空間用默認(rèn)的public
java?-Dspring.cloud.nacos.config.group=DEV_GROUP?-jar?example-0.0.1-SNAPSHOT.jar java?-Dspring.cloud.nacos.config.group=TEST_GROUP?-jar?example-0.0.1-SNAPSHOT.jar java?-Dspring.profiles.active=test?-Dspring.cloud.nacos.config.group=TEST_GROUP?-jar?example-0.0.1-SNAPSHOT.jar如果是這樣的話,這個(gè)時(shí)候,Data ID 命名就應(yīng)該是 example2-test.yaml
3、利用 Namespace 區(qū)分環(huán)境
創(chuàng)建命名空間的時(shí)候,如果不指定ID,則自動(dòng)生成的id就是這樣的uuid字符串,我們還是自己指定一個(gè)有意義的ID吧
java?-Dspring.cloud.nacos.config.namespace=ns_dev?-jar?example-0.0.1-SNAPSHOT.jar java?-Dspring.profiles.active=dev?-Dspring.cloud.nacos.config.namespace=ns_dev?-jar?example-0.0.1-SNAPSHOT.jar java?-Dspring.cloud.nacos.config.namespace=ns_test?-jar?example-0.0.1-SNAPSHOT.jar 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.jar4、小結(jié)
第一種,用 Data ID 區(qū)分環(huán)境,雖然簡(jiǎn)單,但是每個(gè)項(xiàng)目要?jiǎng)?chuàng)建4個(gè)配置文件,隨著項(xiàng)目的增多,都在一個(gè)命名空間下回顯得很混亂,查找起來(lái)也不是很方便,而且不利于做權(quán)限控制
第二種,用Group區(qū)分,問(wèn)題也是一樣的
綜上,最好的是用Namespace區(qū)分環(huán)境,清晰明了,而且有利于做權(quán)限控制
https://nacos.io/zh-cn/docs/concepts.html
- EOF -
想要加入中生代架構(gòu)群的小伙伴,請(qǐng)?zhí)砑尤汉匣锶?strong>大白的微信
申請(qǐng)備注(姓名+公司+技術(shù)方向)才能通過(guò)哦!
阿里技術(shù)精彩文章推薦
往期推薦
深度:揭秘阿里巴巴的客群畫(huà)像
多隆:從工程師到阿里巴巴合伙人
阿里技術(shù)專(zhuān)家楚衡:架構(gòu)制圖的工具與方法論
螞蟻集團(tuán)技術(shù)專(zhuān)家山丘:性能優(yōu)化常見(jiàn)壓測(cè)模型及優(yōu)缺點(diǎn)
阿里文娛技術(shù)專(zhuān)家戰(zhàn)獒: 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)詳解之What, Why, How?
阿里專(zhuān)家馬飛翔:一文讀懂架構(gòu)整潔之道
阿里專(zhuān)家常昊:新人如何上手項(xiàng)目管理?
螞蟻集團(tuán)沈凋墨:Kubernetes-微內(nèi)核的分布式操作系統(tǒng)
阿里合伙人范禹:常掛在阿里技術(shù)人嘴邊的四句土話
阿里技術(shù)專(zhuān)家都鐸:一文搞懂技術(shù)債
支付寶研究員兼OceanBase總架構(gòu)師楊傳輝:我在數(shù)據(jù)庫(kù)夢(mèng)之隊(duì)的十年成長(zhǎng)路
阿里技術(shù)專(zhuān)家麒燁:修煉測(cè)試基本功
阿里計(jì)算平臺(tái)掌門(mén)人賈揚(yáng)清:我對(duì)人工智能方向的一點(diǎn)淺見(jiàn)
螞蟻資深算法專(zhuān)家周俊:從原理到落地,支付寶如何打造保護(hù)隱私的共享智能?
阿里高級(jí)技術(shù)專(zhuān)家簫逸:如何畫(huà)好一張架構(gòu)圖?
阿里高級(jí)技術(shù)專(zhuān)家張建飛:應(yīng)用架構(gòu)分離業(yè)務(wù)邏輯和技術(shù)細(xì)節(jié)之道
螞蟻科技 Service Mesh 落地實(shí)踐與挑戰(zhàn) | GIAC 實(shí)錄
阿里6年,我的技術(shù)蛻變之路!
螞蟻集團(tuán)涵暢:再啟程,Service Mesh 前路雖長(zhǎng),尤可期許
阿里P9專(zhuān)家右軍:大話軟件質(zhì)量穩(wěn)定性
阿里合伙人程立:阿里15年,我撕掉了身上兩個(gè)標(biāo)簽
阿里高工流生 | 云原生時(shí)代的 DevOps 之道
阿里高級(jí)技術(shù)專(zhuān)家邱小俠:微服務(wù)架構(gòu)的理論基礎(chǔ) - 康威定律
阿里P9專(zhuān)家右軍:以終為始的架構(gòu)設(shè)計(jì)
阿里P8架構(gòu)師:淘寶技術(shù)架構(gòu)從1.0到4.0的架構(gòu)變遷!12頁(yè)P(yáng)PT詳解
阿里技術(shù):如何畫(huà)出一張合格的技術(shù)架構(gòu)圖?
螞蟻資深技術(shù)專(zhuān)家王旭:開(kāi)源項(xiàng)目是如何讓這個(gè)世界更安全的?
阿里資深技術(shù)專(zhuān)家崮德:8 個(gè)影響我職業(yè)生涯的重要技能
儒梟:我看技術(shù)人的成長(zhǎng)路徑
阿里高級(jí)技術(shù)專(zhuān)家宋意:平凡人在阿里十年的成長(zhǎng)之旅
阿里技術(shù)專(zhuān)家甘盤(pán):淺談雙十一背后的支付寶LDC架構(gòu)和其CAP分析
阿里技術(shù)專(zhuān)家光錐:億級(jí)長(zhǎng)連網(wǎng)關(guān)的云原生演進(jìn)之路
阿里云原生張羽辰:服務(wù)發(fā)現(xiàn)技術(shù)選型那點(diǎn)事兒
螞蟻研究員玉伯:做一個(gè)簡(jiǎn)單自由有愛(ài)的技術(shù)人
? ?END ? ?? #架構(gòu)師必備#點(diǎn)分享點(diǎn)點(diǎn)贊點(diǎn)在看 新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!總結(jié)
以上是生活随笔為你收集整理的Nacos,阿里开源,是真的香!!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: nyoj42一笔画问题
- 下一篇: nyoj676小明的求助