溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Nacos Committer 張龍:Nacos Sync 的設(shè)計(jì)原理和規(guī)劃

發(fā)布時(shí)間:2020-08-14 09:22:46 來源:ITPUB博客 閱讀:190 作者:火鍋小仙女 欄目:大數(shù)據(jù)

Nacos Committer 張龍:Nacos Sync 的設(shè)計(jì)原理和規(guī)劃

與你同行,抬頭便是星空。

本文整理自Nacos Committer 張龍的現(xiàn)場分享,阿里巴巴中間件受權(quán)發(fā)布。

隨著 Nacos 1.0.0 穩(wěn)定版的發(fā)布,越來越多的企業(yè)開始在測試/預(yù)演/生產(chǎn)環(huán)境中逐步部署 Nacos。目前,除了部分企業(yè)已處于轉(zhuǎn)型分布式架構(gòu)的過程中,會(huì)考慮直接使用 Nacos 上生產(chǎn),但仍有不少企業(yè)會(huì)考慮一些比較現(xiàn)實(shí)的問題:

  • 存量用戶如何遷移注冊中心到 Nacos?
  • 多區(qū)域注冊中心之間如何同步?
  • 已有注冊中心與 Nacos 如何并存使用?

這里,我將通過對 Nacos Sync 的介紹,來回答這三個(gè)問題。

Nacos Sync 是什么?

Nacos Sync 是一個(gè)支持多種注冊中心的同步組件,基于 SpringBoot 開發(fā)框架,數(shù)據(jù)層采用 Spring Data JPA,遵循了標(biāo)準(zhǔn)的 JPA 訪問規(guī)范,支持多種數(shù)據(jù)源存儲(chǔ),默認(rèn)使用 Hibernate 實(shí)現(xiàn),更加方便的支持表的自動(dòng)創(chuàng)建更新。

下圖是 Nacos Sync 系統(tǒng)的概念圖,Nacos Sync 通過從各個(gè)注冊中心拉取注冊的服務(wù)實(shí)例數(shù)據(jù)同步到 Nacos,左右兩邊是不同的注冊中心,綠色代表目前是可以進(jìn)行雙向同步的,藍(lán)色代表暫時(shí)只能進(jìn)行單向同步。


Nacos Committer 張龍:Nacos Sync 的設(shè)計(jì)原理和規(guī)劃

組件特性

Nacos Sync 使用了高效的事件異步驅(qū)動(dòng)模型,支持多種自定義事件,使得同步任務(wù)處理的延時(shí)控制在3s,8C16G的單機(jī)能夠支持6K的同步任務(wù)。

除了單機(jī)部署,Nacos Sync 也提供了高可用的集群部署模式,作為無狀態(tài)設(shè)計(jì),支持將任務(wù)等狀態(tài)數(shù)據(jù)遷移到了數(shù)據(jù)庫,使得集群擴(kuò)展非常方便。

系統(tǒng)模塊架構(gòu)

下圖是 Nacos Sync 目前的系統(tǒng)架構(gòu)圖,畫的比較簡單,只是把一些比較重要的模塊做了描述。


Nacos Committer 張龍:Nacos Sync 的設(shè)計(jì)原理和規(guī)劃

Web Console:  提供給用戶進(jìn)行注冊中心和同步任務(wù)進(jìn)行相關(guān)界面操作

Processor Frame:  注冊中心和任務(wù)的業(yè)務(wù)處理邏輯

Timer Manager:  定時(shí)輪詢數(shù)據(jù)庫獲取同步任務(wù)進(jìn)行處理

Event Frame:  異步事件來進(jìn)行同步任務(wù)的同步以及刪除

Extension:  對接各種注冊中心客戶端的擴(kuò)展實(shí)現(xiàn)

整體調(diào)用流程

我們來看一下 Nacos Sync 一次完整的調(diào)用流程:


Nacos Committer 張龍:Nacos Sync 的設(shè)計(jì)原理和規(guī)劃

通過 Web 控制臺(tái)添加相關(guān)注冊中心,一般都必須配置兩個(gè)注冊中心,一個(gè)源注冊中心,另外一個(gè)是目標(biāo)注冊中心,注冊中心相關(guān)數(shù)據(jù)會(huì)寫入到數(shù)據(jù)庫;

  1. 添加完注冊中心以后,增加一個(gè)同步任務(wù),添加需要同步的服務(wù)(對于Dubbo來說就是RPC接口,對于Spring Cloud就是應(yīng)用名);
  2. Nacos Sync 會(huì)每隔 3s 從數(shù)據(jù)庫撈取同步任務(wù),并通過異步事件的方式進(jìn)行發(fā)布;
  3. 同步服務(wù)管理監(jiān)聽到定時(shí)任務(wù)發(fā)布的的事件,目前有同步/刪除這兩種事件;
  4. 同步服務(wù)管理根據(jù)不同的策略選擇相關(guān)的同步服務(wù)進(jìn)行真正同步邏輯處理;

目前已經(jīng)支持同步類型

下面的表格介紹了目前支持的幾種同步類型,并且說明了在 Dubbo 和 Spring Cloud 下是否支持同步,表格中列舉的幾種注冊中心,無論單向還是雙向同步都是在和 Nacos 進(jìn)行交互。


Nacos Committer 張龍:Nacos Sync 的設(shè)計(jì)原理和規(guī)劃


使用場景和 Demo

  • 多個(gè)網(wǎng)絡(luò)互通的 Region 之間進(jìn)行服務(wù)共享,打破 Region 之間的服務(wù)調(diào)用限制;


Nacos Committer 張龍:Nacos Sync 的設(shè)計(jì)原理和規(guī)劃


  • 雙向同步功能,支持 Dubbo+ZooKeeper 服務(wù)平滑遷移到 Dubbo+Nacos ;


Nacos Committer 張龍:Nacos Sync 的設(shè)計(jì)原理和規(guī)劃

這里提供兩個(gè) Demo ,用來分別演示上面的兩個(gè)經(jīng)典使用場景,詳細(xì)的操作步驟可以通過下方鏈接,進(jìn)行訪問。

單向同步場景,在 Spring Cloud 生態(tài)中,Eureka 同步到 Nacos 示例  
https:// os-sync-example/tree/master/one-way-sync https:// os-sync-example/tree/master/two-way-sync

版本演進(jìn)

Nacos Sync 目前已經(jīng)發(fā)布3個(gè)小版本,通過下圖,我們可以看到每個(gè)版本已經(jīng)做了的一些工作,以及下個(gè)版本即將做的一些事情。


Nacos Committer 張龍:Nacos Sync 的設(shè)計(jì)原理和規(guī)劃


0.4.0 規(guī)劃介紹

  • 功能健壯性

同步數(shù)據(jù)一致性校驗(yàn),0.4.0版本前,同步任務(wù)執(zhí)行之后,雙端數(shù)據(jù)一致性未進(jìn)行檢查的;
注冊中心健康檢查;

  • 用戶體驗(yàn)

同步數(shù)據(jù)實(shí)時(shí)狀態(tài)透出 ,0.4.0版本前,控制臺(tái)的任務(wù)狀態(tài)是數(shù)據(jù)庫的任務(wù)執(zhí)行狀態(tài),用戶沒辦法知道當(dāng)前的數(shù)據(jù)狀態(tài);
任務(wù)批量刪除;
多維度增加任務(wù)同步,優(yōu)化只支持服務(wù)粒度,用戶只能一個(gè)一個(gè)添加的用戶體驗(yàn);

  • 功能完善
    支持 Eureka/Consul 和 Nacos 的雙向同步;


原文鏈接

本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI