nacos基礎文章3篇
第一篇. nacos初識, 和eureka的比較, 在docker上安裝nacos
第二篇. nacos服務配置中心
第三篇. nacos服務發現
初心
從今天開始研究nacos.
為什么研究這個? 因為現在公司主流開始推薦使用nacos了.....雖然, 我們還沒有開始用....提前做好准備吧.
nacos主要有兩大作用. 一個是注冊發現, 一個是配置管理
我們現在注冊發現使用的是eureka, 配置管理使用的是spring cloud的配置中心. nacos一下包含了兩個方面. 從服務器成本的角度考慮, 好像可以節省點服務器費用哈. 畢竟合二為一了嘛
學習的時候, 會將nacos和eureka,以及spring cloud的配置中心對比學習. 為什么大家都推薦nacos?
不能因為別人說好, 我們就說好. 我們要真正知道它好在哪里, 為什么好? 了解他的優勢,才能更好地取其精華.
知道為什么這么做 比 怎么做 更重要
初步擬了一個研究方案:
1. 了解什么是nacos, 他的優缺點, 好處
2. 對比nacos和eureka, config
3. 安裝配置nacos. 現在很多都是使用docker容器化. 可以試試使用docker安裝nacos,然后其他操作都在nacos上執行
4. 根據官網文檔, 開始學習.
官網地址: https://nacos.io/en-us/docs/what-is-nacos.html
github地址: https://github.com/alibaba/nacos
今天先看前三點. 查資料開始......
一. nacos是什么?
分解來看, 框框里是nacos是做什么的. 下面進行解釋
nacos致力於注冊發現, 配置和管理微服務
兩個重點: 服務注冊發現, 服務配置, 服務管理三個方面
它提供了一組簡單有用的功能,使您能夠實現動態服務發現,服務配置,服務元數據和流量管理。
動態服務發現: 什么是動態. 之前跟同事討論過, 動態其中一個方面, 指的是熱的含義. 比如服務器注冊了, 不用重啟, 就能發現. 服務配置修改了, 不用重啟服務, 能夠自動識別配置修改.
那么服務元數據和流量管理: 這里應該是和負載均衡有關系了. 流量怎么分配, 根據元數據設置, 進行管理
Nacos使構建,交付和管理微服務平台變得更容易,更快捷
如何能夠是構建, 交付,管理 微服務平台變得更容易,更快捷呢? 想到了自動化部署那一套. 有一個界面, 點點按鈕, 就開始操作了. 不用一台服務器, 一台服務器的去處理.
以上是官網給出的介紹: 經過我的理解, 變成大白話. 哈哈哈
官網解釋: nacos是什么?
服務是Nacos的頭等公民
這有點向一個選詞造句. go里面說: 函數是一等公民. channel是一等公民. 這里說nacos是一等公民. 什么是一等公民呢? 就像客戶就是上帝一樣, 全部圍繞客戶轉. nacos就是全部圍繞着服務轉
Nacos支持發現,配置和管理幾乎所有類型的服務
Kubernetes服務
gRPC和Dubbo RPC服務
Spring Cloud RESTful服務
不多說, 我們現在使用的是spring cloud RESTful服務
Nacos的主要特點: 服務發現和服務運行狀況檢查 Nacos支持基於DNS和基於RPC(Dubbo / gRPC)的服務發現。服務提供商向本機,OpenAPI或專用代理注冊服務后,使用者可以使用DNS或HTTP查找服務。 Nacos提供實時運行狀況檢查,以防止服務將請求發送到不正常的主機或服務實例。Nacos支持傳輸層(PING或TCP)健康檢查和應用程序層(例如HTTP,Redis,MySQL和用戶定義的協議)健康檢查。
對於復雜的雲和網絡拓撲(例如VPC,邊緣服務等)的運行狀況檢查,Nacos提供代理模式和服務器模式運行狀況檢查。Nacos還提供統一的服務運行狀況儀表板,以幫助您管理服務的可用性和流量。 動態配置管理 動態配置服務使您可以在所有環境中以集中,外部化和動態的方式管理所有應用程序和服務的配置。 動態配置消除了在更新配置時重新部署應用程序和服務的需要。 配置的集中管理使您更方便地實現無狀態服務和按需彈性擴展服務實例。 Nacos提供了易於使用的UI TODO,可幫助您管理所有應用程序或服務的配置。它提供了一些現成的功能,包括配置版本跟蹤,canary / beta版本,
配置回滾和客戶端配置更新狀態跟蹤,以確保安全並控制配置更改的風險。 動態DNS服務 支持加權路由的動態DNS服務使您可以更輕松地在數據中心內的生產環境中實施中間層負載平衡,靈活的路由策略,流量控制和簡單的DNS解析服務。動態DNS服務使您更容易實現基於DNS的服務發現。 Nacos提供了一些簡單的DNS API TODO,供您管理DNS域名和IP。 服務治理和元數據管理 Nacos允許您從微服務平台構建器的角度管理所有服務和元數據。這包括管理服務描述,生命周期,服務靜態依賴關系分析,服務運行狀況,服務流量管理,路由和安全規則,服務SLA和一線指標。
下圖可以詳細理解nacos的功能
上面這個圖是官網給出的. 大概看一下就行. 就是對上面內容的一個總結. nacos有哪些功能, 作用, 優勢等.
下面這個圖是nacos的結構和組件:
- 服務管理:實現服務CRUD,域名CRUD,服務健康狀態檢查,服務權重管理等功能
- 配置管理:實現配置管CRUD,版本管理,灰度管理,監聽管理,推送軌跡,聚合數據等功能
- 元數據管理:提供元數據CURD 和打標能力
- 插件機制:實現三個模塊可分可合能力,實現擴展點SPI機制
- 事件機制:實現異步化事件通知,sdk數據變化異步通知等邏輯
- 日志模塊:管理日志分類,日志級別,日志可移植性(尤其避免沖突),日志格式,異常碼+幫助文檔
- 回調機制:sdk通知數據,通過統一的模式回調用戶處理。接口和數據結構需要具備可擴展性
- 尋址模式:解決ip,域名,nameserver、廣播等多種尋址模式,需要可擴展
- 推送通道:解決server與存儲、server間、server與sdk間推送性能問題
- 容量管理:管理每個租戶,分組下的容量,防止存儲被寫爆,影響服務可用性
- 流量管理:按照租戶,分組等多個維度對請求頻率,長鏈接個數,報文大小,請求流控進行控制
- 緩存機制:容災目錄,本地緩存,server緩存機制。容災目錄使用需要工具
- 啟動模式:按照單機模式,配置模式,服務模式,dns模式,或者all模式,啟動不同的程序+UI
- 一致性協議:解決不同數據,不同一致性要求情況下,不同一致性機制
- 存儲模塊:解決數據持久化、非持久化存儲,解決數據分片問題
- Nameserver:解決namespace到clusterid的路由問題,解決用戶環境與nacos物理環境映射問題
- CMDB:解決元數據存儲,與三方cmdb系統對接問題,解決應用,人,資源關系
- Metrics:暴露標准metrics數據,方便與三方監控系統打通
- Trace:暴露標准trace,方便與SLA系統打通,日志白平化,推送軌跡等能力,並且可以和計量計費系統打通
- 接入管理:相當於阿里雲開通服務,分配身份、容量、權限過程
- 用戶管理:解決用戶管理,登錄,sso等問題
- 權限管理:解決身份識別,訪問控制,角色管理等問題
- 審計系統:擴展接口方便與不同公司審計系統打通
- 通知系統:核心數據變更,或者操作,方便通過SMS系統打通,通知到對應人數據變更
- OpenAPI:暴露標准Rest風格HTTP接口,簡單易用,方便多語言集成
- Console:易用控制台,做服務管理、配置管理等操作
- SDK:多語言sdk
- Agent:dns-f類似模式,或者與mesh等方案集成
- CLI:命令行對產品進行輕量化管理,像git一樣好用
這就是nacos的功能了, 在后面研究的時候, 可以按照這個圖來具體研究.
構建、部署及啟動模式:
-
2種交付方式
Nacos 支持標准 Docker 鏡像(TODO: 0.2版本開始支持)及 zip(tar.gz)壓縮包的構建物。
-
啟動模式
Nacos 支持將注冊中心(Service Registry)與配置中心(Config Center) 在一個進程合並部署或者將2者分離部署的兩種模式。
-
免費的公有雲服務模式
除了您自己部署和啟動 Nacos 服務之外,在雲計算時代,Nacos 也支持公有雲模式,在阿里雲公有雲的商業產品(如ACM, EDAS) 中會提供 Nacos 的免費的公有雲服務。也可以使用阿里雲公有雲提供商提供 Nacos 的公有雲服務。
二. nacos 和 eureka 優缺點對比
Spring Cloud Nacos
優點:
1)開箱即用,適用於dubbo,spring cloud等
2)AP模型,數據最終一致性
3)注冊中心,配置中心二合一(二合一也不一定是優點),提供控制台管理
4)純國產,各種有中文文檔,久經雙十一考驗
缺點:
1)剛剛開源不久,社區熱度不夠,依然存在bug
Spring Cloud Eureka:
優點:
1)Spring Cloud 官方推薦
2)AP模型,數據最終一致性
3)開箱即用,具有控制台管理
缺點:
1)客戶端注冊服務上報所有信息,節點多的情況下,網絡,服務端壓力過大,且浪費內存
2)客戶端更新服務信息通過簡單的輪詢機制,當服務數量巨大時,服務器壓力過大。
3)集群伸縮性不強,服務端集群通過廣播式的復制,增加服務器壓力
4)Eureka2.0 閉源(Spring Cloud最新版本還是使用的1.X版本的Eureka)
個人覺得, 最終不得不棄用eureka的原因就是這最后一條, eureka2.0閉源了, 也就是說, 你要想繼續使用, 對不起, 請交費.........然后, nacos在國內也足夠優秀....so...nacos得到了大力發展
所以: 要想在某個時刻獲得機會....那么, 請時刻准備好, 足夠優秀
三. nacos安裝在docer上
docker我本地已經安裝好了.
第一步: 下載鏡像
docker pull nacos/nacos-server
這是下載最新版的nacos鏡像
第二步:查看已經下載的鏡像: docker images
第三步: 啟動nacos
docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server
參數解析:
- run 啟動運行容器
- --env 配置環境 MODE=standalong 單節點
- --name nacos 鏡像名稱為nacos
- -d 守護式容器
- -p 8848:8848 端口映射
第四步: 在瀏覽器訪問ip:8848/nacos,登錄密碼默認nacos/nacos
看到如下界面, 成功啦!!
第五步: 檢測nacos是否可以正常工作
1. 往配置中心發布配置
nacos是一個服務, 他對外也提供了很多接口, 其中一個是添加配置的接口. 我們模擬這個接口進行配置:
curl -X POST "http://localhost:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld"
看到返回結果是true. 然后刷新控制台, 可以看到如下
2. 從配置中心獲取配置
curl -X GET "http://localhost:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"
這個命令就是獲取配置
獲取helloworld內容
參考資料:
1. nacos官網: https://nacos.io/en-us/docs/what-is-nacos.html
2. github: https://github.com/alibaba/nacos
3. nacos和Eureka的區別: https://www.pianshen.com/article/8646198661/
nacos基礎文章3篇
第一篇. nacos初識, 和eureka的比較, 在docker上安裝nacos
第二篇. nacos服務配置中心
第三篇. nacos服務發現