今天我非常高兴地宣布 Debezium 1.0.0.Final 的可用性!
自 2015 年 11 月 首次提交以来,Debezium 社区一直在不懈努力,以实现构建全面的开源低延迟变更数据捕获 (CDC) 平台,支持各种数据库。
在这四年中,Debezium 的功能集得到了极大的增长:为 MySQL、Postgres、MongoDB 和 SQL Server 提供稳定、高度可配置的 CDC 连接器,为 Apache Cassandra 和 Oracle 提供孵化器连接器,提供转换和路由变更数据事件的设施,支持诸如 outbox 模式之类的设计模式,以及更多。一个非常活跃且受欢迎的用户、贡献者和提交者社区围绕该项目形成。Debezium 在许多不同行业的组织中得到生产部署,其中一些安装规模巨大,使用数百个连接器从数千个数据库流式传输数据变更。
1.0 版本标志着项目的一个重要里程碑:基于我们从 0.x 版本用户那里获得的所有生产反馈,我们认为是时候在版本号中也体现出四个稳定连接器的成熟度了。
为什么选择 Debezium?
Debezium 作为一种变更数据捕获工具,其多样化的潜在用例使我们工作起来非常愉快。在会议上介绍这个项目时,看到人们在意识到 Debezium 和 CDC 所带来的各种可能性后迅速兴奋起来,这真是太棒了。
简而言之,Debezium 是一个强大的赋能者,可以让你低延迟地响应数据变更。或者,正如一位会议听众最近所说,它“就像观察者模式,但适用于你的数据库”。
以下是我们看到 Debezium 被用作数据流管道中摄取组件的一些应用场景:
-
将数据从生产数据库复制到其他数据库和数据仓库
-
向 Elasticsearch 或 Apache Solr 等搜索服务提供数据
-
更新或使缓存失效
当将 Debezium 与 Apache Kafka 及其丰富的 Sink 连接器生态系统一起使用时,无需任何编码即可设置此类集成,只需在 Kafka Connect 中部署和配置连接器即可。
但是,CDC 的用例远不止于将数据从 A 传输到 B。当引入流处理时,例如通过 Kafka Streams 或 Apache Flink,CDC 使你能够运行 时间窗口流式查询,这些查询会随着你的操作数据变化而持续更新(“过去一小时内每个类别的聚合订单收入是多少”)。你可以使用 CDC 构建数据审计日志,记录谁在何时更改了哪些数据项。或者为了高效的数据检索,遵循 CQRS(命令查询责任分离)模式,更新数据的反规范化视图。
最后,CDC 在微服务架构中也扮演着至关重要的角色;服务之间的数据交换和维护其他服务所拥有的数据的本地视图,可以提高独立性,而无需依赖同步 API 调用。在此背景下,一种特别有趣的方法是 Outbox 模式,该模式 得到 Debezium 的良好支持。如果你不是从零开始(谁会呢?),CDC 可用于实现 Strangler 模式,以从单体设计迁移到微服务。
你可以在 这次 QCon 旧金山会议的演示文稿 中了解更多关于 Debezium 和 Apache Kafka 的变更数据捕获用例。
你不必只听我们说:你可以在我们编译的 资源 中找到许多博客文章、会议演讲和生产环境中使用 Debezium 的示例。如果你想了解其他人也在使用 Debezium,请查看我们不断增长的 用户列表(如果你的组织已在生产环境中使用 Debezium,请给我们发送 Pull Request 来添加你的名字)。
Debezium 1.0
现在,让我们来谈谈 1.0 版本的内容。
此版本延续了我们在 0.10 版本中开始的工作,以确保发出的事件结构和连接器的配置选项是正确且一致的。虽然我们一直非常谨慎地确保平滑的升级体验,但在 1.0 版本发布后,你可以期待在这方面获得更高的稳定性。
我们扩展了数据库的测试覆盖范围(Postgres 12、SQL Server 2019、MongoDB 4.2),将我们的容器镜像升级到 OpenJDK 11,现在构建基于最新版本的 Apache Kafka(2.4.0;早期版本也继续支持)。最重要的是,我们还修复了大量的 Bug。总而言之,在 Debezium 1.0 及其预览版本(Beta1、Beta2、Beta3、CR1)中,共解决了 96 个问题。
如果你目前使用的是 0.10 版本,升级基本上是一个即插即用式的替换。如果是从早期版本升级,请务必阅读 发布说明,了解已弃用的选项、升级过程等信息。
最重要的部分:Debezium 社区
没有社区的贡献者和用户,Debezium 就不可能存在。我无法表达我有多么感激有机会成为这个出色社区的一员,与来自世界各地的人们一起,朝着我们共同的目标——构建领先的开源变更数据捕获解决方案——而努力。
目前,已有约 150 人为不同的 Debezium 代码仓库做出了贡献(如果您发现遗漏了任何人,请告知我)。
Aaron Rosenberg, Addison Higham, Adrian Kreuziger, Akshath Patkar, Alexander Kovryga, Amit Sela, Andreas Bergmeier, Andras Istvan Nagy, Andrew Garrett, Andrew Tongen, Andrey Pustovetov, Anton Martynov, Arkoprabho Chakraborti, artiship, Ashhar Hasan, Attila Szucs, Barry LaFond, Bartosz Miedlar, Ben Williams, Bin Li, Bingqin Zhou, Braden Staudacher, Brandon Brown, Brandon Maguire, Cheng Pan, Ching Tsai, Chris Cranford, Chris Riccomini, Christian Posta, Chuck Ha, Cliff Wheadon, Collin Van Dyck, Cyril Scetbon, David Chen, David Feinblum, David Leibovic, David Szabo, Deepak Barr, Denis Mikhaylov, Dennis Campagna, Dennis Persson, Duncan Sands, Echo Xu, Eero Koplimets, Emrul Islam, Eric S. Kreiseir, Ewen Cheslack-Postava, Felix Eckhardt, Gagan Agrawal, Grant Cooksey, Guillaume Rosauro, Gunnar Morling, Gurnaaz Randhawa, Grzegorz Kołakowski, Hans-Peter Grahsl, Henryk Konsek, Horia Chiorean, Ian Axelrod, Ilia Bogdanov, Ivan Kovbas, Ivan Lorenz, Ivan Luzyanin, Ivan San Jose, Ivan Vucina, Jakub Cechacek, Jaromir Hamala, Javier Holguera, Jeremy Finzel, Jiri Pechanec, Johan Venant, John Martin, Jon Casstevens, Jordan Bragg, Jork Zijlstra, Josh Arenberg, Josh Stanfield, Joy Gao, Jure Kajzer, Keith Barber, Kevin Pullin, Kewen Chao, Krizhan Mariampillai, Leo Mei, Lev Zemlyanov, Listman Gamboa, Liu Hanlin, Luis Garcés-Erice, Maciej Bryński, MaoXiang Pan, Mario Mueller, Mariusz Strzelecki, Matteo Capitanio, Mathieu Rozieres, Matthias Wessendorf, Mike Graham, Mincong Huang, Moira Tagle, Muhammad Sufyian, Navdeep Agarwal, Nikhil Benesch, Olavi Mustanoja, Oliver Weiler, Olivier Lemasle, Omar Al-Safi, Ori Popowski, Orr Ganani, Peng Lyu, Peter Goransson, Peter Larsson, Philip Sanetra, Pradeep Mamillapalli, Prannoy Mittal, Preethi Sadagopan, pushpavanthar, Raf Liwoch, Ram Satish, Ramesh Reddy, Randall Hauch, Renato Mefi, Roman Kuchar, Sagar Rao, René Kerner, Rich O’Connell, Robert Coup, Sairam Polavarapu, Sanjay Kr Singh, Sanne Grinovero, Satyajit Vegesna, Saulius Valatka, Scofield Xu, Sherafudheen PM, Shivam Sharma, Shubham Rawat, Stanley Shyiko, Stathis Souris, Stephen Powis, Steven Siahetiong, Syed Muhammad Sufyian, Tautvydas Januskevicius, Taylor Rolison, Theofanis Despoudis, Thomas Deblock, Tom Bentley, Tomaz Lemos Fernandes, Tony Rizko, Wang-Yu-Chao, Wei Wu, WenZe Hu, William Pursell, Willie Cheong, Wout Scheepers, Yang Yang, Zheng Wang
你们太棒了,我衷心感谢你们中的每一个人!我相信我们的社区未来会继续壮大——我希望我们能在 2020 年达到 200 名贡献者的目标。
我们的用户同样重要;与你们在聊天、邮件列表或会议上互动,有助于推动项目的发展方向:了解你们的具体需求和用例(或遇到的 Bug)对于决定下一步的重点至关重要。也非常感谢你们!
你们中的一些人甚至通过会议演讲和博客文章分享了他们使用 Debezium 的经验。没有什么比听取别人的“战报”并从中学习经验更重要的了,所以你们分享关于 Debezium 和 CDC 的见解非常有帮助,也非常感激!
下一步是什么?
让我们用对 Debezium 未来计划的展望来结束这篇帖子。
在经历了一些久违的假期后,我们计划在一月份开始 Debezium 1.1 的工作。你们可以期待的一些潜在新特性包括:
-
对 CloudEvents 规范的支持,作为一种可移植的事件格式
-
用于实现 Outbox 模式的 Quarkus 扩展
-
独立的 Debezium 服务器,允许你将数据变更事件流式传输到 Amazon Kinesis 等消息基础设施
-
将事务边界暴露到单独主题的机制,允许聚合来自一个源事务的所有事件,并一次性处理它们
-
社区驱动的 Oracle 和 Apache Cassandra 的孵化连接器将进一步发展
当然,这个路线图在很大程度上受到社区(也就是你们)的影响。所以,如果你希望看到这里的任何特定项,请让我们知道。
我们还在准备一些激动人心的博客文章,例如关于如何将 Debezium 与全新的 Kafka Connect Apache Camel 连接器结合使用,或者如何在 Kafka Streams 中使用最近添加的非 Key Join 支持(KIP-213)来处理 Debezium 变更事件。
另一件让我非常激动的事情是,Debezium 已成为 Red Hat Integration 产品的一个受支持的组件。当前版本的一部分是针对 MySQL、Postgres、SQL Server 和 MongoDB 的变更数据捕获连接器的 技术预览。这对希望获得 Red Hat 对其 CDC 连接器商业支持的人来说是个好消息。
现在,让我们庆祝 Debezium 1.0 的发布,并期待 2020 年的精彩。
继续前进,不断向上!
关于 Debezium
Debezium 是一个开源的分布式平台,可以将现有数据库转变为事件流,使应用程序能够几乎即时地看到并响应数据库中已提交的每个行级更改。Debezium 构建在 Kafka 之上,并提供了 Kafka Connect 兼容的连接器,用于监控特定的数据库管理系统。Debezium 将数据更改的历史记录在 Kafka 日志中,这样您的应用程序可以随时停止和重新启动,并可以轻松地消费在未运行时错过的所有事件,确保所有事件都被正确且完整地处理。Debezium 在 Apache 许可证 2.0 下是 开源 的。