與你同行,抬頭便是星空。
本文整理自Nacos Committer 張龍的現場分享,阿里巴巴中間件受權發(fā)布。
隨著 Nacos 1.0.0 穩(wěn)定版的發(fā)布,越來越多的企業(yè)開始在測試/預演/生產環(huán)境中逐步部署 Nacos。目前,除了部分企業(yè)已處于轉型分布式架構的過程中,會考慮直接使用 Nacos 上生產,但仍有不少企業(yè)會考慮一些比較現實的問題:
這里,我將通過對 Nacos Sync 的介紹,來回答這三個問題。
Nacos Sync 是一個支持多種注冊中心的同步組件,基于 SpringBoot 開發(fā)框架,數據層采用 Spring Data JPA,遵循了標準的 JPA 訪問規(guī)范,支持多種數據源存儲,默認使用 Hibernate 實現,更加方便的支持表的自動創(chuàng)建更新。
下圖是 Nacos Sync 系統(tǒng)的概念圖,Nacos Sync 通過從各個注冊中心拉取注冊的服務實例數據同步到 Nacos,左右兩邊是不同的注冊中心,綠色代表目前是可以進行雙向同步的,藍色代表暫時只能進行單向同步。
組件特性
Nacos Sync 使用了高效的事件異步驅動模型,支持多種自定義事件,使得同步任務處理的延時控制在3s,8C16G的單機能夠支持6K的同步任務。
除了單機部署,Nacos Sync 也提供了高可用的集群部署模式,作為無狀態(tài)設計,支持將任務等狀態(tài)數據遷移到了數據庫,使得集群擴展非常方便。
下圖是 Nacos Sync 目前的系統(tǒng)架構圖,畫的比較簡單,只是把一些比較重要的模塊做了描述。
Web Console: 提供給用戶進行注冊中心和同步任務進行相關界面操作
Processor Frame: 注冊中心和任務的業(yè)務處理邏輯
Timer Manager: 定時輪詢數據庫獲取同步任務進行處理
Event Frame: 異步事件來進行同步任務的同步以及刪除
Extension: 對接各種注冊中心客戶端的擴展實現
我們來看一下 Nacos Sync 一次完整的調用流程:
通過 Web 控制臺添加相關注冊中心,一般都必須配置兩個注冊中心,一個源注冊中心,另外一個是目標注冊中心,注冊中心相關數據會寫入到數據庫;
下面的表格介紹了目前支持的幾種同步類型,并且說明了在 Dubbo 和 Spring Cloud 下是否支持同步,表格中列舉的幾種注冊中心,無論單向還是雙向同步都是在和 Nacos 進行交互。
使用場景和 Demo
這里提供兩個 Demo ,用來分別演示上面的兩個經典使用場景,詳細的操作步驟可以通過下方鏈接,進行訪問。
單向同步場景,在 Spring Cloud 生態(tài)中,Eureka 同步到 Nacos 示例
https://
os-sync-example/tree/master/one-way-sync
https://
os-sync-example/tree/master/two-way-sync
Nacos Sync 目前已經發(fā)布3個小版本,通過下圖,我們可以看到每個版本已經做了的一些工作,以及下個版本即將做的一些事情。
0.4.0 規(guī)劃介紹
同步數據一致性校驗,0.4.0版本前,同步任務執(zhí)行之后,雙端數據一致性未進行檢查的;
注冊中心健康檢查;
同步數據實時狀態(tài)透出 ,0.4.0版本前,控制臺的任務狀態(tài)是數據庫的任務執(zhí)行狀態(tài),用戶沒辦法知道當前的數據狀態(tài);
任務批量刪除;
多維度增加任務同步,優(yōu)化只支持服務粒度,用戶只能一個一個添加的用戶體驗;
原文鏈接
本文為云棲社區(qū)原創(chuàng)內容,未經允許不得轉載。