暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

debezium系列-初识debezium

程序学社 2022-05-25
5741

debezium是什么?

debeizum
是一组由RedHat开源用于捕获源数据库中行级数据更新,形成数据流程输出的分布式服务,你的应用可以对关心的数据进行订阅和处理,并且按照事情发生的顺序进行捕获。同类产品有Canal, DataBus, Maxwell。

tips: debezium名字来源于DBs
加上-ium
后缀,连起来读就是debezium

debezium的架构

  • 你可以使用debezium官方提供的source connector,部署到apache kafka connect中,debezium的connector捕获到源数据库数据更新,发送到kafka集群中,利用kafka connect提供的sink connector,将数据同步到其他数据库,数据仓库,elasticsearch等存储介质中。
  • 上图中是采集mysql的binlog日志,采集PostgreSQL的副本流。采集到的数据默认一个表一个kafka topic,也可以指定topic名,甚至可以将多个表的数据投递到一个topic中,这部分涉及到topic route transformation
    ,后面会有专门的章节进行介绍。

tips: 基于这种方式,debezium connector提供了at least once的消息,如果使用flink cdc或者flink SQL等工具,需要做好幂等工作。

  • 也可以部署一个随时开箱即用的debezium server服务,可以理解这个服务处理了source数据的采集,然后同步到不同的数据存储介质中。官方建议采用第一点提到的将debezium connector部署到kafka connect中。
  • debezium connectors是个内嵌引擎,可以不用跑在kafka connect,可以作为一个lib依赖集成到自己的java应用中,直接消费捕获的数据更新事件,这样的方式不依赖kafka。

kafka connect是什么?

kafka connect是一个用于在kafka和其他系统之间可伸缩,可靠的流数据的框架,利用其提供的source connector和sink connector,它让将数据和kafka之间同步变得简单,框架完成了正确记录conector offset的工作。kafka connect提速了restful api来管理和部署连接器。debezium使用kafka connect服务,本质上debezium connector就是kafka connect的source connector,也提供部署和管理kafka connect服务的功能。

debezium的使用场景

debezium可以几乎实时捕获数据更新事件,包括记录创建,更新,删除和表结构变更。在缓存+数据库的双写系统中,监听到数据的更新事件,我们可以知道什么时候更新缓存中的数据,也可以更新搜索引擎中索引的数据,保证了后续查询的正确性。也可以进行数据同步,比如将mysql数据同步至数仓中等cdc场景。

CDC是什么?

CDC全名是change data capture,意为数据变更捕获,是捕获和监控数据变化以用于其他系统进行业务处理的系统,数据仓库通常具有内置的CDC支持,因为上游OLTP数据库中的数据发生变更时,数据仓库需要保持最新的数据。debezium本质上就是这样一个分布式的开源变更数据捕获平台,它对多种数据库系统都支持。

debezium可以监控哪些类型的数据库?

debezium可以通过监听binlog的方式监听mysql服务,通过监听mongodb副本变化或者集群分片的方式监听mongodb,也可以监听PostgreSQL和SQL Server,另外也支持oracle, db2, cassandra和vitess,基本上支持当前主流的数据库,采集到事件投递到kafka中,可以是json,也可以是avro格式的,在flink sql中很好的支持debezium-json,可以直接将kafka中数据作为source,经过简单处理就能同步目标数据存储介质中。

后续章节专门介绍transformation, mysql connector的常用配置,kafka SMT等内容


文章转载自程序学社,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论