Debezium:一款基于CDC的開源數據同步工具

Debezium 是由 Red Hat 開源的一種基于變更數據捕獲(CDC) 的分布式平臺,專為實時捕獲和傳播數據庫的變更事件而設計。Debezium 常見的使用場景包括:

  • 實時數據集成:將數據庫變更同步到數據倉庫或數據湖,支撐實時分析。
  • 維護緩存一致性:源頭數據庫變更時自動失效或者更新 Redis/Memcached 中的緩存條目。
  • 微服務解耦:在單體應用拆分場景中,避免多系統“雙寫”一致性問題,通過 CDC 觸發下游業務邏輯(如更新搜索索引、發送通知等)。
  • 共享數據庫:當多個應用共用同一個數據庫的時候,一個應用提交的更改通常要被另一個應用感知到。Debezium 可以讓每個應用直接監控數據庫的更改,并且響應更改。
  • 命令查詢職責分離:在命令查詢職責分離(CQRS)架構模式中,Debezium 捕獲數據更改并且持久化到全序流里,然后供那些需要異步更新只讀視圖的服務消費。

系統架構

Debezium 提供了三種部署架構:Apache Kafka Connect、獨立服務器、嵌入式引擎。

Apache Kafka Connect

大多數情況下使用 Apache Kafka Connect 部署 Debezium,如上圖所示。其中:

  • Debezium 作為源端連接器,將變更記錄發送給 Kafka;
  • 目標連接器將記錄從 Kafka 主題傳播到其他系統。

例如,Debezium 提供 MySQL 或者 PostgreSQL 連接器分別用于捕獲這兩種數據庫的變更。每個 Debezium 連接器都會建立一個對應的源端數據庫連接:

  • MySQL 連接器使用客戶端代碼庫來訪問 binlog。
  • PostgreSQL 連接器從邏輯復制流讀取。

Kafka Connect 作為獨立的服務運行。

默認情況下,從一個數據庫表中的更改被寫入 Kafka 主題,主題名稱與表名稱對應。如果需要,可以通過配置 Debezium 的主題路由轉換來調整目標主題名稱。例如:

  • 將記錄路由到名稱與表名不同的主題;
  • 多個表的變更事件記錄到一個主題中。

在 Apache Kafka 中保存事件記錄后,Kafka Connect 生態中的不同連接器可以將記錄傳輸到其他系統和數據庫,例如 Elasticsearch、數據倉庫和分析系統或者緩存中。

獨立服務器

另外一種部署方式就是使用 Debezium 服務器,如下圖所示:

用戶可以配置 Debezium 服務器使用源端連接器捕獲數據庫變更,然后將其序列化成不同的格式(例如 JSON 或者 Apache Avro),然后將結果發送給各種消息平臺,例如 Redis、Amazon Kinesis,、Google Cloud Pub/Sub 或者 Apache Pulsar。

嵌入式引擎

這種部署方式不需要依賴 Kafka Connect,而是直接將 Debezium 連接器作為一個代碼庫嵌入 Java 應用程序中,捕獲數據變更,提供給應用程序使用,或者將數據流轉給消息平臺。

功能特性

Debezium 提供的主要功能如下:

  • 支持各種源端數據庫,包括 MySQL、MariaDB、MongoDB、PostgreSQL、Oracle、SQL Server、Db2、Cassandra、Vitess、Spanner、Informix 等;
  • 可以捕獲完整的數據變更,并且只捕獲已提交的事務,避免中間狀態或回滾操作,保證數據一致性。
  • 通過讀取數據庫事務日志而非輪詢表,確保高性能和低侵入性,不影響源庫性能。例如,對于 MySQL 或者 PostgreSQL,延遲在毫秒級;
  • 不需要對數據模型進行修改,例如增加 Last Updated 字段;
  • 支持數據刪除操作的捕獲;
  • 基于 Java 開發,資源占用低,支持分布式部署和高可用架構。通過 Kafka Connect 框架橫向擴展,應對大數據量同步需求;
  • 支持模式、表、字段級別的過濾,可以指定捕獲的包含列表或者排除列表;
  • 支持指定字段的數據脫敏,保護敏感信息;
  • 支持消息轉換,包括路由、篩選、扁平化等;
  • 大多數連接器都可以通過 JMX 進行監控。

下載安裝

Debezium 官方推薦使用 Docker 進行部署,并且給出了一個詳細的安裝步驟和示例,地址如下:

https://debezium.io/documentation/reference/3.1/tutorial.html

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

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

相關文章

從面向對象編程語言PHP轉到Go時的一些疑惑?

前言 1、php中面向對象編程時 與 Go中的區別? 2、php中最常使用laravel框架,不用過多關注依賴注入和反射,在go中又該如何使用呢?是 舍棄? 本文是一個系統化梳理,幫助從 語言哲學 → 依賴注入在 Go 的現狀 →…

Vue3中使用konva插件動態制作海報以及可在畫布上隨意移動位置

1、下載konva插件 官網地址 npm install vue-konva konva --save2、在主文件中引入,如main.js import VueKonva from vue-konva; app.use(VueKonva);3、組件內使用,我現在的布局是左側是畫布,右側是相關設置(顏色、標題等&#…

政安晨【開源人工智能硬件】【ESP樂鑫篇】 —— 在macOS上部署工具開發環境(小資的非開發者用蘋果系統也可以玩樂鑫)

政安晨的個人主頁:政安晨 歡迎 👍點贊?評論?收藏 希望政安晨的博客能夠對您有所裨益,如有不足之處,歡迎在評論區提出指正! 前言 開源人工智能硬件會給你帶來無限可能,玩開源硬件,環境和工具少…

Vue3 學習教程,從入門到精通,vue3學習中的JavaScript ES6 特性詳解與案例(5)

vue3學習中的JavaScript ES6 特性詳解與案例 ES6(ECMAScript 2015)是 JavaScript 的一個重要版本,引入了許多新特性,極大地提升了語言的表達能力和開發效率。本文將詳細介紹 ES6 的主要特性,包括 let 和 const 命令、變…

深度學習模型1:理解LSTM和BiLSTM

深度學習模型1:理解LSTM和BiLSTM 因為最近科研復現論文中需要了解單向LSTM和雙向LSTM,所以就學習了一下LSTM的基本原理,下面孬孬帶著大家一起學習一下,感謝大家的一鍵三連 一、RNN 因為談到LSTM,就必不可少的會考慮RNN…

[論文閱讀] 軟件工程 | 一篇關于開源許可證管理的深度綜述

關于開源許可證管理的深度綜述 論文標題:Open Source, Hidden Costs: A Systematic Literature Review on OSS License ManagementarXiv:2507.05270 Open Source, Hidden Costs: A Systematic Literature Review on OSS License Management Boyuan Li, Chengwei Liu…

Qt懸浮動態

粉絲懸浮動態,及抽獎程序#include "masklabel.h"MaskLabel::MaskLabel(int pos_x,QString fans_name,QWidget*parent):QLabel(parent) {this->setAlignment(Qt::AlignHCenter);//設置字體居中this->setStyleSheet("color:white;font-size:20px…

深入拆解Spring思想:DI(依賴注入)

在簡單了解IoC與DI中我們已經了解了DI的基本操作,接下來我們來詳解DI。(IoC詳解請看這里)我們已經知道DI是“你給我,我不用自己創建”的原則。現在我們來看看Spring是如何實現“給”這個動作的,也就是依賴注入的幾種方式。 Spring主要提供了…

Arcgis連接HGDB報錯

文章目錄環境癥狀問題原因解決方案環境 系統平臺:Linux x86-64 Red Hat Enterprise Linux 7 版本:6.0 癥狀 Arcgis連接HGDB報錯: 無法連接到數據庫服務器來檢索數據庫列表;請檢查服務器名稱、用戶名和密碼信息,然后…

Android 應用常見安全問題

背景:OWASP MASVS(Mobile Application Security Verification Standard 移動應用安全驗證標準)是移動應用安全的行業標準。 一、MASVS-STORAGE:存儲 1.1 不當暴露FileProvider目錄 配置不當的 FileProvider 會無意中將文件和目錄暴露給攻擊者…

Netty的內存池機制怎樣設計的?

大家好,我是鋒哥。今天分享關于【Netty的內存池機制怎樣設計的?】面試題。希望對大家有幫助; Netty的內存池機制怎樣設計的? 超硬核AI學習資料,現在永久免費了! Netty的內存池機制是為了提高高并發環境下的內存分配與回收效率…

Python 項目快速部署到 Linux 服務器基礎教程

Linux的開源特性和強大的命令行工具使得部署流程高度自動化,可重復性強。本文將詳細介紹如何從零開始快速部署Python項目到Linux服務器。 Linux系統因其穩定性、安全性和性能優化,成為Python項目部署的首選平臺。無論是使用flask構建Web應用、FastAPI創…

SQL Server通過CLR連接InfluxDB實現異構數據關聯查詢技術指南

一、背景與需求場景 在工業物聯網和金融監控場景中,實時時序數據(InfluxDB)需與業務元數據(SQL Server)聯合分析: 工業場景:設備傳感器每秒采集溫度、振動數據(InfluxDB),需關聯工單狀態、設備型號(SQL Server)金融場景:交易流水時序數據(每秒萬條)需實時匹配客…

機器學習詳解

## 深入解析機器學習:核心概念、方法與未來趨勢機器學習(Machine Learning, ML)作為人工智能的核心分支,正深刻重塑著我們的世界。本文將系統介紹機器學習的基本概念、主要方法、實際應用及未來挑戰,為您提供全面的技術…

汽車間接式網絡管理的概念

在汽車網絡管理中,直接式和間接式管理是兩種用于協調車載電子控制單元(ECUs)之間通信與行為的機制。它們主要用于實現車輛內部不同節點之間的協同工作,特別是在涉及網絡喚醒、休眠、狀態同步等場景中。### 直接式管理直接式網絡管…

npm : 無法加載文件 D:\Node\npm.ps1,因為在此系統上禁止運行腳本。

npm : 無法加載文件 D:\Node\npm.ps1,因為在此系統上禁止運行腳本。 安裝高版本的node.js,可能會導致這個問題, 腳本的權限被限制了,需要你設置用戶權限。 get-ExecutionPolicy set-ExecutionPolicy -Scope CurrentUser remotesig…

搜索算法講解

搜索算法講解 深度優先搜索-DFS P1219 [USACO1.5] 八皇后 Checker Challenge 一個如下的 666 \times 666 的跳棋棋盤,有六個棋子被放置在棋盤上,使得每行、每列有且只有一個,每條對角線(包括兩條主對角線的所有平行線&#xff…

深度學習---Rnn-文本分類

# 導入PyTorch核心庫 import torch # 導入神經網絡模塊 import torch.nn as nn # 導入優化器模塊 import torch.optim as optim # 導入函數式API模塊 import torch.nn.functional as F # 導入數據集和數據加載器 from torch.utils.data import Dataset, DataLoader # 導入NumPy…

20250709解決KickPi的K7開發板rk3576-android14.0-20250217.tar.gz編譯之后刷機啟動不了

【整體替換】 Z:\20250704\rk3576-android14.0\rkbin清理編譯的臨時結果: rootrootrootroot-X99-Turbo:~$ cd 14TB/versions/rk3576-android14.0-20250217k7/ rootrootrootroot-X99-Turbo:~/14TB/versions/rk3576-android14.0-20250217k7$ ll rootrootrootroot-X99-…

怎么創建新的vue項目

首先,新建一個文件點文件路徑,輸入cmd