CDC (捕获数据变化) Debezium 介绍 | 首席架构师

标签: | 发表时间:2021-07-24 22:58 | 作者:
出处:http://jiagoushi.pro

Debezium是什么?

Debezium是一个分布式平台,它将您现有的数据库转换为事件流,因此应用程序可以看到数据库中的每一个行级更改并立即做出响应。Debezium构建在Apache Kafka之上,并提供Kafka连接兼容的连接器来监视特定的数据库管理系统。Debezium在Kafka日志中记录数据更改的历史,您的应用程序将从这里使用它们。这使您的应用程序能够轻松、正确、完整地使用所有事件。即使您的应用程序停止(或崩溃),在重新启动时,它将开始消耗它停止的事件,因此它不会错过任何东西。

Debezium架构

最常见的是,Debezium是通过Apache Kafka连接部署的。Kafka Connect是一个用于实现和操作的框架和运行时

  • 源连接器,如Debezium,它将数据摄取到Kafka和
  • 接收连接器,它将数据从Kafka主题传播到其他系统。

下图显示了一个基于Debezium的CDC管道的架构:

「技术架构」CDC (捕获数据变化) 捕获数据变化介绍

 

除了Kafka代理本身之外,Kafka Connect是作为一个单独的服务来操作的。部署了用于MySQL和Postgres的Debezium连接器来捕获这两个数据库的更改。为此,两个连接器使用客户端库建立到两个源数据库的连接,在使用MySQL时访问binlog,在使用Postgres时从逻辑复制流读取数据。

默认情况下,来自一个捕获表的更改被写入一个对应的Kafka主题。如果需要,可以在Debezium的主题路由SMT的帮助下调整主题名称,例如,使用与捕获的表名不同的主题名称,或者将多个表的更改转换为单个主题。

一旦更改事件位于Apache Kafka中,来自Kafka Connect生态系统的不同连接器就可以将更改流到其他系统和数据库,如Elasticsearch、数据仓库和分析系统或Infinispan等缓存。根据所选的接收连接器,可能需要应用Debezium的新记录状态提取SMT,它只会将“after”结构从Debezium的事件信封传播到接收连接器。

嵌入式引擎

使用Debezium连接器的另一种方法是嵌入式引擎。在这种情况下,Debezium不会通过Kafka Connect运行,而是作为一个嵌入到定制Java应用程序中的库运行。这对于在应用程序内部使用更改事件非常有用,而不需要部署完整的Kafka和Kafka连接集群,或者将更改流到其他消息传递代理(如Amazon Kinesis)。您可以在示例库中找到后者的示例。

Debezium特性

Debezium是Apache Kafka Connect的一组源连接器,使用change data capture (CDC)从不同的数据库中获取更改。与其他方法如轮询或双写不同,基于日志的CDC由Debezium实现:

  • 确保捕获所有数据更改
  • 以非常低的延迟(例如,MySQL或Postgres的ms范围)生成更改事件,同时避免增加频繁轮询的CPU使用量
  • 不需要更改数据模型(如“最后更新”列)
  • 可以捕获删除
  • 可以捕获旧记录状态和其他元数据,如事务id和引发查询(取决于数据库的功能和配置)

要了解更多关于基于日志的CDC的优点,请参阅本文。

Debezium的实际变化数据捕获特性被修改了一系列相关的功能和选项:

  • 快照:可选的,一个初始数据库的当前状态的快照可以采取如果连接器被启动并不是所有日志仍然存在(通常在数据库已经运行了一段时间和丢弃任何事务日志不再需要事务恢复或复制);快照有不同的模式,请参考特定连接器的文档以了解更多信息
  • 过滤器:可以通过白名单/黑名单过滤器配置捕获的模式、表和列集
  • 屏蔽:可以屏蔽特定列中的值,例如敏感数据
  • 监视:大多数连接器都可以使用JMX进行监视
  • 不同的即时消息转换:例如,用于消息路由、提取新记录状态(关系连接器、MongoDB)和从事务性发件箱表中路由事件

有关所有受支持的数据库的列表,以及关于每个连接器的功能和配置选项的详细信息,请参阅连接器文档。

原文:https://debezium.io/documentation/reference/0.10/features.html


相关 [cdc 数据 变化] 推荐:

CDC (捕获数据变化) Debezium 介绍 | 首席架构师

- -
Debezium是一个分布式平台,它将您现有的数据库转换为事件流,因此应用程序可以看到数据库中的每一个行级更改并立即做出响应. Debezium构建在Apache Kafka之上,并提供Kafka连接兼容的连接器来监视特定的数据库管理系统. Debezium在Kafka日志中记录数据更改的历史,您的应用程序将从这里使用它们.

Flink 如何实时分析 Iceberg 数据湖的 CDC 数据

- - 掘金 后端
本文由李劲松、胡争分享,社区志愿者杨伟海、李培殿整理. 主要介绍在数据湖的架构中,CDC 数据实时读写的方案和原理. 文章主要分为 4 个部分内容:. 常见的 CDC 分析方案. 为何选择 Flink + Iceberg. 一、常见的 CDC 分析方案. 我们先看一下今天的 topic 需要设计的是什么.

基于 Flink SQL CDC 的实时数据同步方案 (developer.aliyun.com)

- - IT瘾-jianshu
整理:陈政羽(Flink 社区志愿者). Flink 1.11 引入了 Flink SQL CDC,CDC 能给我们数据和业务间能带来什么变化. 本文由 Apache Flink PMC,阿里巴巴技术专家伍翀 (云邪)分享,内容将从传统的数据同步方案,基于 Flink CDC 同步的解决方案以及更多的应用场景和 CDC 未来开发规划等方面进行介绍和演示.

用Flink SQL CDC + ES实现数据实时化真香!

- -
本人目前参与的项目属于公司里面数据密集、计算密集的一个重要项目,需要提供高效且准确的 OLAP 服务,提供灵活且实时的报表. 业务数据存储在 MySQL 中,通过主从复制同步到报表库. 作为集团级公司,数据增长多而且快,出现了多个千万级、亿级的大表. 为了实现各个维度的各种复杂的报表业务,有些千万级大表仍然需要进行 Join,计算规模非常惊人,经常不能及时响应请求.

Flink CDC 如何简化实时数据入湖入仓

- - Jark's Blog
一、Flink CDC 介绍. 从广义的概念上讲,能够捕获数据变更的技术, 我们都可以称为 CDC 技术. 通常我们说的 CDC 技术是一种用于捕获数据库中数据变更的技术. CDC 技术应用场景也非常广泛,包括:. 数据分发,将一个数据源分发给多个下游,常用于业务解耦、微服务. 数据集成,将分散异构的数据源集成到数据仓库中,消除数据孤岛,便于后续的分析.

CDC环青海湖骑行之旅

- Yaping - 腾讯CDC
草原高高,湖水碧蓝,大漠灿黄,雪山皑皑,油菜花那个真的是木有边际…. 插上耳机,点开音乐来欣赏吧~. CDC的逍遥骑士们一路颠簸,来到了海拔3197m的青海湖,开始了全程近380km的自行车环湖之旅. 对于没有高原骑行经验的我们来说,一切状况都是未知数……但始终心里期待的还是无限的美景. 一开始还看不到湖,不过大家都很兴奋.

Flink CDC 核心:Debezium 1.9.0.Beta1 发布!

- - IT瘾-dev
我很高兴地宣布 Debezium  1.9.0.Beta1的发布. 此版本包括 Debezium Server 的许多新功能,包括 Knative Eventing 支持和使用 Redis 接收器的偏移存储管理、SQL Server 连接器的多分区缩放以及各种错误修复和改进. 总体而言,此版本已修复56 个问题.

Flink CDC 高频面试 13 问

- - IT瘾-dev
大家好,今天分享一篇土哥的文章. Flink cdc 2.1.1 发布后,更新了很多新功能以及知识点,今天为大家全面总结了 CDC 的知识点如 无锁算法及面试高频考点. 2 Flink cdc 2.1.1 新增内容. 获取本文文档,直接在公众号后台回复: CDC,加土哥微信,领取 Flink CDC 2.2.1 总结文档.

《CDC—UEDC交互设计交流会》后记

- Millie - 网易用户体验设计中心博客
5月20日,网易UEDC非常有幸地请来了几位重要级的客人,腾讯CDC交互设计同行. 在一天中分为上下半场的交流会中,双方主要围绕了交互设计的话题,在设计流程,工作效率,设计规范,设计师技能水平,以及大家都饶有兴趣的微创新的进行了一些细致的讨论和意见的交换. 凭心而论,作为这个国内这个行业的一名普通的交互设计师,当你有机会能够与标叔这样前辈面对面诚挚的交流时,你应该会很难抑制心中的期望.