Debezium 博客
去年我第一次了解到 Debezium 项目时,我立刻感到非常兴奋。
我看到了这个项目将对许多人有多么有用,我对它专业的设计方式印象深刻:一个基于 Apache Kafka 的强大的变更数据捕获架构,在发生故障时也着重于健壮性和正确性,总体目标是创建一个多样化的 CDC 连接器生态系统。所有这一切都基于开源原则,从一开始就提供了广泛的文档,一个友好且受欢迎的网站,以及出色的入门体验。
所以您可以想象,我对有机会接任 Debezium 的项目负责人一职感到非常兴奋。Debezium 和 CDC 与我之前参与的一些数据中心项目有着紧密的联系,也与我一直在研究的 CQRS、事件溯源和反规范化等理念相关。作为 Hibernate 团队 在 Red Hat 的核心成员,我为 Hibernate Search(处理通过 JPA/Hibernate 进行全文索引更新)实现了最初的 Elasticsearch 支持。我还为 Hibernate OGM 做出了贡献——这是一个将 JPA 与 NoSQL 世界连接起来的项目。OGM 的计划之一是创建一个声明式的反规范化引擎,用于创建针对特定用例优化的读取模型。看到它如何与 Debezium 提供的功能协同工作将非常有趣。
在2016年初我开始 Debezium 项目之前不久,Martin Kleppmann 发表了关于“将数据库内部颠倒”的几次演讲,以及他的Bottled Water 项目如何展示了变更数据捕获在利用 Kafka 进行流处理方面的重要性。随后,Kafka Connect 被宣布,在那时,对我来说,Kafka Connect 似乎是构建实用且可重用变更数据捕获的基础。随着这些技术和方法对于Red Hat 变得越来越重要,我获得了机会,开始了一个新的开源项目和社区,围绕着为各种数据库管理系统构建强大的 CDC 连接器。
在过去的几年里,我们为 MySQL、然后是 MongoDB,最近是 PostgreSQL 创建了 Kafka Connect 连接器。每个连接器最初都是有限的,并且存在一些问题和缺陷,但随着时间的推移,越来越多的人尝试使用这些连接器,提出问题,回答问题,在 Twitter 上提及 Debezium,在他们自己的环境中测试连接器,报告问题,修复 bug,讨论限制和潜在的新功能,实现增强功能和新功能,改进文档,并撰写博客文章。简而言之,具有相似需求和兴趣的人们一起工作,形成了一个社区。目前正在开发 Oracle 和 SQL Server 的附加连接器,但若要加快进度,还需要一些帮助。
看到我们已经取得了如此大的进步,以及 Debezium 社区如何不断发展和壮大,这真是令人兴奋。现在也许是时候将接力棒交给别人了。事实上,在 Red Hat 工作了近 10 年的美好时光后,我将做出一个更大的改变,从今天起,我将成为 Confluent 工程团队的一员,我预计将在更广泛的 Kafka 社区中发挥更积极的作用,并更直接地参与 Kafka Connect 和 Kafka Streams。我 **绝对** 计划继续参与 Debezium 社区,但我将不再领导该项目。这个角色将由 Gunnar Morling 接任,他最近加入了 Debezium 社区,但在开源、Hibernate 社区和Bean Validation 规范方面拥有丰富的经验。Gunnar 是个很棒的人,也是一个出色的开发者,他将成为 Debezium 社区的优秀领导者。
我们很高兴地宣布Debezium 0.5.0现已可与Kafka Connect 0.10.2.0一起使用。此版本还包括对MySQL 连接器的一些修复。有关这些更改的详细信息,请参阅发行说明,并务必查看Kafka 文档以了解与您正在使用的 Kafka broker 版本的兼容性。
Kafka Connect 0.10.2.0 带来了一个名为单消息转换(Single Message Transforms)的重要新功能,现在您可以将其与 Debezium 连接器一起使用。SMT 允许您在消息写入 Kafka 之前修改由 Debezium 连接器和任何其他 Kafka Connect 源连接器生成的消息。SMT 也可以与 Kafka Connect sink 连接器一起使用,在 sink 连接器处理消息之前修改它们。您可以使用 SMT 来过滤掉或屏蔽特定字段,添加新字段,修改现有字段,更改消息写入的主题和/或主题分区,甚至更多。您甚至可以将多个 SMT 链接在一起。
Kafka Connect 附带了许多内置 SMT,您可以直接配置和使用它们,但您也可以创建自己的 SMT 实现来执行更复杂和有趣的操作。例如,尽管 Debezium 连接器通常将每个表(或集合)中的所有更改映射到单独的主题,但您可以编写一个自定义 SMT,它使用表和主题之间完全不同的映射,甚至向消息键和/或值添加字段。使用新的 SMT 也非常简单 - 只需将其放在 Kafka Connect 类路径中,并更新连接器配置以使用它。
我们还添加了标记为 0.5 和 latest 的Debezium Docker 镜像,我们在教程中使用它们。
感谢 Sanjay 和社区中的所有人为此版本、问题、讨论、贡献和提问提供的帮助!
我们很高兴地宣布,**Debezium 0.4.1** 现在可以与 Kafka Connect 0.10.1.1 一起使用。此版本包含对 MongoDB 连接器 和 MySQL 连接器 的几项修复,包括对 Amazon RDS 和 Amazon Aurora (MySQL 兼容性) 的改进支持。有关这些更改的详细信息,请参阅 发行说明。
我们还更新了标记为 0.4 和 latest 的 Debezium Docker 镜像,我们在 教程 中使用了这些镜像。
感谢 Jan、Horia、David、Josh、Johan、Sanjay、Saulius 以及社区中的每个人,感谢他们在此次发布、问题、讨论、贡献和提问方面的帮助!