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 的轻量级场景,可以减少资源消耗。