什麼是Nacos?
Nacos 是構建以「服務」爲中心的現代應用架構 (例如微服務範式、雲原生範式) 的服務基礎設施。html
Nacos能夠作什麼?
一、動態配置服務:支持以中心化、外部化和動態化的方式管理全部環境的配置。動態配置消除了配置變動時從新部署應用和服務的須要。配置中心化管理讓實現無狀態服務更簡單,也讓按需彈性擴展服務更容易。git
二、服務發現及管理:支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服務發現,同時提供實時健康檢查,以防止將請求發往不健康的主機或服務實例。藉助Nacos,能夠更容易地爲服務實現斷路器。github
三、動態DNS服務:經過支持權重路由,輕鬆實現中間層負載均衡、更靈活的路由策略、流量控制及簡單數據中心內網的簡單DNS解析服務。更加容易地實現以DNS協議爲基礎的服務發現,以消除耦合到廠商私有服務發現API上的風險。數據庫
Nacos的特性一覽
一、易於使用瀏覽器
動態配置管理、服務發現和動態的一站式解決方案 20多種開箱即用的以服務爲中心的架構特性 基本符合生產要求的輕量級易用控制檯安全
二、更適應雲架構bash
無縫支持Kubernetes和Spring Cloud 在主流公共雲上更容易部署和運行(例如阿里雲和AWS) 多租戶和多環境支持網絡
三、生產等級架構
脫胎於歷經阿里巴巴10年生產驗證的內部產品 支持具備數百萬服務的大規模場景 具有企業級SLA的開源產品負載均衡
四、豐富的應用場景
支持限流、大促銷預案和異地多活 直接支持或稍做擴展便可支持大量有用的互聯網應用場景 流量調度和服務治理
Nacos架構
Nacos概念
- 地域(Region):物理的數據中心,資源建立成功後不能更換
- 可用區(Available Zone):同一地域內,電力和網絡互相獨立的物理區域。同一可用區內,實例的網絡延遲較低。
- 接入點(Endpoint):地域的某個服務的入口域名
- 命名空間(Namespace):用於進行租戶粒度隔離。不一樣的命名空間下,能夠存在相同的Group或Data ID的配置。
- 配置(Configuration):從代碼中分離出來獨立管理的變量、須要變動的參數等
- 配置管理(Configuration Management):系統配置的編輯、存儲、分發、變動管理、歷史版本管理、變動審計等全部與配置相關的活動。
- 配置項(Configuration Item):一個具體的可配置的參數與其值域,一般以 param-key=param-value 的形式存在。
- 配置集(Configuration Set):一組相關或者不相關的配置項的集合。在系統中,一個配置文件一般就是一個配置集,包含了系統各個方面的配置。
- 配置集ID(Data ID):某個配置集的ID,是組織劃分配置的維度之一,一般用於組織劃分系統的配置集。一個系統或者應用能夠包含多個配置集,每一個配置集均可以被一個有意義的名稱標識,一般採用類 Java包的命名規則保證全局惟一性(此命名規則非強制)。
- 配置分組(Group):一組配置集,是組織配置的維度之一,經過一個有意義的字符串對配置集進行分組,從而區分 Data ID 相同的配置集。建立一個配置時,若是未填寫配置分組的名稱,則配置分組的名稱默認採用DEFAULT_GROUP。
- 配置快照(Configuration Snapshot):Nacos 的客戶端 SDK 會在本地生成配置的快照。當客戶端沒法鏈接到 Nacos Server 時,可使用配置快照顯示系統的總體容災能力。
- 服務(Service):經過預約義接口網絡訪問的提供給客戶端的軟件功能。
- 服務名(Service Name):服務提供的標識,經過該標識能夠惟一肯定其指代的服務。
- 服務註冊中心(Service Registry):存儲服務實例和服務負載均衡策略的數據庫。
- 服務元數據(Service Metadata):服務元數據是指包括服務端點(endpoints)、服務標籤、服務版本號、服務實例權重、路由規則、安全策略等描述服務的數據
- 服務提供方(Service Provider):是指提供可複用和可調用服務的應用方
- 服務消費方(Service Consumer):是指會發起對某個服務調用的應用方
- 服務發現(Service Discovery):在計算機網絡上,對服務下的實例的地址和元數據進行探測,並以預先定義的接口提供給客戶端進行查詢。
- 服務分組(Service Group):不一樣的服務能夠歸類到同一分組。
- 名字服務(Naming Service):提供分佈式系統中全部對象(Object)、實體(Entity)的「名字」到關聯的元數據之間的映射管理服務
- 配置服務(Configuration Service):在服務或者應用運行過程當中,提供動態配置或者元數據以及配置管理的服務提供者。
- 元數據(Metadata):Nacos數據(如配置和服務)描述信息,如服務版本、權重、容災策略、負載均衡策略、鑑權配置、各類自定義標籤 (label),從做用範圍來看,分爲服務級別的元信息、集羣的元信息及實例的元信息。
- 應用(Application):用於標識服務提供方的服務的屬性。
- 虛擬集羣(Virtual Cluster):同一個服務下的全部服務實例組成一個默認集羣,集羣能夠被進一步按需劃分,劃分的單位能夠是虛擬集羣。
- 實例(Instance):提供一個或多個服務的具備可訪問網絡地址(IP:Port)的進程。
- 權重(Weight):實例級別的配置,權重爲浮點數,權重越大,分配給該實例的流量越大。
- 健康檢查(Health Check):以指定方式檢查服務下掛載的實例的健康度,從而確認該實例是否可以提供服務。根據檢查結果,實例會被判斷是否健康,對服務發起解析請求時,不健康的實例不會返回給客戶端。
- 健康保護閾值(Protect Threshold):爲防止因過多實例不健康致使流量所有流向健康的實例,繼而形成流量壓力把健康的實例壓垮並造成雪崩效應,應將健康保護閾值定義未一個0~1之間的浮點數,當域名健康實例佔總服務實例的比例小於該值時,不管實例是否健康,都會將這個實例返回給客戶端,這樣作雖然損失了一部分流量,可是保證了集羣的剩餘健康實例可以正常工做。
以上內容整理源自:Nacos官網
梳理好Nacos
的架構及概念,接下來準備Nacos的環境,Nacos的環境安裝很是簡單,首先從 GitHub 上 checkout 源碼,編譯獲取安裝包,命令以下:
mvn -Prelease-nacos clean install -U
複製代碼
編譯完成後
由於我使用的是Windows,因此取target下的nacos-server-0.8.0.zip
包(固然也能夠從Github上直接下載安裝包),將其解壓到任意目錄下
注意:所解壓目錄的文件路徑不能包含空格,例如:D:/Program Files/Nacos,不然在啓動Nacos Server時,會提示錯誤:找不到或沒法加載主類 Files/Nacos/bin/Files/Nacos/plugins/cmdb
解壓後,進入bin目錄,雙擊startup.cmd
,此時,Nacos Server就開始啓動了
在啓動界面中,能夠看到Nacos的版本、運行模式、端口號、進程號、Console等信息,其中Console:http://192.168.1.102:8848/nacos/index.html
的地址就是Nacos的控制檯,能夠直接在瀏覽器訪問:
Nacos控制檯的默認帳號密碼爲:nacos/nacos
登陸後能夠看到以下界面,在控制檯能夠進行配置和服務的管理
怎麼樣,是否是感受很簡單?
好了,Nacos就先介紹到這裏,下一期將以一個完整的案例來介紹Nacos的用法和特性。
參考資料