我很高兴地宣布 Debezium 1.6.0.CR1 的发布!
此版本为 SQL Server 连接器增加了跳过的操作优化,为 Oracle 连接器引入了心跳支持,Oracle BLOB/CLOB 支持现在仅为可选,并为不同的 Debezium 连接器提供了一系列错误修复和其他改进。
跳过操作优化 - SQL Server
Debezium 在一段时间前引入了 skipped.operations 的概念。此功能允许连接器在流式传输阶段控制发出哪些变更事件,可以选择性地省略某些变更类型,例如更新或删除。
skipped.operations 功能最初被实现为类似于 SMT(结构化消息转换),它是一个在 CDC 管道的最后阶段,在事件发出之前应用的过滤器。虽然这效果不错,但可以在此实现优化,因为 SQL Server 会在捕获表中记录变更类型以及变更数据。利用这一知识,调整了从捕获表中获取变更的查询,以便从 SQL Server 返回的变更可以基于这些“跳过操作”进行预过滤。
总而言之,此优化应该可以提高连接器在配置为使用 skipped.operations 时捕获变更的迭代期间所花费的时间,并且由于生成的对象减少而被丢弃,从而减少了连接器在其生命周期内可能进行的总体垃圾回收。
非常感谢 Hossein Torabi 识别出此优化并为此做出了贡献!
Oracle 连接器的心跳支持
Debezium 在其其他连接器中支持心跳,现在 Oracle 也可用此功能了!
心跳是确保连接器的偏移量与 Kafka 同步的关键部分。通常,当我们向主题发出事件时,偏移量会自动由 Kafka Connect 维护。但有些情况下,事件发出的频率可能不够高,导致旧的偏移量成为一个问题。
无论 Debezium Oracle 连接器使用哪个适配器,在某些情况下,连接器会看到事件并更新内存中的偏移量状态,但由于我们没有向 Kafka 发出事件,因此偏移量并未同步到 Kafka Connect。一个很好的例子是当连接器捕获的表与其他数据源中的表相比变化非常不频繁时。
为了确保在低捕获活动期间偏移量与 Kafka Connect 保持同步,可以通过设置 heartbeat.interval.ms 配置选项来定期同步偏移量。
Oracle BLOB/CLOB 支持现已选择加入
虽然我们在早期的 1.6 预发布版本中为 Debezium Oracle 连接器添加了对 BLOB 和 CLOB 数据类型的支持,但我们认为这项工作的全面支持仍在进行中。
连接器在处理 BLOB 和 CLOB 字段时会产生一定的开销。包含这些数据类型的事务需要在提交时进行协调,将某些事件合并为单个逻辑发出的事件。此外,LOB 数据类型需要在事件发出时为其值占用一定的内存空间。更重要的是,由于数据大小,用户可能根本不想发出 LOB 数据。
因此,Oracle 连接器对 LOB 数据类型的支持现已成为选择加入的功能。这意味着开箱即用时,连接器不会尝试捕获 LOB 列数据。如果连接器需要捕获 LOB 列,则必须将连接器选项 lob.enabled 设置为 true,以便连接器可以拾取并处理这些列类型。
最后,我们还认为,由于 BLOB 和 CLOB 支持仍有一些正在进行的工作,因此在短期内将 LOB 支持标记为孵化阶段是合理的,直到我们认为解决方案已经成熟。我们强烈鼓励想要捕获基于 LOB 的列的用户启用 LOB 支持并进行试用,并提供任何和所有反馈(无论好坏),以便我们能够继续改进对 LOB 列的支持。
进一步的改进和错误修复
随着 Quarkus 2.0.0.Final 的发布,Quarkus Outbox 扩展现在基于 Quarkus 2.0(DBZ-3602)。
总而言之,Debezium 1.6.0.CR1 中已解决 27 个问题。我们非常感谢所有为本次发布做出贡献的社区成员!
Bob Roldan、Camile Sing、Chris Cranford、Derek Moore、Gunnar Morling、Hossein Torabi、Hyunjin Oh、Jakub Cechacek、JapuDCret、Jiri Pechanec 和 Sergei Morozov!
随着 CR1 的发布,我们正接近 1.6 发布周期的稳定阶段。您可能会看到另一个 CR(候选版本),之后是最终版本,计划在本月底发布,除非出现任何不可预见的并发症。除了更多错误修复和文档改进之外,我们还打算升级到 Apache Kafka 2.8,这将使您能够一睹使用 Debezium 和无 ZooKeeper 的 Kafka 的风采!
同时,我们将致力于 Debezium 1.7 的路线图(计划于九月底发布)。如果您对本次发布有特定的功能请求,请通过邮件列表与我们联系!
关于 Debezium
Debezium 是一个开源的分布式平台,可以将现有数据库转变为事件流,使应用程序能够几乎即时地看到并响应数据库中已提交的每个行级更改。Debezium 构建在 Kafka 之上,并提供了 Kafka Connect 兼容的连接器,用于监控特定的数据库管理系统。Debezium 将数据更改的历史记录在 Kafka 日志中,这样您的应用程序可以随时停止和重新启动,并可以轻松地消费在未运行时错过的所有事件,确保所有事件都被正确且完整地处理。Debezium 在 Apache 许可证 2.0 下是 开源 的。