Tapdat信無雙注冊地址 數據庫實時同步的技術要點


Tapdata 安信6信無雙注冊地址,是由深圳鈦鉑數據有限公司研發的一款實時數據處理及服務的平台產品

image.png

Tapdata 專注於實時數據的處理技術,在數據庫遷移和同步方面,Tapdata 的表現非常優秀,實時、多元、異構,尤其在關系數據庫到非關系數據庫之間的雙向同步方面,無論是從操作上,還是效率上,都體現了業界領先的水平。

本文重點闡述 Tapdata 在數據庫實時同步方面的技術要點。

 

 

 

基於數據庫日志的實時遷移或同步

在數據庫同步場景下,Tapdata 支持批量及增量的數據遷移及同步。Tapdata 主打的是實時場景,所以在數據庫增量同步上是一個關鍵能力。目前 Tapdata 支持的數據源,基本上都支持增量同步。大部分場景下 Tapdata 通過解析數據庫日志的方式來獲得源端數據庫的增刪改操作,然后將這些操作轉化為標准的數據庫事件,推送到內部處理隊列。

數據同步流程 那么,Tapdata 是怎么樣來做數據同步的呢?

第一層的數據同步是基於CDC機制,也就是說它並不是用一個 Select 語句去定期的去掃最近有什么樣的數據,或者是全量把它拿過來,而是基於數據庫的事務日志,比如說 Oracle 的話就是 Redo log,SQL Server 的話就是它的 CDC 機制,MongoDB 有它的那個 Oplog,然后MySQL 的話就用它的 Binlog。為了監聽這些 log 日志,Tapdata 每一個數據都有一個 log parser,把它拿出來以后,當監聽到變化,就會把它轉化成一個 update 語句或者 insret 的語句或者 delete 語句。在目標庫里面,Tapdata 還創建了 FDM ,即基礎層和主數據層。把它寫到目標庫里面,然后通過這種方式,等於是在目標平台里面建了一個邏輯的鏡像,跟源庫是是能保持高度的同步的那這種方式,這種 CDC 事件的延遲一般是在幾百毫秒,往往在1~2秒之內,我們就可以把數據同步到這個目標的平台,所以同步的時延是非常短的,大概率是亞秒級別。

以下是各個數據庫的采集增量數據的方式

  • Oracle: 通過LogMiner 對redo log/archive log解析數據庫日志
  • SQLServer: 通過SQLServer自帶的觸發器方式獲取數據庫事件
  • MySQL: 通過解析binlog方式來獲取數據庫事件
  • MongoDB: 通過解析Oplog方式來獲取數據庫事件
  • DB2: 通過解析DB2日志來獲取數據庫事件
  • PostgreSQL: 通過解析日志方式來獲取數據庫事件

用戶在開始同步任務的時候可以使用以下模式之一:

  • 全量遷移,然后緊接着增量遷移
  • 僅增量同步,從指定時間點開始
  • 僅增量同步,從當前時間開始

基於 Pipeline 的流數據處理模式

Tapdata 底層使用基於Hazelcast Jet 的 DAG 流處理引擎。該引擎支持基於 DAG(有向無環圖)的任務鏈流計算能力。用戶可以通過 Pipeline API 構建一個任務鏈的處理流程,包括數據源讀取,數據處理,過濾,聚合,最后輸出到目標 sink。該 Pipeline 會被系統轉化為 Core DAG 在流數據處理引擎中執行。如下圖所示:

這些 DAG 里面的計算節點都是一個基於記錄(原生流),而非基於批的處理。源端每產生一條新的記錄(R1),會由數據庫采集節點開始得到馬上的處理,並隨之交到 DAG 的下一個節點。通過結合 JSDK,用戶可以按照 DAG 的規則,構建出非常復雜的數據庫處理鏈路,並交給系統的流數據引擎來完成數據的處理。

流處理引擎的計算框架采用協程機制。與傳統線程不同,DFS 並不會為每一個數據處理任務起一個單獨的線程(線程資源是有限的),而是用一種類似於 Coroutines 的方式,處理任務的執行啟停都是由Java端來完成。底層的線程會持續執行, 並不斷地將控制交給框架管理程序來協調不同任務之間的計算工作。由於避免了昂貴的線程上下文切換,協程在很多時候可以顯著提高處理速度。

Tapdata 流數據處理引擎支持以下Transformation能力(operator):

  • map(fn) 
  • filter(fn)
  • mapWithService( serviceFn)
  • mapWithCache
  • mapWithReplicatedCache
  • hashJoin()
  • merge()

在實時流數據統計方面,tapdata 可以支持以下時間窗相關的函數:

  • aggregate
  • groupingKey
  • rollingAggregate
  • window
  • tumblingWindow
  • slidingWindow
  • sessionWindow
  • mapStateful

NoSQL 支持

常見 ETL 工具大部分為針對於關系型數據庫如 Oracle、MySQL 等。tapdata 在提供對關系型數據庫的支持的基礎之上,更提供完善的 NoSQL 支持,如 MongoDB,Elastic Search 以及Redis 等。目前企業的數據同步需求很大一部分是從關系型數據庫實時同步到分布式 NoSQL,用來解決關系數據庫的查詢性能瓶頸及業務創新瓶頸。

Tapdata 的研發團隊在處理 NoSQL 上有天然的優勢,這跟這個團隊成員大部分來自於 MongoDB 原廠、社區代碼貢獻者有關。

NoSQL 數據庫的特點就是文檔結構往往基於JSON,一個文檔包含了一對多和多對一關系。在同步的時候需要從多個表按照相應的關系寫入到目標 JSON,並且還需要在源表子表更新時同步更新目標JSON的子文檔,如下圖所示。

Tapdata 支持以下高級 JSON 同步特性:

  • 一對一合並同步更新
  • 多對一合並同步更新
  • 一對多合並同步更新

數據校驗、增量校驗

數據校驗是任何涉及到數據同步或者遷移工具的必備功能。完善的校驗能力可以給用戶足夠的信心來使用數據同步工具。

Tapdata 的校驗數據類型包含以下:

  • 行數校驗
  • 哈希校驗
  • 高級校驗(自定義)

Tapdata 校驗采用 Merge Sort 方式實現,可以快速完成對大數據表的遷移同步校驗工作。測試表明對一個 5000 萬行的表,只需要不到 2 分鍾左右就可以完成一次全量校驗。校驗結果分析包括一致率,錯誤數據比對等。

 此外,Tapdata 支持獨創的增量校驗功能。用戶啟動對指定的數據同步任務的增量校驗功能以后,Tapdata 將對需要校驗的表的 CDC 事件單獨記錄到一個緩存區,並啟動一個后台線程,按照用戶指定的檢驗策略,對緩存區的新增 CDC 事件進行解析。解析的時候會根據源表的DDL 獲取主鍵信息,然后依次查詢到目標和源表的數據進行比對。

容錯機制

Tapdata 提供一下在部署上提供高可用機制以及在數據寫入上提供冪等性操作來保證在錯誤狀態下,任務可以持續運行並且數據可以獲得最終一致。

每一個數據處理任務在運行的時候會頻繁的向管理端匯報健康狀況(每 5 秒一次)。如果管理端在一分鍾之內沒有收到匯報,則認為該處理節點已經離線。此時另一個存活節點會檢查到這個沒有心跳的任務,並將其接管過來。

每一個數據處理任務會在運行的時候頻繁記錄當前處理流的位置。當任務重新開啟的時候,會自動從該位置從新開始。

為實現上述的容錯機制,Tapdata 要求源端和目標端滿足以下條件:

  • 源端保留足夠長時間的操作日志(通常 1 天以上)
  • 目標端支持冪等性操作或能夠參與分步式二階段事務

附性能參數

Tapdata 是一個企業級的商業產品,數據實時同步和遷移只是其中一部分的功能,想了解產品的更多內容,可以訪問官網,提交測試申請可以獲得運行的demo。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM