資料同步方式何來“高階”與“低階”之說?場景匹配才是真理!

ApacheSeaTunnel發表於2024-09-09

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無疑是一個值得考慮的選擇,歡迎聯絡下方小助手嘗試使用。

本文由 白鯨開源 提供釋出支援!

相關文章