天天看點

CDC哪家強?Flink CDC、OGG、Debezium等基于日志開源CDC方案對比

作者:白楊Shayne

先上一張圖,後面再慢慢介紹:

CDC哪家強?Flink CDC、OGG、Debezium等基于日志開源CDC方案對比

CDC概述

CDC 的全稱是 Change Data Capture ,在廣義的概念上,隻要能捕獲資料變更的技術,我們都可以稱為 CDC 。我們目前通常描述的CDC 技術主要面向資料庫的變更,是一種用于捕獲資料庫中資料變更的技術。

CDC主要分以下兩類

  • 基于查詢的 CDC:優點是實作簡單,是通過批處理實作的,需要依賴離線排程,不能保證資料強一緻性和實時性;
  • 基于日志的 CDC:實作比較複雜,但是可以實時消費日志,流式處理,可保證資料一緻性和實時性;

方案對比

目前市面上的CDC技術比較多,我們選取了幾種主要的開源CDC方案做了對比,總體如下圖:

CDC哪家強?Flink CDC、OGG、Debezium等基于日志開源CDC方案對比

如上圖所示,從CDC機制、增量同步、斷電續傳、全量同步、全量+增量、架構、資料計算、生态這八個方面做了對比。可以看出其中的佼佼者主要是Flink CDC和Oracle OGG以及Debezium;

由于基于查詢的CDC方案缺陷明顯,這裡不作讨論,下面我們對基于日志的CDC方案的優劣來做詳細的介紹。

各方案優缺點

Flink CDC:Flink CDC是最近幾年的新貴,Flink CDC 底層封裝了 Debezium,功能比較全面,目前已經疊代到了2.4版本,社群活躍度在幾個方案中是最高的;

CDC哪家強?Flink CDC、OGG、Debezium等基于日志開源CDC方案對比
  • 優點:全、增量一體的分布式資料內建架構;同步時無需加鎖;吞吐量大,适合海量資料實時同步;操作簡單,SQL即可完成;具有強大的 transformation 能力,通過 Flink SQL 即可完成ETL 中的資料轉換;有豐富的 Connector,除關系型資料庫外,HBase、ClickHouse、TiDB等也支援,而且支援自定義 connector;
  • 缺點:依賴Flink叢集,資料量較大時對伺服器要求較高;

Oracle OGG:Oracle OGG曆史比較悠久,最初是設計用來從Oracle遷移資料到其它資料庫,或者從其它平台遷移資料到Oracle,随着發展,目前已支援Mysql、Hadoop、Hive、Kafka登資料源;

CDC哪家強?Flink CDC、OGG、Debezium等基于日志開源CDC方案對比
  • 優點:支援增量和全量同步,支援分布式,高性能,支援資料過濾和轉化,是目前主流的實時同步方案之一;
  • 缺點:支援的資料庫比較少,像一些MongoDB、TiDB等不支援;

Debezium:Debezium最初設計成一個Kafka Connect 的Source Plugin,目前開發者雖緻力于将其與Kafka Connect解耦,但目前的代碼實作還未變動。下圖引自Debeizum官方文檔,可以看到一個Debezium在一個完整CDC系統中的位置。

CDC哪家強?Flink CDC、OGG、Debezium等基于日志開源CDC方案對比
  • 優點:支援全量+增量同步;
  • 缺點:全量同步時會加鎖,而且加鎖時間不确定,會嚴重影響業務;最重要的是跟Kafka等消息中間件強耦合,下遊資料要經過Kafka;

Canal:主要用途是基于 MySQL 資料庫增量日志解析,提供增量資料訂閱和消費。

  • 優點:用于單一的MySQL環境做資料同步還不錯;
  • 缺點:缺點較為明顯,隻支援MySQL的CDC,隻支援增量同步,全量需要用DataX或者Sqoop,全量和增量同步割裂;不支援分布式;

繼續閱讀