數據同步方式何來“高級”與“低級”之說?場景匹配才是真理!

来源:https://www.cnblogs.com/seatunnel/p/18404964
-Advertisement-
Play Games

導讀:數據同步方式的重要性對於數據集成領域的興從業者不言而喻,選擇正確的數據同步方式能讓數據同步工作的成果事半功倍。目市面上的數據同步工具很多,提供的數據同步方式也有多種,不同的數據同步方式有什麼區別?如何選擇適合自己業務需求的數據同步方式呢?本文將對此進行深入分析,並深入剖析WhaleTunnel ...


file

導讀:數據同步方式的重要性對於數據集成領域的興從業者不言而喻,選擇正確的數據同步方式能讓數據同步工作的成果事半功倍。目市面上的數據同步工具很多,提供的數據同步方式也有多種,不同的數據同步方式有什麼區別?如何選擇適合自己業務需求的數據同步方式呢?本文將對此進行深入分析,並深入剖析WhaleTunnel在數據同步方面的功能和優勢,幫助讀者更好地理解其在企業數據管理中的應用。

不同數據同步方式的優缺點

數據同步是指在不同系統、資料庫或文件之間保持數據的一致性和同步更新的過程。根據應用場景、數據量和需求的不同,數據同步的方式也各不相同,選擇合適的數據同步方式對系統的整體架構、性能、穩定性、業務需求的滿足以及安全性都有至關重要的影響。

總的來說,一個合適的同步策略不僅能保障數據的一致性和完整性,還能降低系統的開發和維護成本,提高系統的可靠性。因此,企業在設計和實施數據同步方案時,必須充分考慮業務需求、數據量、實時性、性能、資源、維護成本及安全性等多方面因素,做出最優的選擇。

以下是常見的數據同步方式:

1. 全量同步

  • 全量同步是指每次同步時將所有數據進行傳輸和更新。適用於數據量較小且不需要頻繁更新的場景。
  • 優點:簡單易實現,適合數據量小的場景。
  • 缺點:數據量大時效率低,網路和存儲開銷高。

2. 增量同步

  • 增量同步是指每次同步時只傳輸和更新自上次同步後發生變化的數據。適用於數據量較大且變化頻繁的場景。
  • 優點:效率高,減少了數據傳輸量和系統負擔。
  • 缺點:實現較複雜,需要能夠準確檢測到數據的變化。

3. 實時同步

  • 實時同步指的是數據一旦發生變化,便立即同步到目標系統中。通常使用消息隊列(如Kafka、RabbitMQ)或CDC(Change Data Capture)等技術。
  • 優點:數據幾乎可以做到實時一致,適合對數據實時性要求高的業務。
  • 缺點:對網路和系統性能要求高,實現複雜度較高。

4. 定時同步

  • 定時同步是指根據設定的時間間隔(例如每小時、每天)來執行同步操作。適用於對實時性要求不高但數據量較大的場景。
  • 優點:靈活可控,適合批量處理。
  • 缺點:數據同步不是實時的,可能會有數據滯後的情況。

5. 雙向同步

  • 雙向同步是指兩個或多個系統之間的相互同步,即數據的變更會相互傳遞和同步。通常用於分散式資料庫或多活數據中心等場景。
  • 優點:系統之間保持一致性,數據可多點寫入。
  • 缺點:實現複雜,容易出現數據衝突和一致性問題。

6. 基於日誌的同步

  • 基於日誌的同步利用資料庫的事務日誌或binlog來捕獲數據變化並同步到目標系統。常用的工具包括Debezium、Canal等。
  • 優點:增量捕獲數據變化,實時性高。
  • 缺點:依賴於資料庫的日誌機制,對資料庫性能可能有影響。

7. 文件同步

  • 文件同步是通過文件的方式來傳輸數據,如將數據導出為CSV、JSON或XML文件,然後通過FTP、SFTP等方式進行同步。適合數據結構不複雜的場景。
  • 優點:實現簡單,相容性好。
  • 缺點:實時性差,不適合複雜和頻繁變化的數據。

不同的數據同步方式適用於不同的業務場景,選擇合適的同步方式需要綜合考慮數據量、實時性要求、網路和系統性能等因素。

探索WhaleTunnel的數據同步功能

在現代數據驅動型企業中,各系統和平臺之間高效的數據同步至關重要。WhaleTunnel是由白鯨開源開發的數據集成產品,旨在通過提供強大的數據同步功能來應對現代企業數據管理面對的挑戰。基於Apache SeaTunnel項目,WhaleTunnel提供了一整套批處理、實時和變更數據捕獲(CDC)等數據集成功能。

1. 批處理數據同步

批處理數據同步是指將大量數據從源系統定期傳輸到目標系統。WhaleTunnel批流一體的架構支持離線全量同步和增量同步,適用於數據倉庫、數據湖等需要大批量數據載入的場景。在批處理模式下,WhaleTunnel的Zeta引擎會持續創建分散式快照,這些快照可用於任務失敗後的恢復或重新開始同步,從而保證數據的一致性。

2. 實時數據同步

實時數據同步能夠將源系統中的數據實時傳輸到目標系統,適用於需要快速響應的數據場景,如消息隊列(如Kafka)處理。WhaleTunnel通過將作業類型設置為STREAMING,配置實時同步任務。Zeta引擎在實時同步過程中不斷創建分散式快照,以保存處理檢查點。如果任務失敗,系統會回滾到上一個成功的檢查點,從而確保數據僅被處理一次,防止目標資料庫中數據丟失或重覆。

3. 變更數據捕獲(CDC)同步

CDC(Change Data Capture)是一種通過讀取資料庫日誌來捕獲數據變化的方法。WhaleTunnel支持CDC實時同步和CDC離線增量同步,能夠將源數據中的所有更改(插入、刪除、更新)捕獲並應用到下游目標系統。這種方法特別適用於需要數據持續更新和保持一致性的場景。

WhaleTunnel的Zeta引擎在執行CDC同步時,持續進行分散式快照,以確保每個任務的處理檢查點被保留。在任務失敗時,系統會回滾到上一個成功的檢查點,確保數據的完整性和一致性。

4. 支持無主鍵的增量數據集成

傳統增量同步集成的方式有如下缺點:

  • 表中必須的自增ID或其它能用於判斷是增量數據的欄位,這限制了能做增量同步的表的範圍。
  • 無法識別刪除的數據和修改的數據,只能同步新增的數據,目標數據源中的數據無法與源端保持一致。

而WhaleTunnel無主鍵增量數據CDC的集成方式,會在離線同步作業運行時先記錄當前資料庫日誌中最新的點位N,然後開始從上一次任務結束時記錄的點位M進行增量處理,當讀取到資料庫日誌中的N點位時,認為這一次離線同步完成,任務完成並退出。

在沒有CDC離線同步的情況下,如果我們要進行資料庫增量同步,必須指定一個用於判斷是否是新數據的欄位,這個欄位可以是自增的ID欄位,或者是數據的寫入時間欄位等。

有了離線CDC同步,就可以徹底解決以上兩個問題。離線CDC同步的核心是通過讀取並解析源端數據的變更日誌來獲取數據變化,可以拿到新增數據、刪除數據和修改數據等所有變更信息,然後將這一變更操作同步應用到目標資料庫。 這種方式對源表沒有任何限制,而且可以完成所有數據操作類型的變更,使目標數據源真正與源端資料庫保存一致。

WhaleTunnel同時支持實時同步和離線同步兩種模式。進行一次源表歷史數據的全量讀取,然後自動切換到增量日誌的增量讀取、解析、發送到下游、寫入目標數據源。整個過程中程式是一直運行的,如果源表不再有數據更新操作,同步作業也不會停止,會一直等待有新的數據進來。

在實時CDC同步過程中,WhaleTunnel的同步引擎Zeta會不斷的運行分散式快照來保存每個任務處理的點位,如果任務失敗,Zeta會將任務從上一次處理成功的點位進行回滾。通過這種方式,WhaleTunnel能保證數據只會被處理一次,最終在目標資料庫中不會出現數據丟失或者重覆的問題。

5. 全庫同步與自動表結構變更

WhaleTunnel支持全庫同步和自動表結構變更功能。

  • 表結構變更應用
    傳統的CDC都無法檢測上游的表結構變更,無法將表結構變更同步應用到下目標數據源。WhaleTunnel CDC擁有一個叫Schema Evolution的特性完美解決了這個問題,開啟這個特性後,對於下游支持表變更的引擎可以有選擇的“同步”表結構的變化給下游系統,減少人工參與。
  • CDC 多表同步和整庫同步

file
CDC基本流程

目前行業內大部分同步產品在做CDC同步時,都需要每張表啟動一個Job來同步,當需要同步的表比較多時,會造成大量的計算資源的浪費,還會造成資料庫連接使用過多。資料庫連接是非常重要的資源,一旦無限制的占用過多的資料庫連接,可能會導致數據源出現不穩定的問題。
WhaleTunnel CDC通過多表同步來解決這個問題。用戶可以指定在一個作業中同步多張表的數據,Zeta為會根據用戶的配置啟動一個或多個同步線程來處理資料庫日誌中的數據,每個同步線程只需要一個資料庫連接。這可以大大減小資料庫連接的使用,以往我們同步10000張表的數據需要10000個資料庫連接,使用WhaleTunnel CDC甚至可以做到只使用一個資料庫連接就能完成同步。

  • CDC分庫分表同步
    WhaleTunnel支持分庫分表的數據同步,在作業配置時,每個Source任務可以同步一個資料庫實例中的分庫和分表,如果我們有多個資料庫實例,只需要每個資料庫實例配置一個Source即可。WhaleTunnel Zeta會將下麵的作業優化成3個pipeline執行,每個pipeline是獨立進行容錯的調度的,這就意味著即使某一個MySQL實例掛了,也不會影響另外兩個MySQL實例上的數據同步到下游的ClickHouse中。

  • CDC實時同步動態加表
    在做整庫CDC實時同步和多表CDC實時同步時,有時候需要添加一些新的表來同步。WhaleTunnel CDC支持在不停止同步作業的情況下動態添加新的同步表。新添加的表會由新的線程開始執行歷史數據的快照讀取階段,然後增量日誌讀取階段交由其它表已經在使用的增量同步線程來完成。

file
動態發現新表

可以看到,WhaleTunnel提供了豐富多樣的數據同步方法,供用戶在處理不同的業務場景時選擇最合適的方式去進行應用部署。

file

至關重要的一點是,WhaleTunnel從設計之初就定位為雲原生數據同步平臺,支持在Kubernetes(K8S)上部署,並利用雲存儲作為元數據存儲。此外,它還提供了完整的可視化開發界面,支持任務開發、管理、調度和監控,簡化了數據集成任務的定義和執行過程,這讓數據同步的操作變得更加簡單,極大地降低了用戶的數據管理成本。

結論

WhaleTunnel作為一個領先的數據同步和集成工具,通過支持多種同步方式(批處理、實時、CDC),以及無主鍵的增量同步和自動表結構變更等功能,為企業的數據集成需求提供了高效、穩定和靈活的解決方案。對於希望優化數據管理和提升數據利用率的企業而言,WhaleTunnel無疑是一個值得考慮的選擇,歡迎聯繫下方小助手嘗試使用。

本文由 白鯨開源 提供發佈支持!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 作為Linux系統運維人員,日常工作中經常需要處理磁碟管理和文件系統調整的任務。這些任務包括但不限於查看磁碟分區、識別掛載點、以及調整文件系統大小等。今天,我們將通過幾個常用的命令——fdisk、lsblk、mount,以及一個需要註意的命令resize2fs——來探討如何在Linux環境下進行這些 ...
  • ‍ 寫在開頭 點贊 + 收藏 學會 http 超文本傳輸​​協議(HTTP)是用於傳輸諸如HTML的超媒體文檔的應用層協議。它被設計用於Web瀏覽器和Web伺服器之間的通信,但它也可以用於其他目的。 HTTP遵循經典的客戶端-服務端模型,客戶端打開一個連接以發出請求,然後等待它收 ...
  • 新建文件夾——用於存放工程及工程管理 新建文件夾用於存放整個工程 打開“stm32-project”文件夾,新建一些文件夾用於工程源代碼的分類 這些文件夾都是自己建的用於不同類型代碼存放,文件夾個數,命名都因人而異。(後續所有文件放在“stm32-project”中也行,不嫌亂的話) Hardwar ...
  • 前言 第二年準備報名智能車了,當然還是創意組別。剛好買了今年新出的電腦光影精靈10,我想著也給它安一個雙系統。但是沒想到,相比於之前那個老電腦,新電腦的新硬體和驅動問題遠比老電腦麻煩的多。 在經歷了一系列踩坑和瘋狂查資料之後,加上重裝系統N次,終於成功下車。遂把過程記錄下來,以備後續不時之需 雙 ...
  • nohup [命令] >/dev/null 2>&1 & 示例: nohup /bin/sh -c 'cd /home/server/dotnet/DotnetDatamining && dotnet DotnetDatamining.dll "--desc=xxx服務 訪問埠號5028"' >/ ...
  • 1.Haproxy與Keepalived VRRP 介紹 軟體:haproxy 主要是做負載均衡的7層,也可以做4層負載均衡 apache也可以做7層負載均衡,但是很麻煩。實際工作中沒有人用。 nginx可以做7層的負載,性能強大,多在實際工作中使用。 負載均衡是通過OSI協議對應的【1】 7層負載 ...
  • Scoop 安裝 環境需求 PowerShell 5 + .NET Framework 4.5 + 安裝 指定安裝位置(配置環境變數) 以管理員身份打開PowerShell $env:SCOOP='D:\Applications\Scoop' [Environment]::SetEnvironmen ...
  • tcp mem 相關 net.ipv4.tcp_rmem = 4096 131072 6291456 讀取緩衝區,單位位元組 net.ipv4.tcp_wmem = 4096 16384 4194304 發送緩衝區,單位位元組 net.ipv4.tcp_mem = 760707 1014278 1521 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...