SpringCloud alibaba在之前已經(jīng)進行了大概的介紹,在微服務(wù)環(huán)境下對于大量存在的服務(wù)管理等肯定需要一個統(tǒng)一的服務(wù)注冊中心,同時也由于之前提到的集中式配置中心的需求而账。那么在SpringCloud alibaba中最優(yōu)的選擇就是Nacos规求。
什么是Nacos?
Nacos用于服務(wù)的注冊發(fā)現(xiàn)與服務(wù)的配置管理蹦玫。Nacos提供了簡單易用的Web Console烟馅√握悖可以幫助開發(fā)者快速的實現(xiàn)服務(wù)發(fā)現(xiàn)康辑、服務(wù)配置管理、服務(wù)元數(shù)據(jù)等需求轿亮。
它類似于Dubbo的zookeeper注冊中心疮薇、SpringCloud 的Eureka等。同時又支持了分布式服務(wù)配置管理等特點我注。
Nacos的關(guān)鍵特性
- 服務(wù)注冊發(fā)現(xiàn)與健康檢查
- 動態(tài)配置管理按咒,可視化管理界面
- 動態(tài)DNS
- 服務(wù)及元數(shù)據(jù)管理
Nacos 地圖
Nacos生態(tài)圖
Nacos基礎(chǔ)架構(gòu)與概念
服務(wù) (Service)
服務(wù)是指一個或一組軟件功能(例如特定信息的檢索或一組操作的執(zhí)行),其目的是不同的客戶端可以為不同的目的重用(例如通過跨進程的網(wǎng)絡(luò)調(diào)用)仓手。Nacos 支持主流的服務(wù)生態(tài)胖齐,如 Kubernetes Service玻淑、gRPC|Dubbo RPC Service 或者 Spring Cloud RESTful Service.服務(wù)注冊中心 (Service Registry)
服務(wù)注冊中心,它是服務(wù)呀伙,其實例及元數(shù)據(jù)的數(shù)據(jù)庫补履。服務(wù)實例在啟動時注冊到服務(wù)注冊表,并在關(guān)閉時注銷剿另。服務(wù)和路由器的客戶端查詢服務(wù)注冊表以查找服務(wù)的可用實例箫锤。服務(wù)注冊中心可能會調(diào)用服務(wù)實例的健康檢查 API 來驗證它是否能夠處理請求。服務(wù)元數(shù)據(jù) (Service Metadata)
服務(wù)元數(shù)據(jù)是指包括服務(wù)端點(endpoints)雨女、服務(wù)標簽谚攒、服務(wù)版本號、服務(wù)實例權(quán)重氛堕、路由規(guī)則馏臭、安全策略等描述服務(wù)的數(shù)據(jù)服務(wù)提供方 (Service Provider)
是指提供可復(fù)用和可調(diào)用服務(wù)的應(yīng)用方服務(wù)消費方 (Service Consumer)
是指會發(fā)起對某個服務(wù)調(diào)用的應(yīng)用方配置 (Configuration)
在系統(tǒng)開發(fā)過程中通常會將一些需要變更的參數(shù)、變量等從代碼中分離出來獨立管理讼稚,以獨立的配置文件的形式存在括儒。目的是讓靜態(tài)的系統(tǒng)工件或者交付物(如 WAR,JAR 包等)更好地和實際的物理運行環(huán)境進行適配锐想。配置管理一般包含在系統(tǒng)部署的過程中帮寻,由系統(tǒng)管理員或者運維人員完成這個步驟。配置變更是調(diào)整系統(tǒng)運行時的行為的有效手段之一赠摇。配置管理 (Configuration Management)
在數(shù)據(jù)中心中固逗,系統(tǒng)中所有配置的編輯、存儲藕帜、分發(fā)烫罩、變更管理、歷史版本管理洽故、變更審計等所有與配置相關(guān)的活動統(tǒng)稱為配置管理嗡髓。名字服務(wù) (Naming Service)
提供分布式系統(tǒng)中所有對象(Object)、實體(Entity)的“名字”到關(guān)聯(lián)的元數(shù)據(jù)之間的映射管理服務(wù)收津,例如 ServiceName -> Endpoints Info, Distributed Lock Name -> Lock Owner/Status Info, DNS Domain Name -> IP List, 服務(wù)發(fā)現(xiàn)和 DNS 就是名字服務(wù)的2大場景饿这。配置服務(wù) (Configuration Service)
在服務(wù)或者應(yīng)用運行過程中,提供動態(tài)配置或者元數(shù)據(jù)以及配置管理的服務(wù)提供者撞秋。
安裝Nacos
1. 預(yù)備環(huán)境準備
nacos是依賴Java環(huán)境運行的,如果使用源碼來編譯運行Nacos那么需要首先準備Apache Maven環(huán)境长捧。
64 bit OS,支持 Linux/Unix/Mac/Windows吻贿,推薦選用 Linux/Unix/Mac串结。
64 bit JDK1.8+;
Maven 3.2+;
2. 下載源碼或安裝包
可以選擇使用源碼或直接使用安裝包的方式獲取Nacos
從Github下載源碼的方式
git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
ls -al distribution/target/
// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin
下載編譯后的壓縮包方式
unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
cd nacos/bin
3.配置MySql服務(wù)器
Nacos可以通過兩種方式進行數(shù)據(jù)的持久化管理,1.JDK自帶的Derby DB內(nèi)存數(shù)據(jù)庫 2.使用MySql數(shù)據(jù)庫. 由于DerbyDB對于數(shù)據(jù)的展現(xiàn)不是很友好,所以我們選擇MySql數(shù)據(jù)庫。
初始化MySql數(shù)據(jù)庫.
下載解壓Nacos后可以在 /conf目錄下找到 nacos-mysql.sql 文件用于初始化MySql數(shù)據(jù)庫.
修改Nacos連接配置
選擇 /conf/application.properties配置文件.
找到 If user MySQL as datasource 修改如下配置信息
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=XXX
db.password=XXXXXXX
4. 啟動服務(wù)器
Linux/Unix/Mac
啟動命令(Standalone代表單機模式,非集群模式):
sh startup.sh -m standalone
如果您使用的是ubuntu系統(tǒng)肌割,或者運行腳本報錯提示[[符號找不到卧蜓,可嘗試如下運行
bash startup.sh -m standalone
Windows
啟動命令:
cmd startup.cmd
5. Web Console
Nacos的默認端口為8848,啟動完成后可以通過訪問 http://localhost:8848/nacos 進入web控制臺,默認帳號密碼為 nacos/nacos
6. 服務(wù)注冊發(fā)現(xiàn)管理
- 服務(wù)注冊
curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080' - 服務(wù)發(fā)現(xiàn)
curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName' - 發(fā)布配置
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld" - 獲取配置
curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"
7. 關(guān)閉服務(wù)器
Linux/Unix/Mac
sh shutdown.sh
Windows
cmd shutdown.cmd
或者雙擊shutdown.cmd運行文件把敞。