Clarence Java DocClarence Java Doc
开发总结
Java
数据库
缓存
JVM
Spring
SpringBoot
微服务
消息队列
高并发
分布式
高可用
设计模式
场景题
Netty
云原生
算法
架构
开发协议
IOT
人工智能
开发总结
Java
数据库
缓存
JVM
Spring
SpringBoot
微服务
消息队列
高并发
分布式
高可用
设计模式
场景题
Netty
云原生
算法
架构
开发协议
IOT
人工智能
  • MySQL
  • Mysql 5.7+ 特性
  • 0_mysql_maria_db.md
  • Postgres
  • Postgres 9.6+ 特性
  • Other RDBMS
  • Orm Frameworks
  • Columnar DB
  • Distributed DB
  • Time Series DB
  • Document Stores
  • Search Engines
  • 数据库中间件
  • CDC 工具
  • Mysql-binlog-connect-java
  • Java总结-数据库

CDC 工具

我们把 MBCJ、Canal、Debezium 和 Flink CDC 放在同一张表里对比,帮你理解它们的定位、架构和使用场景。


一、定位和特点

特性MBCJCanalDebeziumFlink CDC
类型Java 库分布式 Binlog 中间件分布式变更数据捕获(CDC)平台流处理框架插件(Flink CDC)
目标嵌入 Java 应用,解析 Binlog模拟 MySQL slave,跨语言同步基于 Kafka Connect,捕获数据库变更将数据库变更流实时处理和分析
多语言支持❌(Java)✅(客户端多语言)✅(Kafka Connect 支持多语言消费者)✅(Flink 支持多语言 Sink/Source)
数据库支持MySQLMySQL、MariaDBMySQL、PostgreSQL、MongoDB 等MySQL、PostgreSQL、Oracle 等

二、架构对比

1、MBCJ

MySQL Binlog
    │
BinaryLogClient
    │
EventListener -> 下游应用(JSON/MQ)
  • 轻量级,直接嵌入应用
  • 自行处理事务、表映射、发布

2、Canal

MySQL (Master)
    │
Canal Server (模拟 Slave)
    │
Canal Connector
    │
客户端 -> MQ / ES / DB
  • 独立中间件,支持多语言客户端
  • 内置批处理、事务分组、容错

3、Debezium

MySQL/PostgreSQL/Mongo
    │
Debezium Connector (Kafka Connect)
    │
Kafka Topic -> 消费者
  • 基于 Kafka Connect
  • 提供标准化 CDC 流
  • 支持事务完整性、重放、偏移管理

4、Flink CDC

MySQL/PostgreSQL/Oracle
    │
Flink CDC Source
    │
Flink DataStream / Table API
    │
下游 Sink (Kafka/ES/DB)
  • 直接与 Flink 流处理集成
  • 支持事件时间、窗口、状态管理
  • 可做复杂实时计算

三、功能对比

功能MBCJCanalDebeziumFlink CDC
监听 Binlog✅✅✅✅
DML 解析✅✅✅✅
DDL 解析✅✅✅✅
事务边界✅✅✅✅
异构数据库支持❌❌✅✅
多语言消费❌✅✅✅(通过 Flink Sink)
高可用/集群❌✅✅✅(Flink 集群)
消息队列集成手动内置Kafka 原生自定义 Sink
实时流计算❌❌❌✅

四、适用场景

  • MBCJ:微服务内部快速监听 MySQL 变更,直接嵌入 Java 应用。
  • Canal:企业级多系统同步,跨语言消费 Binlog,适合中间件方案。
  • Debezium:标准化 CDC 流,强一致性,适合 Kafka 生态。
  • Flink CDC:实时流处理、复杂事件处理、实时计算场景。

💡 总结:

  • MBCJ:轻量级,嵌入式,Java 专用。
  • Canal:独立中间件,多语言,事务批处理,企业同步。
  • Debezium:Kafka Connect 生态,异构数据库,标准化 CDC 流。
  • Flink CDC:流处理框架插件,支持实时计算和复杂业务逻辑。

Last Updated:
Contributors: hello0709
Prev
数据库中间件
Next
Mysql-binlog-connect-java