1. nacos初識, 和eureka的比較, 在docker上安裝nacos

初心html

從今天開始研究nacos.git

爲何研究這個? 由於如今公司主流開始推薦使用nacos了.....雖然, 咱們尚未開始用....提早作好準備吧.github

nacos主要有兩大做用. 一個是註冊發現, 一個是配置管理spring

咱們如今註冊發現使用的是eureka, 配置管理使用的是spring cloud的配置中心. nacos一下包含了兩個方面. 從服務器成本的角度考慮, 好像能夠節省點服務器費用哈. 畢竟合二爲一了嘛docker

學習的時候, 會將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的功能
1. nacos初識, 和eureka的比較, 在docker上安裝nacos
上面這個圖是官網給出的. 大概看一下就行. 就是對上面內容的一個總結. nacos有哪些功能, 做用, 優點等.

下面這個圖是nacos的結構和組件:
1. nacos初識, 和eureka的比較, 在docker上安裝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

1. nacos初識, 和eureka的比較, 在docker上安裝nacos

第三步: 啓動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 端口映射
    1. nacos初識, 和eureka的比較, 在docker上安裝nacos

    第四步: 在瀏覽器訪問ip:8848/nacos,登陸密碼默認nacos/nacos

    看到以下界面, 成功啦!!
    1. nacos初識, 和eureka的比較, 在docker上安裝nacos

第五步: 檢測nacos是否能夠正常工做

1. 往配置中心發佈配置

nacos是一個服務, 他對外也提供了不少接口, 其中一個是添加配置的接口. 咱們模擬這個接口進行配置:

curl -X POST "http://localhost:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld"
看到返回結果是true. 而後刷新控制檯, 能夠看到以下
1. nacos初識, 和eureka的比較, 在docker上安裝nacos

2. 從配置中心獲取配置

curl -X GET "http://localhost:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"

這個命令就是獲取配置
1. nacos初識, 和eureka的比較, 在docker上安裝nacos

獲取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/
相關文章
相關標籤/搜索