docker配置 nacos_Nacos - 阿里开源配置中心
這里是喵了個(gè)咪的后端技術(shù)分享,覺得寫的不錯(cuò)。點(diǎn)個(gè)贊,轉(zhuǎn)發(fā)一下,關(guān)注一下。本文載于個(gè)人原創(chuàng)技術(shù)博客http://w-blog.cn,轉(zhuǎn)載請(qǐng)注明出處,非法轉(zhuǎn)載抄襲將追究其責(zé)任。
配置中心相信大家都有聽過,zookeeper、apollo等等都是配置中心的代表,但大部分都是JAVA系為主的,筆者主要開發(fā)語(yǔ)言使用的是Golang當(dāng)然也有類似于ETCD這樣的組件,但是并不方便管理也無法可視化,在無意之間發(fā)現(xiàn)了阿里爸爸開源了nacos這個(gè)服務(wù)發(fā)現(xiàn)+配置中心組件,也經(jīng)過了一段時(shí)間的時(shí)候在這里分享給大家
附上:
喵了個(gè)咪的博客:w-blog.cn
Nacos官方Git地址:https://github.com/alibaba/nacos
Nacos官方文檔地址:https://nacos.io/zh-cn/docs/
Go語(yǔ)言SDK地址:https://github.com/sunmi-OS/gocore/tree/master/nacos
PS:當(dāng)前官方最新版本為 V1.1.3,阿里云有提供配置中心服務(wù)ACM使用方式和Nacos相同,使用阿里云的前提下免運(yùn)維是個(gè)不錯(cuò)的選擇
一、Nacos介紹
Nacos是阿里云中間件團(tuán)隊(duì)開源的一個(gè)項(xiàng)目,基于阿里云內(nèi)部提供的ACM配置管理服務(wù)進(jìn)行獨(dú)立,截止到現(xiàn)在github已經(jīng)有8K以上的star了,雖然成熟度還不能和攜程開源的apollo相提并論,比較也是在阿里云上提供服務(wù)的組件穩(wěn)定性還是值得相信的,當(dāng)然要使用介紹Nacos必須要介紹介紹配置中心這樣一個(gè)思想了。
配置中心是個(gè)老生常談的話題,從有軟件編程開始配置管理都是工程中重要的一步,當(dāng)然對(duì)與一個(gè)單體應(yīng)用只需要單個(gè)配置文件或環(huán)境變量的方式來管理配置就好了所以不再本文的討論范圍內(nèi),配置中心主要解決服務(wù)化或微服務(wù)化下的配置管理中的如下問題:
- 有效的密碼管理,開發(fā)不碰觸密碼配置,運(yùn)維人員和架構(gòu)團(tuán)隊(duì)統(tǒng)一管理避免泄露;
- 多項(xiàng)目下的配置絕對(duì)統(tǒng)一性,不會(huì)出現(xiàn)配置寫錯(cuò)導(dǎo)致的BUG
- 對(duì)于配置的編輯、存儲(chǔ)、分發(fā)、變更管理、歷史版本管理、變更審計(jì)有完善的能力
- 配置分組和灰度發(fā)布
- 有好處當(dāng)然也有壞處,相對(duì)于使用配置文件我們還需要解決如下問題:
- 配置中心異常情況下服務(wù)怎么保障可用(SDK提供Cache功能當(dāng)中心服務(wù)不可用會(huì)使用上一次加載的緩存配置)
- 配置變更后的程序生效邏輯(SDK提供配置變動(dòng)訂閱邏輯可以訂閱配置變動(dòng)編寫處理邏輯)
- 開發(fā)過程中的配置文件調(diào)試(需要框架進(jìn)行設(shè)計(jì))
- 對(duì)于部分語(yǔ)言來說(PHP)配置中心性能的問題(Nacos的吞吐量8C16G 15K并發(fā))
- 對(duì)比下來還是可以總結(jié)出配置中心利大于弊的結(jié)論
二、Nacos部署
Nacos不止支持二進(jìn)制部署也支持支持Docker和K8S部署,因?yàn)镹acos是有狀態(tài)服務(wù)存儲(chǔ)的數(shù)據(jù)需要依賴于Mysql而且集群的方式需要指定slave的IP所以使用K8S并不是很好的選擇(K8S使用StatefulSet來運(yùn)行有狀態(tài)服務(wù)),筆者這里用Docker-Composer的方式來運(yùn)行Nacos
Nacos官方Docker部署方式Git地址:https://github.com/nacos-group/nacos-dockergit clone https://github.com/nacos-group/nacos-docker.git單機(jī)部署(內(nèi)存模式):docker-compose -f example/standalone-derby.yaml up單機(jī)部署(Mysql模式):docker-compose -f example/standalone-mysql.yaml up集群部署:docker-compose -f example/cluster-hostname.yaml up訪問:http://localhost:8848/nacos/ 就可以看到登錄界面了
PS:默認(rèn)用戶名和密碼都是 nacos
阿里云ACM服務(wù)
當(dāng)然自己部署Nacos還會(huì)面臨很多挑戰(zhàn),比如:
- 集群搭建
- 穩(wěn)定性
- Mysql數(shù)據(jù)庫(kù)維護(hù)
- 配置安全保護(hù)(Nacos沒有密碼一說,但是ACM需要使用阿里云的密鑰可以提高安全程度)
PS:秉著能用服務(wù)就不自己搭建的原則筆者最終使用的是阿里云的ACM服務(wù)(當(dāng)前ACM服務(wù)免費(fèi))
PS:需要注意阿里云ACM和Nacos在SDK中的鏈接方式有不同
三、基礎(chǔ)使用
Nacos有幾個(gè)基礎(chǔ)概念,我們只有先了解清楚之后才能更好的結(jié)合到業(yè)務(wù)場(chǎng)景:
- namespace 命名空間
- Group 配置分組
- DataID 具體的配置名稱
一般我們使用namespace來區(qū)分不同的項(xiàng)目或環(huán)境,Group區(qū)分配置的差異系比如A業(yè)務(wù)獲取的配置和B團(tuán)隊(duì)的有一些細(xì)微的差別可以通過Group來區(qū)分,最后使用DataId來區(qū)分具體的配置項(xiàng)
增加一個(gè)namespace
新增一個(gè)配置
支持很多種配置格式,也可以使用自定義的格式甚至直接存放代碼都行
也有對(duì)應(yīng)的JAVA系的示例代碼
四、SDK和OpenApi使用配置
Nacos支持一下語(yǔ)言的SDK(當(dāng)然GIT上也有很多非官方的SDK庫(kù)):
- Java
- go
- cpp
- python
- nodejs
大家可以在官方文檔中查看具體的使用方式
上面已經(jīng)配置好的配置我們可以使用OpenApi來訪問它
curl "http://172.16.0.13:8848/nacos/v1/cs/configs?dataId=test_config&group=DEFAULT_GROUP&tenant=b58ea912-e564-4958-b21f-3098ad15daf9"{"name":"sunmi"}特別注意tenant就是需要輸入namespace的名稱,但是不是原名是如下的名稱
差不多基本的使用就到這里了,Nacos的開源版本還能姐姐服務(wù)發(fā)現(xiàn)相關(guān)的問題這些就留給大家探索了,在配置方面已經(jīng)能夠解決大部分問題了,下期筆者會(huì)基于Go語(yǔ)言給出配置中心最佳實(shí)踐,大家記得關(guān)注我哦。
總結(jié)
以上是生活随笔為你收集整理的docker配置 nacos_Nacos - 阿里开源配置中心的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: flutter 如何判断在哪个页面_Ag
- 下一篇: 清华大学计算机系男女比v,清华男女生比例