我很荣幸地宣布Debezium的发布开云体育官方注册网址1.1.0.CR1

这个版本带来了一个全新的API模块,包括覆盖特定列的模式和值转换的功能。Postgres连接器获得了在连接丢失后重新连接到数据库的能力,MongoDB连接器现在支持从其他连接器获得的指标。开云体育电动老虎机

Debe开云体育官方注册网址zium API模块

在大多数情况下,Debezi开云体育官方注册网址um用户不会通过编程方式与Debezium交互,而是通过Kafka Connect配置和部署不同的连接器。不过也有一些例外,最著名的就是Debezium开云体育官方注册网址嵌入式引擎.此外,我们还通过添加用于自定义模式和值的s开云体育官方注册网址pi(见下文)来扩展Debezium。这就提出了一个问题,Debezium中的哪些包和类是供用户公开访问的,哪些不是。开云体育官方注册网址

为了澄清Debezium的公共Java API与其内部实现包开云体育官方注册网址之间的分歧,引入了一个新的API模块。对于编译,用户代码应仅依赖于此模块,而开云体育官方注册网址debezium-embedded开云体育官方注册网址debezium-core工件应该是运行时依赖项。

例如,以下设置应该用于Apache Maven:

< >的依赖< groupId >io.开云体育官方注册网址debezium< / groupId >< artifactId >开云体育官方注册网址debezium-api< / artifactId ><版本>$ {version开云体育官方注册网址.debezium}> < /版本< / >的依赖< >的依赖< groupId >io.开云体育官方注册网址debezium< / groupId >< artifactId >开云体育官方注册网址debezium-embedded< / artifactId ><版本>$ {version开云体育官方注册网址.debezium}> < /版本< >范围运行时< / >范围< / >的依赖

虽然API模块将确保向后兼容的演进,但实现模块中的破坏性更改可能在任何时候进行。因此,您应该确保您的应用程序代码不依赖于这些。

随着API模块的引入,嵌入式引擎的引导API也被重做了。

开云体育官方注册网址DebeziumEngine engine = DebeziumEngine.create(Connect.class) .using(config) .notifying(record -> {系统.out.println(记录);}) .build ();

事件处理程序仍然接收Kafka ConnectSourceRecord类型,但未来我们还将支持使用其他表示形式(如JSON或Avro)的事件处理程序。

模式和值自定义SPI

在聊天和邮件列表中反复出现的一个问题是如何自定义特定更改事件字段的模式和值。例如,您可能希望将时态列值导出为特定格式的字符串,而不是默认表示形式(表示从epoch开始的毫秒的长值)。这个问题的答案是为Kafka Connect实现自定义消息转换(SMT)。由于它们在吞吐量方面会增加一些开销(特别是在处理更复杂的模式时),因此我们向Debezium本身添加了一个新的扩展点,它允许您覆盖捕获表的特定列的模式和值转换。开云体育官方注册网址

例如,可以实现以下转换器来导出Postgres国际标准图书编号列值具有特定的逻辑字段类型“isbn”,而不是默认的“string”模式:

公共IsbnConverter实现了CustomConverter< schemabilder, RelationalColumn> {私人SchemaBuilder isbnSchema;//可以在这里计算配置@Override公共无效配置(属性props) {isbnSchema = SchemaBuilder.string().name(国际标准图书编号);}@Override公共无效converterFor(RelationalColumn列,ConverterRegistration注册){//为isbn列注册自定义模式和值转换如果国际标准图书编号.equals(column.typeName())){注册。寄存器(isbnSchema, x -> x.toString());}}}

为了使用这种自定义转换器,编译它并将JAR添加到连接器的插件目录中。配置如下:

转换器= isbn isbn.type = com.example.IsbnConverter根据需要自定义选项isbn.foo=bar

其他特性和更改

MongoDB连接器已经迁移到我们已经开始为SQL Server和Oracle连接器开发的通用CDC连接器框架。这将极大地简化代码库的维护,因为许多横切特性可以在一个中心位置实现。例如,MongoDB连接器现在支持您已经可以在关系连接器中使用的指标(dbz - 845),允许您监视生产中的连接器。

Postgres连接器现在支持在数据库连接丢失的情况下自动重新连接(开云体育电动老虎机dbz - 1723).同样,这在很大程度上是作为通用工具实现的,Postgres连接器是第一个使用此功能的连接器。我们已经看到越来越多的Postgres在特定环境中断开连接的报告,这就是为什么我们决定将它作为第一个支持重新连接的连接器。

将更改事件流式传输到其他关系数据库时,开云体育电动老虎机column.propagate.source.type连接器选项可以方便地将列定义传播为模式标头。到目前为止,这是为每个单独的列配置的;在这个版本中,可以为列类型全局地设置这个选项,从而大大减少了在处理应该导出模式信息的特定类型的许多列时的配置需求(dbz - 1830).

MongoDB用户的另一个改进是支持在更新和删除事件中导出关于分片键的信息(dbz - 1781).

和往常一样,很多bug也被修复了。总的来说,44个问题为Debezium 1.1.0.CR1开云体育官方注册网址寻址。详情请参阅发布说明欲知详情。

像Debezium这样的开源项目如果没有它的贡献者社区就开云体育官方注册网址什么都不是。以下人员对本次发布做出了贡献:艾伦Zhangzf法比奥Cantarini侯赛因TorabiJanHendrikDolling约翰伯爵劳尔在坠毁Ruslan Gibaiev.谢谢你们每一个人!

随着CR1发行版的完成,Debezium 1.1 Final的发布时间不会太长。开云体育官方注册网址根据这个候选发行版中发现的问题,我们可能会发布CR2发行版,随后不久发布最终版。有关未来版本的计划,请参阅路线图让我们知道你的要求。我们的总体计划是采用季度小版本发布的节奏,也就是说,Debezium 1.2将在三个月内发布,1.3将在第三季度发布,以此类推。开云体育官方注册网址

贡纳Morling

Gunnar是Decodable的软件工程师,也是一名不折不扣的开源爱好者。多年来,他一直是Debezium的项目负责人。开云体育官方注册网址Gunnar创建了kcctl、JfrUnit和MapStruct等开源项目,并且是Bean验证2.0 (JSR 380)的规范负责人。他在德国汉堡工作。


关于Debe开云体育官方注册网址zium

开云体育官方注册网址Debezium是一个开源的分布式平台,它将现有数据库转换为事件流,因此应用程序几乎可以立即看到并响应数据库中提交的每一个行级更改。开云体育电动老虎机开云体育官方注册网址Debezium是建立在卡夫卡并提供卡夫卡连接监控特定数据库管理系统的兼容连接器。开云体育电动老虎机开云体育官方注册网址Debezium在Kafka日志中记录了数据更改的历史,所以你的应用程序可以在任何时候停止和重新启动,并且可以很容易地使用它没有运行时错过的所有事件,确保所有事件都被正确和完整地处理。开云体育官方注册网址Debezium是开源Apache许可证,版本2.0

参与

我们希望您觉得Debezium有趣开云体育官方注册网址且有用,并愿意尝试一下。在Twitter上关注我们@开云体育官方注册网址debezium在Zulip上和我们聊天,或加入我们的邮件列表与社区对话。所有的代码都是开源的GitHub上,因此在本地构建代码并帮助我们改进现有连接器并添加更多连接器。如果您发现了问题或对我们如何改进Debezium有想法,请告诉我们开云体育官方注册网址记录问题