Debezium介绍

embedded/2025/3/31 21:56:11/

1.什么是Debezium

Debezium 是一个开源的分布式平台,用于捕获数据库的变更事件(CDC,Change Data Capture)。它能够实时捕获数据库中的行级更改,并将这些更改作为事件流发送到消息中间件(如 Apache Kafka)。Debezium 构建于 Apache Kafka Connect 之上,提供了一组 Kafka Connect 兼容的连接器,每个连接器都针对特定的数据库管理系统(DBMS)。

在生产环境中使用 Debezium,我们还需要了解它的一些生产相关的特性,包括:

  • 高可用
    • 单机高可用:Kafka Connect 仅跑在单台机器上,并且仅在这台机器上用文件来存储偏移,所以可以做到在这一台机器上重启时可以接续。
    • 集群高可用:Kafka Connect 本身提供了分布式模式(Distributed Mode)。这个模式会把连接器任务分布到不同的节点上,并且在某个节点失效时自动把任务重新协调到其他节点上。所以,如果使用分布式模式,则不会出现单点失效的问题。
  • 快照机制
    • 存量快照
    • 增量快照
    • 局部快照
  • 配置变更
    • 单机模式下,Kafka Connect 无法变更配置,而在分布式模式下,Kafka Connect 会暴露 REST API 方便我们查看连接器状态以及修改连接器配置
  • 数据处理
    • 特殊格式(不同数据格式转换)
    • 主题路由(多个不同表,路由到同一个topic进行消费处理)
  • 排错

2.为什么要使用 Debezium?

1. 实时数据同步

Debezium 能够实时捕获数据库的变更事件,并将这些事件发送到消息中间件(如 Kafka),从而实现数据的实时同步。这对于需要实时处理数据的应用场景非常有用,例如:

  • 微服务架构:在微服务架构中,多个服务可能需要共享数据。Debezium 可以将数据库的变更事件实时同步到 Kafka,其他服务可以通过订阅 Kafka 主题来获取最新的数据。
  • 数据仓库和数据湖:Debezium 可以将数据库的变更事件实时同步到数据仓库或数据湖,从而实现数据的实时分析和处理。

2. 简化数据集成

Debezium 提供了一种简单而高效的方式来捕获数据库的变更事件,而无需编写复杂的代码。这大大简化了数据集成的开发工作,提高了开发效率。

3. 高可用性和可扩展性

Debezium 构建于 Apache Kafka Connect 之上,继承了 Kafka 的高可用性和可扩展性。这使得 Debezium 能够在生产环境中稳定运行,并且可以根据需要进行水平扩展。

4. 支持多种数据库

Debezium 提供了多种数据库连接器,支持多种流行的数据库管理系统,如 MySQL、PostgreSQL、MongoDB 等。这使得 Debezium 能够适应不同的应用场景和需求。

3.使用 Debezium 能给我们带来哪些好处及便利?

1. 实时数据处理

Debezium 能够实时捕获数据库的变更事件,使得应用程序能够实时响应数据变化。这对于需要实时处理数据的应用场景非常有用,例如:

  • 实时监控:实时捕获数据库的变更事件,可以用于实时监控和告警。
  • 实时推荐:实时捕获用户行为数据,可以用于实时推荐系统。

2. 数据一致性

Debezium 能够确保数据的一致性,即使在分布式系统中,也能够保证数据的同步和一致性。这对于需要高一致性的应用场景非常有用,例如:

  • 分布式事务:在分布式系统中,Debezium 可以用于实现分布式事务的一致性。
  • 数据备份:Debezium 可以用于实现数据的实时备份,确保数据的安全性和一致性。

3. 简化开发

Debezium 提供了一种简单而高效的方式来捕获数据库的变更事件,而无需编写复杂的代码。这大大简化了开发工作,提高了开发效率。

4. 灵活的部署方式

Debezium 提供了多种部署方式,包括通过 Kafka Connect 部署、嵌入式模式和独立模式。这使得 Debezium 能够适应不同的应用场景和需求。

4.Debezium的三种实现方式

1. 通过 Kafka Connect 部署

这是最常用的部署方式。Kafka Connect 是一个用于实施和操作的框架和运行时,支持源连接器(如 Debezium)和目标连接器。在这种方式下,Debezium 作为 Kafka Connect 的一种源连接器,捕获数据库的变更事件并发送到 Kafka。这种方式适用于需要高可用性和可扩展性的生产环境。

centos7安装单机zookeeper

centos7安装单机kafka

centos7安装postgresql12

Kafka集成Debezium监听postgresql变更

2. 嵌入式(Embedded)模式

在这种模式下,Debezium 可以直接嵌入到 Java 应用程序中,而无需依赖 Kafka Connect 或 Kafka 集群。这种方式适合轻量级场景,尤其是不想引入额外消息中间件的项目。嵌入式模式提供了灵活性,可以直接在应用程序中处理变更事件。

Springboot集成Debezium监听postgresql变更

3. 独立模式(Standalone)

独立模式允许 Debezium 作为独立服务运行,捕获数据库变更并直接写入目标系统(如文件、数据库等),而无需 Kafka。这种方式适合不需要 Kafka 的轻量级场景,可以减少资源消耗。


http://www.ppmy.cn/embedded/176679.html

相关文章

Categorical分布(分类分布):深度学习中的离散建模利器

Categorical分布:深度学习中的离散建模利器 引言 对于深度学习研究者来说,概率分布是模型设计和优化的基石。在许多生成模型中,如变分自编码器(VAE)及其变种VQ-VAE(Vector Quantized Variational Autoenc…

linux下配置allure的环境变量使之变为可执行文件

https://allurereport.org/docs/install-for-linux/ 操作步骤 1. 检查并删除已存在的符号链接(如果存在) 首先,检查/usr/bin/allure是否已经存在: ls -l /usr/bin/allure如果输出显示/usr/bin/allure已经存在,说明…

防重复请求方法总结 wx.request-微信小程序

在微信小程序中,为了防止 wx.request 的重复请求,可以通过以下几种方式来实现: 1.使用 wx.showLoading 和 wx.hideLoading 在请求中,使用 wx.showLoading 显示加载动画,请求完成后使用 wx.hideLoading 隐藏加载动画。…

Java 大视界 -- 基于 Java 的大数据机器学习模型的多模态融合技术与应用(143)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

Kafka Snappy 压缩异常分析与解决方案

1. 问题描述 在使用 Kafka 进行消息发送时,遇到了以下异常: org.apache.kafka.common.KafkaException: java.lang.UnsatisfiedLinkError: /tmp/snappy-1.1.7-ee0a2284-1d05-4116-9ddc-a0d5d4b3f8cd-libsnappyjava.so: Error loading shared library ld…

C++类与对象的第一个简单的实战练习-3.24笔记

在哔哩哔哩学习的这个老师的C面向对象高级语言程序设计教程&#xff08;118集全&#xff09;讲的真的很不错 实战一&#xff1a; 情况一&#xff1a;将所有代码写到一个文件main.cpp中 #include<iostream> //不知道包含strcpy的头文件名称是什么,问ai可知 #include<…

智慧路灯机器人是否支持远程监控和管理?

哇哦&#xff01;家人们&#xff0c;叁仟智慧路灯机器人堪称科技领域熠熠生辉的超级巨星&#xff0c;在远程监控与管理方面拥有令人惊叹的卓越表现&#xff01;它全力支持极为便捷的远程监控和管理功能&#xff0c;无论你身处繁华都市的写字楼&#xff0c;还是远在宁静乡村的田…

SpringMVC 配置详解

SpringMVC 是 Spring 框架中用于构建 Web 应用程序的模块&#xff0c;它基于 MVC&#xff08;Model-View-Controller&#xff09;设计模式&#xff0c;能够将业务逻辑、数据和显示分离&#xff0c;从而提高代码的可维护性和可扩展性。本文将详细介绍 SpringMVC 的配置步骤和相关…