Flink CDC 2.3 釋出,持續最佳化效能,更多聯結器支援增量快照,新增 Db2 支援

ApacheFlink發表於2022-12-14
作者|阮航 & 徐榜江

一、Flink CDC 簡介

Flink CDC[1] 是基於資料庫的日誌 CDC 技術,實現了全增量一體化讀取的資料整合框架。配合 Flink 優秀的管道能力和豐富的上下游生態,Flink CDC 可以高效實現海量資料的實時整合。

img

作為新一代的實時資料整合框架,Flink CDC 具有全增量一體化、無鎖讀取、並行讀取、表結構變更自動同步、分散式架構等技術優勢,同時社群提供了完整的文件支援[2]。在 Flink CDC 開源的兩年多時間裡,社群成長迅速,目前 Flink CDC 社群已有 76 位貢獻者,7 位 Maintainer,社群釘釘使用者群超過 7800 人。

二、 Flink CDC 2.3 概覽

在社群使用者和貢獻者們的共同努力下, Flink CDC 2.3 正式釋出了:

https://github.com/ververica/...

img

2.3 版本共有 49 位社群貢獻者參與貢獻,累計解決 126 個 issue,合併了 133 個 PR,貢獻者們累計貢獻了 170+ 提交。 從程式碼分佈上看,MySQL CDC,MongoDB CDC, Oracle CDC,增量快照框架(flink-cdc-base)模組以及文件模組均為使用者帶來了很多特性和改進。

面對如此多的改進和特性,本文透過下圖帶你 3 分鐘快速瞭解 Flink CDC 2.3 版本的重大改進和核心特性。

img

  • 新增 Db2 CDC 聯結器, 解鎖讀取 Db2 資料庫,支援全量和增量一體化同步。
  • MongoDB CDC,Oracle CDC 兩大聯結器均接入了增量快照框架,從而提供了無鎖讀取,併發讀取和斷點續傳的能力。
  • MySQL CDC 聯結器在 2.3 版本里進行了諸多效能最佳化和穩定性大改進,極大提升了生產穩定性和效能。
  • Flink CDC 2.2 版本相容了 Flink 1.13 和 Flink 1.14, Flink CDC 2.3 在此基礎上繼續相容了 Flink 1.15 & 1.16 大版本,從而相容了 Flink 的四個大版本。這意味著 CDC 的 SQL connector 可以跑在不同的 Flink 叢集上而無需任何修改,如果是 DataStream 使用者也可以參考 SQL Connector 的打包方式,實現跨版本相容。
  • OceanBase CDC 聯結器支援將全部資料庫型別對接到 Flink SQL,也就是說 OceanBase 所有型別的欄位均支援同步。
  • MySQL CDC 和 OceanBase CDC 聯結器提供中文文件,這可以更好地幫助到中文使用者。

三、詳解核心特性和重要改進

Flink CDC 2.3 版本帶來了諸多重要的改進和特性,本文挑選最重要的四個進行深入解讀。

img

3.1 新增Db2 CDC 聯結器

Db2 是 IBM 開發的關係型資料庫管理系統[3]。Db2 CDC 聯結器可以捕獲 Db2 資料庫中表的行級變更,其實現原理是基於 ASN Capture/Apply agents 提供的 SQL 複製能力 ,將資料庫中開啟 capture mode 的表的變更存到指定的 change table 中。Db2 CDC 聯結器首先透過 JDBC 讀取表中的歷史資料,再從 change table 中獲取增量變更資料,從而實現全增量同步。

3.2 MongoDB CDC,Oracle CDC 聯結器支援增量快照演算法

在 Flink CDC 2.3 版本中,MongoDB CDC 聯結器和 Oracle CDC 聯結器都對接到了 Flink CDC 增量快照框架上,實現了增量快照演算法,從而提供無鎖讀取,並行讀取和斷點續傳的功能。

img

至此,Flink CDC 支援增量快照演算法的資料來源不斷擴大,在接下來的版本中,社群也在規劃讓更多的聯結器對接到增量快照框架上。

3.3 MySQL CDC 聯結器最佳化

作為社群最受使用者關注的 MySQL CDC 聯結器,2.3 版本中社群引入了諸多高階特性,極大地提升了效能和穩定性,具體包括:

3.3.1 支援指定位點啟動

MySQL CDC 聯結器支援從指定的位點啟動作業。可以透過 timestamp,binlog offset 或 binlog gtid 的方式指定作業啟動時的 binlog 具體位置,還支援設定為 earliest-offset 從最早的 binlog 位點啟動作業。

3.3.2 分片演算法最佳化

2.3 版本對全量階段分片演算法進行最佳化。將目前的同步分片改為非同步進行,支援使用者指定主鍵中某一列作為分片的切分列,並且分片過程支援 checkpoint,提升了全量讀取階段時因為同步分片阻塞導致的效能問題。

3.3.3 穩定性提升

MySQL CDC 聯結器支援全部字符集對接到 Flink SQL,解鎖更多使用者場景,支援寬容預設值提升作業對不規範 DDL 的容忍度,支援自動獲取資料庫的時區從而解決時區問題。

3.3.4 效能提升

2.3 版本 MySQL CDC 重點最佳化了記憶體和讀取效能,透過 JM 裡的 meta 複用和 TM 中流式讀取等改進降低了 JM 和 TM 的記憶體使用;同時透過最佳化 binlog 解析邏輯提升了 binlog 讀取效能。

3.4 其他改進

  • Flink CDC 2.3 版本相容了 Flink 1.13,1.14,1.15 和 1.16 四個大版本,極大地降低使用者 Connector 的升級和運維成本。
  • OceanBase CDC 修復了時區問題,支援全型別對接到 Flink SQL,並提供了更多的配置項,支援更靈活的配置。如新增加 table-list 配置項,支援訪問多張 OceanBase 資料表等。
  • MongoDB CDC 支援了更多的資料型別,最佳化了捕獲表的篩選過程。
  • TiDB CDC 修復了全增量切換時資料丟失問題,支援讀取時 region 切換。
  • Postgres CDC 支援 geometry 型別,開放了更多配置項,支援配置 changelog mode 來過濾傳送的資料。
  • SqlServer CDC 支援了更多的版本,並對文件[4]進行完善。
  • MySQL CDC 和 OceanBase CDC 聯結器提供了中文文件[5][6],此外還對 OceanBase CDC 聯結器提供了影片教程[7]

四、未來規劃

Flink CDC 開源社群的發展,得益於貢獻者們的無私貢獻和 Maintainer 成員的開源佈道,更離不開廣大 Flink CDC 使用者群體的積極反饋和宣傳佈道,Flink CDC 社群將會繼續做好開源社群建設。當前 Flink CDC 社群正在做 2.4 版本的規劃[8],也歡迎所有使用者和貢獻者參與反饋,在接下來的 2.4 版本,社群主要方向計劃從下述四個方面展開:

  • 資料來源完善

支援更多的資料來源,推動更多的 CDC 聯結器接入增量快照框架,支援無鎖讀取、併發讀取、斷點續傳等特性。

  • 可觀測性提升

提供限流功能,以降低全量階段對資料庫產生的查詢壓力;提供更豐富的監控指標,可以獲取到任務進度相關指標監控任務狀態。

  • 效能提升

全量階段支援使用 Batch 模式同步全量階段資料,提升全量階段效能;全量讀取階段結束後自動釋放空閒 reader 資源等。

  • 易用性提升

提升聯結器的易用性,比如簡化開箱即用的配置引數,提供 Datastream API 程式示例等。

致謝:

感謝所有為 Flink CDC 2.3 版本做出貢獻的覃立輝、莫賢彬、rookiegao、He Wang 等 49 位社群貢獻者,特別感謝社群的四位 Maintainer 成員阮航、孫家寶、龔中強和任慶盛為 2.3 版本釋出所做的傑出工作。

阿里雲實時計算 Flink 版提供更多企業級 Flink CDC 能力[9],包括了分庫分表合併、表結構變更同步、整庫同步等重要功能,更好的支援了阿里雲實時數倉 ODPS-Hologres 等產品,同時使用可無縫構建實時資料倉儲。歡迎感興趣的使用者移步阿里雲產品官網體驗使用。

貢獻者列表:

01410172,Amber Moe,Dezhi Cai,Enoch,Hang Ruan,He Wang,JiaJia,Jiabao Sun,Junwang Zhao,Kyle Dong,Leonard Xu,Matrix42,Paul Lin,Qingsheng Ren,Qishang Zhong,Rinka,Sergey Nuyanzin,Tigran Manasyan,camelus,dujie,ehui,empcl,fbad,gongzhongqiang,hehuiyuan,hele.kc,hsldymq,jiabao.sun,legendtkl,leixin,leozlliang,lidoudou1993,lincoln lee,lxxawfl,lzshlzsh,molsion,molsionmo,pacino,rookiegao,skylines,sunny,vanliu,wangminchao,wangxiaojing,xieyi888,yurunchuan,zhmin,阿洋,莫賢彬

附錄

[1] https://github.com/ververica/...

[2] https://ververica.github.io/f...

[3] https://www.ibm.com/products/db2

[4] https://ververica.github.io/f...

[5] https://ververica.github.io/f...

[6] https://ververica.github.io/flink-cdc-connectors/release-2.3/content/connectors/oceanbase-cdc%28ZH%29.html

[7] https://ververica.github.io/flink-cdc-connectors/release-2.3/content/%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B/oceanbase-tutorial-zh.html

[8] https://github.com/ververica/...

[9] https://www.alibabacloud.com/...


更多內容

Flink Forward Asia 2022

本屆 Flink Forward Asia 更多精彩內容,可點選閱讀原文或掃描圖片二維碼觀看全部議題的影片回放及獲取 FFA 2022 峰會資料!

PC 端觀看:https://flink-forward.org.cn/建議前往 FFA 2022 大會官網觀看全部議題的影片回放


活動推薦

阿里雲基於 Apache Flink 構建的企業級產品-實時計算Flink版現開啟活動:
99 元試用 實時計算Flink版(包年包月、10CU)即有機會獲得 Flink 獨家定製衛衣;另包 3 個月及以上還有 85 折優惠!
瞭解活動詳情:https://www.aliyun.com/produc...

image.png

相關文章