初心html
從今天開始研究nacos.git
爲何研究這個? 由於如今公司主流開始推薦使用nacos了.....雖然, 咱們尚未開始用....提早作好準備吧.github
nacos主要有兩大做用. 一個是註冊發現, 一個是配置管理spring
咱們如今註冊發現使用的是eureka, 配置管理使用的是spring cloud的配置中心. nacos一下包含了兩個方面. 從服務器成本的角度考慮, 好像能夠節省點服務器費用哈. 畢竟合二爲一了嘛docker
學習的時候, 會將nacos和eureka,以及spring cloud的配置中心對比學習. 爲何你們都推薦nacos?瀏覽器
不能由於別人說好, 咱們就說好. 咱們要真正知道它好在哪裏, 爲何好? 瞭解他的優點,才能更好地取其精華. 緩存
知道 爲何這麼作 比 怎麼作 更重要安全
初步擬了一個研究方案:服務器
瞭解什麼是nacos, 他的優缺點, 好處網絡
對比nacos和eureka, config
安裝配置nacos. 如今不少都是使用docker容器化. 能夠試試使用docker安裝nacos,而後其餘操做都在nacos上執行
官網地址: https://nacos.io/en-us/docs/what-is-nacos.html
github地址: https://github.com/alibaba/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的結構和組件:
2種交付方式
Nacos 支持標準 Docker 鏡像(TODO: 0.2版本開始支持)及 zip(tar.gz)壓縮包的構建物。
啓動模式
Nacos 支持將註冊中心(Service Registry)與配置中心(Config Center) 在一個進程合併部署或者將2者分離部署的兩種模式。
優勢:
1)開箱即用,適用於dubbo,spring cloud等
2)AP模型,數據最終一致性
3)註冊中心,配置中心二合一(二合一也不必定是優勢),提供控制檯管理
4)純國產,各類有中文文檔,久經雙十一考驗
缺點:
1)剛剛開源不久,社區熱度不夠,依然存在bug
優勢:
1)Spring Cloud 官方推薦
2)AP模型,數據最終一致性
3)開箱即用,具備控制檯管理
缺點:
1)客戶端註冊服務上報全部信息,節點多的狀況下,網絡,服務端壓力過大,且浪費內存
2)客戶端更新服務信息經過簡單的輪詢機制,當服務數量巨大時,服務器壓力過大。
3)集羣伸縮性不強,服務端集羣經過廣播式的複製,增長服務器壓力
4)Eureka2.0 閉源(Spring Cloud最新版本仍是使用的1.X版本的Eureka)
我的以爲, 最終不得不棄用eureka的緣由就是這最後一條, eureka2.0閉源了, 也就是說, 你要想繼續使用, 對不起, 請交費.........而後, nacos在國內也足夠優秀....so...nacos獲得了大力發展
docker我本地已經安裝好了.
docker pull nacos/nacos-server
這是下載最新版的nacos鏡像
docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server
參數解析:
看到以下界面, 成功啦!!
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內容
參考資料:
github: https://github.com/alibaba/nacos