阿里服務註冊/服務發現/配置中心Nacos選型評估

Nacos是以服務爲主要服務對象的中間件,Nacos支持所有主流的服務發現、配置和管理。

Nacos主要提供以下四大功能:

  1. 服務發現與服務健康檢查

    Nacos使服務更容易註冊自己並通過DNS或HTTP接口發現其他服務。Nacos還提供服務的實時健康檢查,以防止向不健康的主機或服務實例發送請求。

  2. 動態配置管理

    動態配置服務允許您在所有環境中以集中和動態的方式管理所有服務的配置。Nacos消除了在更新配置時重新部署應用程序和服務的需要,這使配置更改更加高效和靈活。

  3. 動態DNS服務

Nacos支持加權路由,使您可以更輕鬆地在數據中心的生產環境中實施中間層負載平衡,靈活的路由策略,流量控制和簡單的DNS解析服務。它可以幫助您輕鬆實現基於DNS的服務發現,並防止應用程序耦合到特定於供應商的服務發現API。

  1. 服務和元數據管理

Nacos提供易於使用的服務儀表板,可幫助您管理服務元數據,配置,kubernetes DNS,服務運行狀況和指標統計。

1.1 Nacos總體概況

image.png

1.2 Nacos架構

image.png

二、註冊中心與配置中心橫向對比

2.1 Nacos與eureka註冊中心對比

對比項目\註冊中心 Spring Cloud Nacos Spring Cloud Eureka
CAP模型 支持AP和CP模型 AP模型
客戶端更新服務信息 使用註冊+DNS-f+健康檢查模式。 DNS-F客戶端使用監聽模式push/pull拉取更新信息 客戶端定時輪詢服務端獲取其他服務ip信息並對比,相比之下服務端壓力較大、延遲較大
伸縮性 使用Raft選舉算法性能、可用性、容錯性均比較好,新加入節點無需與所有節點互相廣播同步信息 由於使用廣播同步信息,集羣超過1000臺機器後對eureka集羣壓力很大
健康檢查模式/方式 支持服務端/客戶端/關閉檢查模式,檢查方式有tcp、http、sql。支持自己構建健康檢查器 客戶端向服務端發送http心跳
負載均衡 支持 支持
手動上下線服務方式 通過控制檯頁面和API 通過調用API
跨中心同步 支持 不支持
k8s集成 支持 不支持
分組 Nacos可用根據業務和環境進行分組管理 不支持
權重 Nacos默認提供權重設置功能,調整承載流量壓力 不支持
廠商 阿里巴巴 Netflix

2.2服務配置中心對比

對比項目/配置中心 apollo nacos
開源時間 2016.5 2018.6
配置實時推送 支持(HTTP長輪詢1s內) 支持(HTTP長輪詢1s內)
版本管理 自動管理 自動管理
配置回滾 支持 支持
權限管理 支持 待支持
多集羣多環境 支持 支持
監聽查詢 支持 支持
多語言 Go,C++,Python,Java,.net,OpenAPI Python,Java,Nodejs,OpenAPI
分佈式高可用最小集羣數量 Config2+Admin3+Portal*2+Mysql=8 Nacos*3+MySql=4
配置格式校驗 支持 支持
通信協議 HTTP HTTP
數據一致性 數據庫模擬消息隊列,Apollo定時讀消息 HTTP異步通知
單機讀(tps) 9000 15000
單機寫(tps) 1100 1800

nacos具有Apollo大部分功能,最重要的是配置中心與註冊中心打通,可以省去我們在微服務治理方面 的一些投入(比如通過動態配置來啓停線程池等操作)。

2.3 初步選型結論

初步結論爲:使用Nacos代替Eureka和apollo,主要理由爲:
相比與Eureka:
(1)Nacos具備服務優雅上下線和流量管理(API+後臺管理頁面),而Eureka的後臺頁面僅供展示,需要使用api操作上下線且不具備流量管理功能。
(2)從部署來看,Nacos整合了註冊中心、配置中心功能,把原來兩套集羣整合成一套,簡化了部署維護
(3)從長遠來看,Eureka開源工作已停止,後續不再有更新和維護,而Nacos在以後的版本會支持SpringCLoud+Kubernetes的組合,填補 2 者的鴻溝,在兩套體系下可以採用同一套服務發現和配置管理的解決方案,這將大大的簡化使用和維護的成本。同時來說,Nacos 計劃實現 Service Mesh,是未來微服務的趨勢
(4)從伸縮性和擴展性來看Nacos支持跨註冊中心同步,而Eureka不支持,且在伸縮擴容方面,Nacos比Eureka更優(nacos支持大數量級的集羣)。
(5)Nacos具有分組隔離功能,一套Nacos集羣可以支撐多項目、多環境。

相比於apollo
(1) Nacos部署簡化,Nacos整合了註冊中心、配置中心功能,且部署相比apollo簡單,方便管理和監控。
(2) apollo容器化較困難,Nacos有官網的鏡像可以直接部署,總體來說,Nacos比apollo更符合KISS原則
(3)性能方面,Nacos讀寫tps比apollo稍強一些

結論:使用Nacos代替Eureka和apollo

三、Nacos其他特性

3.1 Nacos Sync的價值

  • NacosSync是一個支持多種註冊中心的同步組件,基於Spring boot開發框架,數據層採用Spring Data JPA,遵循了標準的JPA訪問規範,支持多種數據源存儲,默認使用Hibernate實現,更加方便的支持表的自動創建更新
  • 使用了高效的事件異步驅動模型, 支持多種自定義事件,使得同步任務處理的延時控制在3s,8C16G的單機能夠支持6K的同步任務
  • NacosSync除了單機部署,也提供了高可用的集羣部署模式,NacosSync是無狀態設計,將任務等狀態數據遷移到了數據庫,使得集羣擴展非常方便
  • 抽象出了Sync組件核心接口,通過註解對同步類型進行區分,使得開發者可以很容易的根據自己需求,去擴展不同註冊中心,目前已支持的同步類型:
    • Nacos數據同步到Nacos
    • Zookeeper數據同步到Nacos
    • Nacos數據同步到Zookeeper
    • Eureka數據同步到Nacos
    • Consul數據同步到Nacos

系統模塊架構

image.png


使用場景
多個網絡互通的Region之間服務共享,打破Region之間的服務調用限制

image.png

 

3.2 DNS - F 的技術價值

Nacos提供DNS-F功能
DNS-F落地的技術價值

  • 填補了內部微服務業務沒有全局動態調度能力的空白
  • 解決了服務端棉鈴挑戰:時延大、解析不準、故障牽引慢
  • 支持服務端多種調度需要
  • 加速外部域名解析
  • 服務故障牽引秒級生效
  • 提供專線流量牽引能力

     

    image.png

3.3 目前使用Nacos的公司

阿里巴巴、虎牙直播、中國工商銀行、愛奇藝、中國平安、平安科技、浙江農信、貝殼、豐巢、百世快遞、汽車之家等

 

發佈了81 篇原創文章 · 獲贊 9 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章