Flink CDC 介紹

一、什么是 CDC

????????CDC 是 Change Data Capture(變更數據獲取)的簡稱。核心思想是,監測并捕獲數據庫的變動(包括數據或數據表的插入、更新以及刪除等),將這些變更按發生的順序完整記錄下來,寫入到消息中間件中以供其他服務進行訂閱及消費。

二、Flink CDC

????????Flink CDC 通過捕獲數據庫的變更日志(如 MySQL binlog、Postgres WAL),實現高效、低延遲的數據同步。其核心工作原理可分為變更數據捕獲轉換處理輸出同步三個階段:

2.1 變更數據捕獲

  1. 日志抓取

    使用 Debezium (Flink CDC 底層引擎) 連接數據庫,通過各自協議讀取變更日志

    MySQL ——> binlog
    PostgreSQL ——> WAL
    Oracle ——> Redo Log
  2. 初始快照

    首次啟動時執行全量快照(snapshot),將表中已有數據轉為 INSERT 事件流。

? ? ? ? 采用分塊并行讀取(如按主鍵分片)加速同步。

2.2 轉換處理

  1. 日志解析與轉換

    格式轉換:

    Debezium 將原始二進制日志解析為 JSON / Avro 結構,Flink CDC將其轉換為 RowData結構(Flink 內部數據結構)。

    Schema 映射:

    ? 自動推斷表結構(字段名、類型、主鍵),動態處理 DDL 變更(如新增列)。
  2. Flink 實時處理

    流式處理:


    變更事件(INSERT / UPDATE / DELETE)作為無界數據流進入 Flink。

    Exactly-Once 語義:

    ?通過 Checkpoint 機制 + binlog 位點持久化(如 Kafka 或 Flink State)保證數據一致性。

    轉換能力:

    支持使用 Flink SQL 或 DataStream API 進行過濾、聚合、關聯維表等操作。

2.3?輸出同步

將處理后的數據寫入下游系統:

  • 數據胡:Hudi / IceBerg
  • OLAP 引擎:Clickhouse / Doris
  • 消息隊列:Kafka / Pulsar
  • 數據庫:Mysql / PostgreSQL(需要支持 Upsert)

三、關鍵技術

3.1 全量+增量無縫切換

  • 無鎖讀取

    快照階段使用 SELECT ... FROM 而非鎖表(Mysql 使用 mysqldump 的輕量模式)。
  • 斷點續傳

    Checkpoint 存儲 binlog 位點,故障恢復時從斷點繼續同步。? ? ? ? ? ? ? ? ? ? ? ? ?

3.2 動態表結構處理

  • 自動 Schema 同步

    源表新增列時,Flink CDC 自動更新 Schema,下游系統需支持 DDL 傳播。
  • 兼容性處理

    舊數缺失實新增列時填充 NULL。

3.3 并行讀取優化

  • 分片策略

    按主鍵范圍或按時間分區并行快照。
  • 增量階段并行度

    單任務串行讀取 binlog(避免亂序),但可并行處理后續計算。

四、典型應用場景

4.1 實時數倉同步

-- Flink SQL 實現 MySQL → Hudi
CREATE TABLE orders_cdc (id BIGINT,amount DECIMAL(10,2),PRIMARY KEY (id) NOT ENFORCED
) WITH ('connector' = 'mysql-cdc','hostname' = 'mysql-host','database-name' = 'test','table-name' = 'orders'
);CREATE TABLE hudi_orders (...) WITH ('connector'='hudi');INSERT INTO hudi_orders SELECT * FROM orders_cdc;

4.2 多源數據聚合

// DataStream 實現訂單+用戶表關聯
DataSource<Order> orders = env.fromSource(MySqlSource.<Order>builder().build(), ...);DataSource<User> users = env.fromSource(PostgresSource.<User>builder().build(), ...);orders.connect(users).keyBy(o -> o.userId, u -> u.id).process(new EnrichOrderFunction()); // 關聯用戶信息

4.3 微服務數據融合

將分散的數據庫變更同步到 Kafka 統一主題,供下游服務消費。

五、性能優化策略

  1. 增量階段跳過快照
    配置?'scan.startup.mode'='latest-offset'?僅同步新增數據(無需全量)。

  2. 批量讀取加速
    調整?debezium.snapshot.fetch.size(單次讀取行數)提升快照效率。

  3. 無主鍵表處理
    啟用?'chunk-key.even-distribution'='false'?優化全表掃描性能。

  4. 資源隔離
    將 CDC 源任務與其他計算任務部署在不同 TaskManager 上,避免資源競爭。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/918016.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/918016.shtml
英文地址,請注明出處:http://en.pswp.cn/news/918016.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

暑期第三周(7.28-8.3)

其實 web [SWPUCTF 2021 新生賽]easy_sql 開啟環境后看到一個提示“球球你輸入點東西吧&#xff01;”沒有其他信息&#xff0c;就看看源碼 直接試試get傳參 有所顯示 看看是字符型還是數字型 可以判定是字符型 接下來判斷閉合類型 根據顯示&#xff0c;可以得知是單引…

【物聯網】基于樹莓派的物聯網開發【21】——MQTT獲取樹莓派傳感器數據廣播實戰

場景介紹 今天程序貓帶領大家如何獲取樹莓派傳感器溫濕度數據&#xff0c;并用MQTT進行廣播。 實現過程 啟動MQTT服務 1、終端啟動Mosquitto服務 sudo systemctl start mosquitto 2、設置服務開機自動啟動 sudo systemctl enable mosquitto硬件連接 樹莓派4b連接GPIO引腳與DHT1…

Mysql自定義順序查詢

1、使用函數MySQL 的 ORDER BY FIELD() 函數可以按照指定的自定義順序對查詢結果進行排序&#xff0c;而不是默認的升序&#xff08;ASC&#xff09;或降序&#xff08;DESC&#xff09;。2、適用場景后端/運營人員經常需要臨時把某幾條記錄‘拽’到最前&#xff08;或最后&…

回歸預測 | MATLAB實現RBF徑向基神經網絡多輸入單輸出回歸預測+SHAP可解釋分析

目錄 基于RBF徑向基神經網絡多輸入單輸出回歸預測及SHAP可解釋分析的研究 摘要 1. 引言 1.1 研究背景 1.2 研究意義 1.3 研究目標與內容 2. 文獻綜述 2.1 RBF徑向基神經網絡研究現狀 2.2 SHAP可解釋分析研究進展 3. RBF徑向基神經網絡原理 4. SHAP可解釋分析理論基礎 4.1 Shapl…

--- Eureka 服務注冊發現 ---

Euraka 是netfix開發的基于REST服務基于AP框架的注冊中心&#xff0c;主要是用于服務的注冊&#xff0c;管理&#xff0c;負載均衡&#xff0c;服務故障轉移 Eureka主要分倆部分Eureka Server&#xff1a;服務中心Server端&#xff0c;提供服務注冊 發現 健康檢查等服務Eureka …

vue3 el-select 加載內容后 觸發事件

在 Vue 3 中使用 Element UI 的 el-select 組件實現加載內容后觸發事件&#xff0c;主要有以下兩種常見需求及實現方式&#xff1a;加載數據后觸發事件若需在數據加載完成后觸發特定事件&#xff08;如頁面渲染完成&#xff09;&#xff0c;可通過自定義指令監聽滾動容器狀態&a…

c# winform 調用 海康威視工業相機(又全又細又簡潔)

1.準備一個海康相機 從垃圾桶里翻出來一個USB口相機。 2.下載MVS 和SDK 海康機器人-機器視覺-下載中心 mvs&#xff1a; sdk&#xff1a; 用MVS 調試一下&#xff0c;能連接就行。 海康威視相機&#xff0c;MVS連接成功&#xff0c;但無圖像怎么辦&#xff1f;-CSDN博客 3.打…

前端頁面直接生成PDF下載文件

前言 因為要實現業務需求如下圖&#xff0c;業務邏輯&#xff0c;該憑證為前端代碼實現&#xff0c;為了簡單方便實現下載為pdf的需求。 一、怎么在前端直接生成PDF&#xff1f; 需求描述&#xff1a;瀏覽器打開的這個頁面&#xff0c;點擊下載&#xff0c;把當前彈框頁面的…

性能優化——GPU的影響

關閉MSAA 之前在查一個渲染問題&#xff0c;一開始是定位到了CPU在waitforFrame所以知道是GPU的問題但如何定義GPU的問題在哪里&#xff0c;就很麻煩。我一開始以為是drawcall的問題&#xff0c;因為我發現drawcall有350個但降低到30個后&#xff0c;依然情況沒有好轉。畢竟dra…

軟件需求關閉前的質量評估標準是什么

在 需求關閉前&#xff0c;進行 質量評估 是確保需求被完整實現、測試充分且滿足業務目標的關鍵步驟。以下是需求關閉前的質量評估標準&#xff0c;涵蓋了功能、非功能、測試覆蓋率和用戶滿意度等方面&#xff1a;一、功能實現的質量評估標準需求完整性&#xff1a;所有功能需求…

vscode中創建python虛擬環境的方法

文章目錄框架不同python解釋器vscode運行python需要的插件vscode可以改變執行python腳本的默認終端虛擬環境解釋創建虛擬環境的方法python的settings.json的一些好用配置框架 python解釋器->虛擬環境->vscode 不同python解釋器 在一臺電腦中我們可以安裝多個版本的pyt…

基于 ShardingSphere 的 Spring Boot 數據加密與模糊查詢實現

基于 ShardingSphere 的 Spring Boot 數據加密與模糊查詢實現 在數據安全與查詢便捷性并重的今天,敏感數據加密存儲后如何支持靈活查詢成為關鍵挑戰。本文將聚焦ShardingSphere 在實現數據加密的同時支持模糊查詢的核心能力,詳細介紹基于 Spring Boot 和 ShardingSphere 的完…

計算虛擬化技術

&#x1f9e0; 一、什么是計算虛擬化&#xff1f;&#xff08;基礎認識&#xff09; ? 基本概念&#xff1a; 計算虛擬化&#xff08;Compute Virtualization&#xff09; 是指&#xff1a;在一臺物理服務器上模擬多個“虛擬計算資源”&#xff0c;每個虛擬機看起來像是一臺獨…

Python編程基礎與實踐:Python基礎數據結構:列表、字典和集合

Python數據結構&#xff1a;掌握列表、字典和集合 學習目標 通過本課程的學習&#xff0c;學員將掌握Python中基本的數據結構&#xff1a;列表、字典和集合。學員將了解它們的特性、使用場景以及如何高效地使用它們來解決實際問題。 相關知識點 列表、字典和集合使用 學習…

三維偏序 -- cdq 套 cdq

似乎題解區并沒有 cdq 套 cdq 的作法&#xff0c;剛好今天講了&#xff0c;就來寫一發。 題意與記號 題目講的很清楚了。此方法并沒有樹狀數組好想也沒有其高效&#xff0c;但能很方便擴展。下文記原序列為 ddd&#xff0c;將每個點拆分成點與詢問&#xff0c;內部增加一個名為…

Effective C++ 條款27: 盡量用const、enum、inline替換 #define

Effective C 條款27&#xff1a;盡量用const、enum、inline替換#define核心思想&#xff1a;使用編譯器&#xff08;const, enum, inline&#xff09;替代預處理器&#xff08;#define&#xff09;&#xff0c;讓編譯器進行語義檢查&#xff0c;避免宏替換引發的錯誤和調試困難…

芯谷科技--高效噪聲降低解決方案壓縮擴展器D5015

在無繩電話系統中&#xff0c;噪聲降低是提升通話質量的關鍵。 D5015 壓縮擴展器&#xff0c;通過集成壓縮器和擴展器&#xff0c;有效降低了傳輸噪聲&#xff0c;同時保持了信號的完整性。D5015 采用 SOP20 和 DIP20 封裝形式&#xff0c;具有低電壓工作、低功耗、高集成度等特…

LabVIEW車床靜剛度自動測

?基于LabVIEW 平臺開發車床靜剛度自動測試系統&#xff0c;針對傳統生產法測量中人工誤差大、計算復雜、效率低等問題&#xff0c;結合誤差復映規律與剛度方程&#xff0c;通過高精度硬件與軟件協同&#xff0c;實現試件加工前后尺寸的在線采集、自動計算與報告生成&#xff0…

汽車流通行業4S門店生存性指標:零服吸收率

我們在做汽車4S集團的商業智能BI數據分析項目中&#xff0c;對于4S店的管理&#xff0c;大家經常會提到一個分析指標&#xff0c;叫“零服吸收率”&#xff0c;這個大概是什么意思呢&#xff1f;簡單來說就是4S門店一臺車都沒有賣出的情況下&#xff0c;光靠售后服務部分的收益…

第一性原理科學計算服務器如何選擇配置-CPU選擇篇

一、 大多數人知道的 (顯性因素)核心數與線程數 (Core Count & Thread Count): 重要性&#xff1a; 核心是王道。 科學計算任務&#xff08;如仿真、建模、數據分析、機器學習訓練&#xff09;絕大多數都高度并行化&#xff0c;可以同時利用多個核心進行計算。選擇建議&…