我很高兴地宣布Debezium的发布开云体育官方注册网址1.2.0.Alpha1!
1.2发行版的第一个发布版本提供了许多有用的新特性:
支持Debezium嵌入式引擎API中的消息转换(smt)和转换器开云体育官方注册网址
使用脚本语言过滤更改事件的新SMT
SQL Server连接器自动重新连接
使用一致哈希值的新列屏蔽模式
总体而言,社会固定不少于41个问题对于这个版本。让我们在这篇文章的剩余部分仔细看看其中的一些。
嵌入式引擎改进
开云体育官方注册网址Debezium的嵌入式引擎是一个非常有用的工具,可以在Apache Kafka和Kafka Connect不可用的情况下处理更改事件。例如,它允许使用Debezium的CDC功能和流更改事件到替开云体育官方注册网址代消息基础设施,如Amazon Kinesis或谷歌Pub/Sub。
为了进一步改善使用此API时的体验,它现在支持将更改事件序列化为不同的格式(dbz - 1807): JSON, Avro和CloudEvents。这使开发人员不必自己处理记录序列化。作为一个例子,下面是如何使用JSON作为序列化格式:
属性道具=新属性();//不包含schemaprops.setProperty ("converter.schemas.enable","假");(1)//进一步的属性…开云体育官方注册网址DebeziumEngine <ChangeEvent<字符串>> engine = 开云体育官方注册网址DebeziumEngine.create(Json.class)(2).using(props) .notifying((记录,提交者)-> {(3)为(ChangeEvent<字符串> r:记录){系统.out.println ("Key = '"+键+"' value = '"+ value +"'");committer.markProcessed (r);}}) .build();
1 | 底层转换器的所有选项都可以使用 |
2 | Json.class 是类型令牌请求序列化成JSON |
3. | 记录 是一批更改事件,表示为JSON字符串 |
嵌入式引擎现在也支持使用Kafka连接smt (dbz - 1930).它们可以通过传递给引擎生成器的属性简单地配置:
属性道具=新属性();props.setProperty ("转换","路由器");props.setProperty ("transforms.router.type","org.apache.kafka.connect.transforms.RegexRouter");props.setProperty ("transforms.router.regex","(. *)");props.setProperty ("transforms.router.replacement","扶轮基金会1美元");
这允许使用任何现有的Kafka Connect SMT,比如Kafka Connect本身自带的,或者Debezium的SMT,例如for开云体育官方注册网址主题的路由,新记录状态提取而且发件箱事件路由.
这些改进为即将推出的独立Debezium运行时奠定了基础,该运行时将基于嵌入式引擎,并将其功能作为现成的服务提供。开云体育官方注册网址
基于内容的事件过滤
此版本还为Debezium添加了另一个非常通用的转换:开云体育官方注册网址消息过滤器.应用于Kafka Connec开云体育官方注册网址t数据流管道源端的Debezium连接器,它允许根据字段值过滤出特定的更改事件。
例如,您可以使用它来过滤特定客户类型或产品类别的任何更改事件。过滤器以脚本表达式的形式给出,使用任何与javax兼容的语言。脚本API (JSR 223).注意Deb开云体育官方注册网址ezium本身不提供任何这样的脚本语言实现;相反,你可以从Groovy、MVEL或graal.js(通过GraalVM的JavaScript)等广泛的可用选项中进行选择,并将其添加到Kafka Connect插件路径中。
下面是一个使用Groovy的例子:
...transforms=filter transforms.filter.type=io.开云体育官方注册网址 debezu .transforms. filter.language=jsr223。groovy transforms.filter.condition = value.after。customerType != 42…
价值
是更改事件的值;您还可以引用事件的键甚至对应的模式对象。Groovy自动解析属性路径,例如value.after.customerType
到像Kafka Connect这样的类似地图的数据结构的查找结构体
类型。这允许非常简洁的过滤条件。
请注意,这个SMT目前处于孵化状态,即其API和配置面的细节仍可能发生变化。请尝试一下并分享你的经验。
其他功能
除了这些关键特性之外,1.2.0还附带了许多其他新功能。α版本:
新指标
NumberOfDisconnects
而且NumberOfPrimaryElections
对于MongoDB连接器(dbz - 1859)支持在SQL Server连接器中的连接丢失后自动重新连接(dbz - 1882)
新的列屏蔽模式“一致散列”(dbz - 1692): 开云体育官方注册网址Debezium允许屏蔽特定的列值,例如,以满足对数据隐私和保护的关注。使用新的“一致哈希”模式,现在不仅可以使用星号作为屏蔽字符,还可以基于屏蔽数据内容使用哈希值。引用最初的问题记者的话,这“将对[匿名]数据有用,但在这种情况下,它仍然需要在主题之间具有相关性。这是仓库的典型要求,你想要匿名化敏感数据,但仍然需要保持数据的参考完整性。”
允许在主键更新时链接更新更改事件(dbz - 1531):大多数关系Debezium连接器表开云体育官方注册网址示对记录主键的更新,通过使用旧键的删除事件和使用更新键的后续插入事件;使用新的记录头
__开云体育官方注册网址debezium.newkey
而且__开云体育官方注册网址debezium.oldkey
,当使用来自MySQL和Postgres连接器的更改数据时,消费者现在可以将这些更改事件链接在一起Debezium容器镜开云体育官方注册网址像升级到Apache Kafka 2.4.1 (dbz - 1925)
修正
还有一些错误被修复,例如:
当Postgres连接器空闲时,CPU使用率高(dbz - 1960)
空wal2json空更改事件可能导致NPE (dbz - 1922)
Cassandra连接器:无法反序列化反向类型的列突变(dbz - 1967)
发件箱Quarkus扩展将NPE置于Quarkus:dev模式(dbz - 1966)
验证binlog_row_image与MySQL 5.5不兼容(dbz - 1950)
详情请参阅发布说明查看已解决问题的完整列表以及从早期Debezium版本升级的程序。开云体育官方注册网址我们还将关键的错误修复后移植到1.1分支,并将于明天发布Debezium 1.1.1。开云体育官方注册网址
非常感谢社区中为这个版本工作的所有贡献者:亚历山大Iskuskov,亚历山大·施瓦兹,Bingqin周,Fatih Güçlü Akkaya,格兰特Cooksey,Jan-Hendrik痛单位,Luis Garces-Erice,Nayana Hettiarachchi而且雷内·肯纳!
关于Debe开云体育官方注册网址zium
开云体育官方注册网址Debezium是一个开源的分布式平台,它将现有数据库转换为事件流,因此应用程序几乎可以立即看到并响应数据库中提交的每一个行级更改。开云体育电动老虎机开云体育官方注册网址Debezium是建立在卡夫卡并提供卡夫卡连接监控特定数据库管理系统的兼容连接器。开云体育电动老虎机开云体育官方注册网址Debezium在Kafka日志中记录了数据更改的历史,所以你的应用程序可以在任何时候停止和重新启动,并且可以很容易地使用它没有运行时错过的所有事件,确保所有事件都被正确和完整地处理。开云体育官方注册网址Debezium是开源下Apache许可证,版本2.0.
参与
我们希望您觉得Debezium有趣开云体育官方注册网址且有用,并愿意尝试一下。在Twitter上关注我们@开云体育官方注册网址debezium,在Zulip上和我们聊天,或加入我们的邮件列表与社区对话。所有的代码都是开源的GitHub上,因此在本地构建代码并帮助我们改进现有连接器并添加更多连接器。如果您发现了问题或对我们如何改进Debezium有想法,请告诉我们开云体育官方注册网址记录问题.