Flink CDC 2.4 が正式にリリースされ、Vitess データ ソースの追加、増分スナップショットをサポートするコネクタの追加、Debezium バージョンのアップグレード...

1. Flink CDC の概要

Flink CDC[1] はデータベースベースのログ CDC テクノロジーであり、完全な増分統合読み取りのためのデータ統合フレームワークを実現します。Flink の優れたパイプライン機能と豊富な上流および下流のエコロジーと連携して、Flink CDC は大量のデータのリアルタイム統合を効率的に実現できます。

新世代のリアルタイム データ統合フレームワークとして、Flink CDC は、完全な増分統合、ロックフリー読み取り、並列読み取り、テーブル構造変更の自動同期、分散アーキテクチャなどの技術的利点を備えています。包括的な中国語と英語のドキュメントのサポート [2]。Flink CDC オープンソースの 3 年間で、コミュニティは急速に発展し、現在、Flink CDC コミュニティには 91 人の寄稿者、7 人のメンテナ メンバーがおり、コミュニティ DingTalk グループ (グループ番号: 33121212) には 8,900 人以上が参加しています。

2. Flink CDC 2.4の概要

コミュニティ ユーザーと開発者の共同の努力により、Flink CDC 2.4 は端午節の休暇後に正式にリリースされました。

リリース Release-2.4.0 · ververica/flink-cdc-connectors · GitHub

合計 32 人のコミュニティ貢献者が 2.4 バージョンに参加し、141 件の問題が解決され、86 件の PR がマージされ、96 件のコミットが貢献しました。コード配布の観点から見ると、MySQL CDC、MongoDB CDC、PostgreSQL CDC、増分スナップショット フレームワーク (flink-cdc-base) モジュールおよびドキュメント モジュールは、ユーザーに多くの機能と改善をもたらしました。

この記事では、次の図を通して Flink CDC 2.4 バージョンの主な改善点と主要な機能を 10 分で簡単に理解できます。

  • Vites の増分データ同期をサポートするために Vites CDC コネクタを追加しました。
  • PostgreSQL CDC コネクタと SQL Server CDC コネクタは両方とも増分スナップショット フレームワークに接続されているため、ロックフリー読み取り、同時読み取り、再開可能なアップロードの機能が提供されます。
  • バージョン 2.4 は、Debezium の依存バージョンを 1.9.7.Final にアップグレードし、新しいバージョンの Debezium の機能、最適化、修復を導入します。たとえば、一部の DDL が解析できない問題の修復、MySQL JSON 関数の解析の問題の修正、 Oracle イベントへの scn 情報の追加など。
  • インクリメンタル スナップショット フレームワークのバージョン 2.4 では、フル フェーズ終了後にアイドル状態の Reader を自動的に終了する機能が追加され、本番環境のリソースを節約できる非常に実用的な機能です。
  • MySQL CDC コネクタは、バージョン 2.4 で主キーなしのテーブルの読み取りをサポートし、新しいテーブルが追加されたときにストリーミングを継続するための元のリアルタイム同期リンクをサポートします。
  • コミュニティ バージョン 2.4 は、Flink 1.13 から 1.17 までの 5 つの Flink バージョンと互換性があります。CDC の SQL コネクタは、変更を加えることなくさまざまな Flink クラスター上で実行でき、バージョン間の互換性を実現します。Datastream ジョブの場合、Flink のバージョンに応じて、異なるバージョンの flink-shaded-guava 依存関係を導入する必要があります。DataStream ユーザーは、SQL コネクタのパッケージ化メソッドを参照して、正しい依存関係を管理できます。
  • MongoDB CDC は、データを消費するためのタイムスタンプの指定をサポートし、mongodb + srv 接続プロトコルをサポートし、ハイフンを含むライブラリ名を解析できない、「poll.await.time.ms」設定が有効にならない、DDL の解析などのいくつかの問題を修正します。空のポインタなどです。
  • OceanBase CDC コネクタは、JDBC パラメーター設定をサポートし、Oracle ドライバーの指定をサポートし、Oracle データ型のサポートを強化します。

3. コア機能と重要な改善点の詳細な説明

3.1 詳しい解釈

Flink CDC バージョン 2.4 では、多くの重要な改善と機能が導入されました。この記事では、さらなる解釈のために最も重要な 5 つを選択します。

  • Vites CDC コネクタを追加

Vitess[3] は、MySQL インスタンスの大規模なクラスターをデプロイ、スケーリング、管理するためのデータベース ソリューションです。Vitess の VStream は、Vitess クラスターの基盤となる MySQL シャードからのバイナリ ログと同じ情報を提供する変更イベント サブスクリプション サービスです。ダウンストリームはキースペースの複数のフラグメントをサブスクライブできます。これは、Vites のダウンストリーム CDC 処理ツールを実現するのに非常に便利です。Vitess CDC コネクタは、VStream を使用してデータ変更メッセージの取得と送信を行います。現在、読み取り増分フェーズでの変更同期のみをサポートしています。これは、最新のスタートアップ モードのみをサポートしているのと同じです。

Vites CDC コネクタのサポートの背後にはちょっとしたストーリーがあります。このコネクタは Vinted の Simonas Gelazevicius によって開発されました。アップストリームの最初のオープン ソースへの貢献の精神で、この寄稿者はバージョン 2.0 以降コミュニティにマージするよう要求してきました。しかし、このデータソースの国内ユーザーは非常に少なく、各メンテナーも技術的な詳細に精通していないため、コミュニティのメインブランチに統合できていません。Simonas Gelazevicius は、Flink CDC コミュニティでの各リリース後に PR をリベースするイニシアチブをとります。この粘り強さは、コミュニティのメンテナ メンバー全員に感銘を与えました。コミュニティ メンテナの Ren Qingsheng と Fang Shengkai は、Vites 関連のテクノロジを積極的に学習し、PR のレビューと改善に協力します。最後に、コネクタは寄稿者の Simonas Gelazevicius、Gintarasm、Fang Shengkai、Ren Qingsheng によって完成されました。

  • PostgreSQL CDC および SQL Server CDC コネクタは増分スナップショット フレームワークにアクセスします

バージョン 2.4 では、PostgreSQL CDC コネクタと SQL Server CDC コネクタの両方が Flink CDC 増分スナップショット フレームワークに接続されて増分スナップショット アルゴリズムを実装し、ロックフリー読み取り、並列読み取り、再開可能なアップロードの機能を提供します。

  • PostgreSQL CDC コネクタは増分スナップショット原則をサポートします

    PostgreSQL CDC コネクタは、PostgreSQL トランザクション ログ内の変更されたデータを読み取るために論理デコード[4] 関数を組み合わせる必要があります。これには、クラスター全体で一意のレプリケーション スロットを開始し、出力プラグインを使用してこれらの変更を処理する必要があります。 5]を介して、インクリメンタルフェーズの切り替えと障害回復を実現するために、読み取ったWAL位置を記録します。

    増分スナップショット フレームワークは、増分フェーズで変更されたデータを読み取るだけでなく、フル フェーズで SnapshotSplit ごとにバックフィル タスクを開始して、スナップショット中に発生した変更を同期する必要もあります。レプリケーション スロットの競合を回避するために、PostgreSQL CDC コネクタは次のメソッドを使用してスロットを作成します。まず、「slot.name」構成項目は必須であり、ユーザーが指定する必要があります。ここで指定されたスロット名は、増分フェーズで開始されるスロットに使用され、このスロットはジョブの開始時に作成されます、ジョブの停止後は削除されません。これにより、開始後に増分フェーズで完全な変更データが読み取られ、チェックポイントから再開できるようになります。フル フェーズの各バックフィル タスクのスロットには、「slotname_subTaskId」の命名スタイルが使用されます。競合やスロット リソースの無駄を避けるため、これらのスロットは完全な読み取りが停止した後に削除されます。

  • SQL Server CDC コネクタは増分スナップショット原則をサポートします

SQL Server CDC コネクタは、変更データ キャプチャ機能 [6] を通じて指定されたデータベースとテーブルの変更データを読み取り、特別に作成された変更テーブルに保存します。これには、行レベルの変更をキャプチャするために、指定されたデータベースとテーブルで CDC が有効になっている必要があります。データベースログのLSN(Log Sequence Number)を記録することで、インクリメンタルフェーズの切り替えや障害復旧を実現します。

これまでのところ、Flink CDC が増分スナップショット アルゴリズムをサポートするデータ ソースは拡大し続けており、コミュニティは次のバージョンでは、より多くのコネクタを増分スナップショット フレームワークに接続できるようにすることも計画しています。

  • 増分スナップショット フレームワークはリソースの自動リリースをサポートします

Flink CDC の増分スナップショット フレームワークには、フル フェーズと増分フェーズの 2 つの主なフェーズがあります。これら 2 つのフェーズの並列処理は異なります。フル フェーズは複数の並列処理をサポートし、大量のデータの同期プロセスを高速化します。増分フェーズは変更ログを読み取り、イベントの順序と正確性を保証するために単一の同時実行を使用する必要があります。 。フルフェーズで読み取りを行った後、増分フェーズでは同時実行が 1 つだけ必要となるため、アイドル状態の Reader が多数存在し、リソースの無駄になります。バージョン 2.4 が増分スナップショット コネクタを使用する場合、アイドル状態のリーダーを自動的に閉じる機能の構成をサポートし、これらのアイドル状態のリーダーを閉じます。この関数は、Flink 1.14 以降でサポートされる完了タスクのチェックポイント機能に依存しているため、Flink 1.14 以降の Flink バージョンでのみサポートされます。

  • MySQL CDC コネクタ機能の更新

コミュニティで最も人気のある MySQL CDC コネクタとして、コミュニティはバージョン 2.4 で次のような高度な機能を導入しました。

  • 1 主キーのないテーブルをサポート

MySQL CDC コネクタ バージョン 2.4 では、非主キー テーブルの使用がサポートされています。主キーを持つ MySQL テーブルと比較して、非主キー テーブルの使用には特別な注意事項がいくつかあります。非主キー テーブルを使用する場合は、「scan.incremental.snapshot.chunk.key-column」構成を通じて列をシャード列として指定する必要があり、これは同期のためにテーブルを複数のシャードに分割するために使用されます。インデックス付き列をシャード列として選択することをお勧めします。インデックスなし列を使用すると、全フェーズでの複数同時同期中にテーブル ロックが使用されます。次に、選択されたシャーディング列では、データ更新操作 (1 から 2 への更新など) がないことを確認する必要があります。更新操作がある場合は、At-Least-Once セマンティクスのみが保証されます。

  • 2 新しいテーブルのリアルタイム連続ストリーミングをサポート

以前に MySQL CDC が新しいテーブルを処理していたときは、元のリアルタイム同期リンクが切断され、同期を続行する前に新しく追加されたテーブルの完全な読み取りが完了するまで待つ必要があり、これにより、次のようなユーザーに大きな遅延が発生していました。遅延に敏感です。たとえば、新しく追加されたテーブルには大量の履歴データが含まれており、新しく追加されたテーブルの完全な同期が完了するまでに 30 分かかります。すでに増分段階にあるテーブルの場合は、続行するまでに 30 分待つ必要があります。テーブルに属する増分データを同期します。バージョン 2.4 では、新しく追加されたテーブルの処理ロジックがさらに最適化され、新しく追加されたテーブルの全段階が既存のリアルタイム同期リンクに影響を与えないようになり、ユーザー エクスペリエンスが大幅に向上しました。

  • 3つのバグ修正

バージョン 2.4 では、MySQL CDC コネクタは、指定された Binlog サイトの消費をセーブポイントから開始できない、データベース内の特殊文字を処理できない、大文字と小文字の区別によって引き起こされる断片化エラーなど、コミュニティ ユーザーによって報告された使用上の問題を修復しました。 。

3.2 その他の改善点

  • Debezium バージョンは、バージョン 1.9.7.Final へのアップグレードに依存しており、Debezium バージョンに対応する新機能と修正が導入されています。
  • Flink CDC バージョン 2.4 は、Flink 1.13 ~ 1.17 の 5 つのメジャー バージョンと互換性があり、ユーザーのコネクタのアップグレード、運用および保守のコストを大幅に削減します。

  • OceanBase CDC コネクタは、JDBC パラメーター設定をサポートし、指定されたドライバーをサポートし、Oracle データ型のサポートを改善し、異常な再接続が常に失敗するなどの問題を修正します。

  • MongoDB CDC は、指定されたタイムスタンプ消費データをサポートし、mongodb + srv 接続プロトコルをサポートし、ハイフンを含むライブラリ名の解析失敗、「poll.await.time.ms」設定が有効にならない、DDL 解析時の null ポインタなどの問題を修正します。
  • Oracle CDC は、データの正確性の問題を完全な段階で修正しました。
  • すべての CDC コネクタは、トラブルシューティングを容易にするための構成情報の印刷をサポートしています。

4. 今後の計画

Flink CDC オープンソース コミュニティの発展は、すべての貢献者の無私の貢献とメンテナ メンバーの優れたコミュニティ活動から恩恵を受けており、大多数の Flink CDC ユーザー グループの積極的な使用とフィードバックから切り離すことができません。Flink CDC コミュニティはオープン ソース コミュニティの構築を継続します。現在、コミュニティはバージョン 2.5 [7] を計画しています。貢献者とユーザーは積極的なフィードバックを歓迎します。次のバージョンでは、コミュニティの主な方向性は次の 4 つの側面:

  • 豊富なデータソース

より多くのデータ ソースをサポートし、各 CDC コネクタで増分スナップショット フレームワークの使用を促進することで、より多くのデータ ソースがロックフリー読み取り、同時読み取り、アップロードの再開などの機能をサポートします。

  • 増分スナップショット フレームワークの最適化

増分スナップショット フレームワークのアクセス時に発生する問題を最適化し、増分スナップショット フレームワーク内の各 CDC コネクタの再利用可能なコードを抽出して整理します。

  • 完璧な電流制限と監視

全ロードフェーズ中のデータベースに対するクエリの負荷を軽減するスロットル機能を提供します。より豊富な監視インジケーターを提供し、タスクの進行状況に関連するインジケーターを取得してタスクのステータスを監視できます。

  • その他の使用方法

少なくとも 1 回のセマンティクスのサポート、スナップショットのみの起動モードのサポートなどにより、ユーザーにさらに多くのシーン アプリケーションを提供できます。

  • convergence でサポートされる Flink バージョン

Flink バージョンの数が増加するにつれて、複数の Flink バージョンと互換性を持たせるという CDC に対するメンテナンスのプレッシャーも徐々に増大しています。現在の Flink コネクタ ルール [8] を参照すると、後続のバージョンでは、CDC コネクタは Flink の最新 3 ~ 4 バージョンのみのサポートを考慮します。

ありがとう:

コミュニティのメンテナ メンバーである Ruan Hang、Xu Bangjiang、Sun Jiabao、Gong Zhongqiang、Ren Qingsheng のコミュニティとこのバージョンの公開作業に感謝します。このバージョンに多大な貢献をしてくれた Tigran Manasyan、Chuan Fan、Xiao Meng、Yaroslav Tkachenko、Simonas Gelazevicius、gintarasm を含む 32 人のコミュニティ貢献者全員に感謝します。

貢献者のリスト (アルファベット順):

ハン・ルアン、フー・ワン、ジェイソン・リー、ジアバオ・スン、ジンソン・リー、シャオ・メン、レナード・シュー、チンシェン・レン、ロバート・メッツガー、セルゲイ・ヌヤンジン、シモナス・ゲラゼヴィシウス、ヤロスラフ・トカチェンコ、ティグラン・マナシアン、タイラントルシファー、ゾンリン・レオ、bb・チェン、エフイ、エムフ・イ、 gintarasm、gongzhongqiang、liangyaohui97、lin.zl、molsionmo、skylines、tison、wallkop、wangxiaojing、wuzhenhua、xixingya、zhaomin、zhuyuan03、風を含む

付録

[1]  GitHub - ververica/flink-cdc-connectors: Apache Flink® 用の CDC コネクタ

[2]  Apache Flink® 用の CDC コネクタ

[3] ヴィテス | スケーラブル。信頼性のある。MySQL互換。クラウドネイティブ。データベース。

[4]  PostgreSQL: ドキュメント: 15: 49.2。論理デコードの概念

[5]  PostgreSQL: ドキュメント: 15: 49.6。論理デコード出力プラグイン

[6] 変更データキャプチャ(CDC)とは何ですか? - SQL サーバー | Microsoft Learn

[7] リリース 2.5 ロードマップ · 問題 #2239 · ververica/flink-cdc-connectors · GitHub

[8]外部化されたコネクタの開発 - Apache Flink - Apache Software Foundation

イベントプレビュー|Flink CDC 2.4の新バージョンが6月29日にリリースされ、専門家がオンラインで解説

イベントの詳細

時間: 6月29日19:00

ライブ視聴リンク: https://gdcop.h5.xeknow.com/sl/8T3ku

下の画像をクリックしてコードをスキャンすると、ライブ ブロードキャスト ルームに直接アクセスできます。

生放送を視聴した友達も「質疑応答セッション」に参加して、オンラインで著名人たちとコミュニケーションをとることができます!

「ライブ配信中、学生はコメント欄で積極的に質問でき、共有後に講師が回答します。共有後には10分間のQ&Aセッションもあります!」

Flink CDC に関連する技術的な問題について詳しくは、QR コードをスキャンしてコミュニティの DingTalk コミュニケーション グループに参加してください。


開発者が Flink の使い方を学ぶのをさらに支援するために、Apache Flink 中国語コミュニティは最近、Flink-Learning 実践キャンプ プロジェクトを立ち上げました。この実践的なキャンプでは、開発者が実際の興味深い実践的なシナリオを通じて Flink を体験するのに役立ちます。コースには、リアルタイム データ アクセス、リアルタイム データ分析、リアルタイム データ アプリケーション シナリオが含まれます。小さなリスの教育アシスタント モードと組み合わせると、キャンプの開発者があらゆる面で Flink を簡単に操作できるようになります。下の画像をクリックしてコードをスキャンし、すぐにキャンプに参加してください

クリックするとライブブロードキャストルームに直接移動します

おすすめ

転載: blog.csdn.net/weixin_44904816/article/details/131427812
おすすめ