Nacos Committer 張龍:Nacos Sync 的設計原理和規劃
與你同行,抬頭便是星空。
本文整理自Nacos Committer 張龍的現場分享,阿里巴巴中介軟體受權釋出。
隨著 Nacos 1.0.0 穩定版的釋出,越來越多的企業開始在測試/預演/生產環境中逐步部署 Nacos。目前,除了部分企業已處於轉型分散式架構的過程中,會考慮直接使用 Nacos 上生產,但仍有不少企業會考慮一些比較現實的問題:
- 存量使用者如何遷移註冊中心到 Nacos?
- 多區域註冊中心之間如何同步?
- 已有註冊中心與 Nacos 如何並存使用?
這裡,我將透過對 Nacos Sync 的介紹,來回答這三個問題。
Nacos Sync 是什麼?
Nacos Sync 是一個支援多種註冊中心的同步元件,基於 SpringBoot 開發框架,資料層採用 Spring Data JPA,遵循了標準的 JPA 訪問規範,支援多種資料來源儲存,預設使用 Hibernate 實現,更加方便的支援表的自動建立更新。
下圖是 Nacos Sync 系統的概念圖,Nacos Sync 透過從各個註冊中心拉取註冊的服務例項資料同步到 Nacos,左右兩邊是不同的註冊中心,綠色代表目前是可以進行雙向同步的,藍色代表暫時只能進行單向同步。
元件特性
Nacos Sync 使用了高效的事件非同步驅動模型,支援多種自定義事件,使得同步任務處理的延時控制在3s,8C16G的單機能夠支援6K的同步任務。
除了單機部署,Nacos Sync 也提供了高可用的叢集部署模式,作為無狀態設計,支援將任務等狀態資料遷移到了資料庫,使得叢集擴充套件非常方便。
系統模組架構
下圖是 Nacos Sync 目前的系統架構圖,畫的比較簡單,只是把一些比較重要的模組做了描述。
Web Console: 提供給使用者進行註冊中心和同步任務進行相關介面操作
Processor Frame: 註冊中心和任務的業務處理邏輯
Timer Manager: 定時輪詢資料庫獲取同步任務進行處理
Event Frame: 非同步事件來進行同步任務的同步以及刪除
Extension: 對接各種註冊中心客戶端的擴充套件實現
整體呼叫流程
我們來看一下 Nacos Sync 一次完整的呼叫流程:
透過 Web 控制檯新增相關注冊中心,一般都必須配置兩個註冊中心,一個源註冊中心,另外一個是目標註冊中心,註冊中心相關資料會寫入到資料庫;
- 新增完註冊中心以後,增加一個同步任務,新增需要同步的服務(對於Dubbo來說就是RPC介面,對於Spring Cloud就是應用名);
- Nacos Sync 會每隔 3s 從資料庫撈取同步任務,並透過非同步事件的方式進行釋出;
- 同步服務管理監聽到定時任務釋出的的事件,目前有同步/刪除這兩種事件;
- 同步服務管理根據不同的策略選擇相關的同步服務進行真正同步邏輯處理;
目前已經支援同步型別
下面的表格介紹了目前支援的幾種同步型別,並且說明了在 Dubbo 和 Spring Cloud 下是否支援同步,表格中列舉的幾種註冊中心,無論單向還是雙向同步都是在和 Nacos 進行互動。
使用場景和 Demo
- 多個網路互通的 Region 之間進行服務共享,打破 Region 之間的服務呼叫限制;
- 雙向同步功能,支援 Dubbo+ZooKeeper 服務平滑遷移到 Dubbo+Nacos ;
這裡提供兩個 Demo ,用來分別演示上面的兩個經典使用場景,詳細的操作步驟可以透過下方連結,進行訪問。
單向同步場景,在 Spring Cloud 生態中,Eureka 同步到 Nacos 示例
https://
github.com/paderlol/nac
os-sync-example/tree/master/one-way-sync
雙向同步場景,在 Dubbo 生態中 ZooKeeper 與 Nacos 互相同步示例
https://
github.com/paderlol/nac
os-sync-example/tree/master/two-way-sync
版本演進
Nacos Sync 目前已經發布3個小版本,透過下圖,我們可以看到每個版本已經做了的一些工作,以及下個版本即將做的一些事情。
0.4.0 規劃介紹
- 功能健壯性
同步資料一致性校驗,0.4.0版本前,同步任務執行之後,雙端資料一致性未進行檢查的;
註冊中心健康檢查;
- 使用者體驗
同步資料實時狀態透出 ,0.4.0版本前,控制檯的任務狀態是資料庫的任務執行狀態,使用者沒辦法知道當前的資料狀態;
任務批次刪除;
多維度增加任務同步,最佳化只支援服務粒度,使用者只能一個一個新增的使用者體驗;
-
功能完善
支援 Eureka/Consul 和 Nacos 的雙向同步;
本文為雲棲社群原創內容,未經允許不得轉載。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69922229/viewspace-2644195/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Nacos配置中心原理
- Nacos系列:Nacos的Java SDK使用Java
- nacos 服務註冊原理
- Nacos系列:Nacos的三種部署模式模式
- 初探Nacos(三)-- SpringBoot下整合Dubbo和NacosSpring Boot
- 【On Nacos】SpringCloud 方式使用 NacosSpringGCCloud
- nacos
- 【On Nacos】SpringBoot 方式使用 NacosSpring Boot
- 我們總結了 3 大使用建議,並首次公開 Nacos 3.0 規劃圖 | Nacos 開源 4 週年
- 使用nacos原始碼部署nacos服務原始碼
- Nacos服務註冊與發現的原理
- Nacos - HostReactor的建立React
- Nacos服務註冊與發現原理
- Sentinel Dashboard中修改規則同步到Nacos
- 實戰:Nacos配置中心的Pull原理,附原始碼原始碼
- Nacos(一)原始碼分析Nacos註冊示例流程原始碼
- nacos原理三-註冊中心原理&原始碼啟動.md原始碼
- nacos基本架構和安裝架構
- Nacos 筆記筆記
- Dubbo使用nacos作為註冊中心原理剖析
- 阿里巴巴 Nacos 分散式配置中心原理阿里分散式
- Nacos 服務註冊與發現原理分析
- Nacos配置中心叢集原理及原始碼分析原始碼
- nacos版本也是2.0.0 啟動報[NACOS HTTP-POST]HTTP
- 如何平穩地從nacos遷移到r-nacos?
- IP地址規劃和設計方法
- 圖解Nacos,註冊中心演變 + Nacos核心功能圖解
- springcloud/springboot整合NACOS 做註冊和配置中心以及nacos原始碼分析GCCloudSpring Boot原始碼
- nacos、ribbon和feign的簡明教程
- 初探Nacos(二)-- SpringCloud使用Nacos的服務註冊與發現SpringGCCloud
- Docker安裝NacosDocker
- nacos 叢集搭建
- Docker 安裝 NacosDocker
- Nacos極簡教程
- Docker快速部署NacosDocker
- SpringCloud-NacosSpringGCCloud
- nacos叢集部署
- 初探Nacos(四)-- SpringBoot下使用Nacos作為配置中心Spring Boot