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