Debezium日常分享系列之:Debezium 2.6.0.Alpha2发布

2024-02-19 21:36

本文主要是介绍Debezium日常分享系列之:Debezium 2.6.0.Alpha2发布,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Debezium日常分享系列之:Debezium 2.6.0.Alpha2发布

  • 一、重大变化
  • 二、改进和变化
    • 1.支持Java 17
    • 2.异步嵌入式引擎
    • 3.时间戳转换器改进
    • 4.SQL Server 查询改进
    • 5.范围密钥/信任 - MongoDB 的存储支持
    • 6.源交易id变化
    • 7.Google PubSub 订购密钥支持
    • 8.MongoDB UUID 密钥支持增量快照
    • 9.MongoDB 图像后更改

一、重大变化

Vitess:

  • 以前版本的连接器使用的任务配置格式可能会破坏 Kafka Connect 集群的稳定性。为了解决该问题,Debezium 2.6 引入了一种与以前的格式(DBZ-7250)不兼容的新配置格式。升级时,您可能会遇到 NullPointerException 和错误,指示连接器无法实例化任务,因为它包含无效的任务配置。
  • 如果您遇到此问题,请删除并使用与以前相同的名称和配置重新创建连接器。连接器将启动并重新使用上次使用相同名称存储的偏移量,但不会重新使用旧的任务配置,从而避免启动失败。

二、改进和变化

1.支持Java 17

  • Debezium 3.0 将于今年秋季晚些时候推出,将再次将 Java 基线要求从 Java 11 转移到 17,以使用 Debezium。为了准备今年晚些时候的 Debezium 3,我们将把 Debezium 2.6 和 2.7 的编译时基线转变为需要 Java 17。
  • 如果您是 Debezium 用户,并且使用 Debezium 连接器,则不需要您执行任何操作。您现在可以继续使用 Java 11,不会有任何问题,因为 Debezium 3 将在今年晚些时候需要 Java 17。
  • 如果您正在开发 Debezium 连接器,Java 17 现在是编译 Debezium 源代码的基准。如果您一直在使用 Java 17,则您不应该采取任何操作。如果您之前使用的是 Java 11,则需要迁移到 Java 17 才能从源代码进行编译。
  • 如果您使用 Debezium Quarkus Outbox Extension(不是 Outbox SMT),由于 Quarkus 3.7+ 正在转向 Java 17 作为其基准,Debezium Quarkus Outbox Extension 现在将需要 Java 17 作为运行时和编译时的基准。
  • 我们预计这种过渡对于大多数用户来说基本上是无缝的,因为此时这对 Debezium 连接器或 Debezium 服务器的运行时间绝对不会产生影响。

2.异步嵌入式引擎

  • 如果是第一次听说嵌入式引擎,Debezium 附带了三种运行 Debezium 连接器的方法。最常见的是在 Kafka Connect 上部署 Debezium,而第二常见的是使用 Debezium Server,这是 Debezium 连接器的只读运行时。然而,还有第三个选项,称为嵌入式引擎,它是 Debezium 在其测试套件内部使用的,它是 Debezium Server 的基础,旨在提供一种将 Debezium 连接器嵌入到您自己的应用程序中的方法。该嵌入式引擎被各种外部贡献者和框架使用,最值得注意的是 Apache Flink 严重依赖嵌入式引擎来实现基于 Debezium 的 CDC 连接器。
  • Debezium 2.6 最大、最重要的新功能之一是我们在此 alpha 版本中首次推出的异步嵌入式引擎。这个新的异步版本是 Debezium Server 和嵌入 Debezium 的未来的基础。这一变化侧重于几个关键目标和举措:
    • 如果连接器支持多个任务,则为给定连接器运行多个源任务
    • 在专用线程中运行耗时的代码(转换或序列化)
    • 通过禁用事件调度顺序来提高性能
    • 提供虚拟线程和委托给外部工作人员等未来技术优势
    • 与 Debezium Operator for Kubernetes 和 Debezium UI 更好地集成
    • 与 Debezium Server 的 Quarkus 无缝集成

这个新的异步模型不包括或不关注以下内容:

  • 在连接器的主捕获循环内实现并行化。
  • 从 Kafka Connect 中删除任何依赖项
  • 添加对每个引擎部署多个源连接器的支持
  • 添加对接收器连接器的支持

即使连接器是单线程且不支持多个任务,使用嵌入式引擎或 Debezium 服务器的连接器部署也可以利用新的异步模型。均匀分派期间的大部分时间都花在转换和序列化阶段,因此在这些阶段使用新的专用工作线程可以提高吞吐量。

对于想要开始使用新的异步嵌入式引擎的开发人员,debezium 嵌入式工件中现在包含一个名为 io.debezium.embedded.async 的新包,该包包含利用此新实现的所有相关组件。可以使用构建器模式以与串行版本类似的方式构建异步模型,如下所示。

final DebeziumEngine engine = new AsyncEngine.AsyncEngineBuilder().using(properties).notifying(this::changeConsumerHandler).build();

3.时间戳转换器改进

  • Debezium 在 Debezium 2.4 中发布了新的 TimezoneConverter,允许用户定位特定时区并将传出负载时间值转换为该目标时区。最初的实现被明确限制为允许在有效负载的前后部分内进行值转换;然而,由于进行了改进,该转换器现在可用于转换元数据中的其他基于时间的字段,例如源信息块中的 ts_ms。
  • 在运行连接器的 JVM 使用与数据库不同的时区的情况下,此更改有助于改进滞后指标计算,并且信封 ts_ms - 源 ts_ms 的计算会导致由时区引起的差异。通过使用 TimezoneConverter 转换元数据字段,您可以轻松计算这两个字段之间的滞后,而不会受到时区干扰。

4.SQL Server 查询改进

  • Debezium SQL Server 利用名为 fn_cdc_get_all_changes… 的通用 SQL Server 存储过程来获取给定表的所有相关捕获的更改。此查询执行多个联合,并且仅从联合子查询之一返回数据,这可能效率低下。
  • Debezium 2.6 for SQL Server 引入了一个新的配置属性 data.query.mode,可用于影响连接器将使用哪种特定方法来收集有关表更改的详细信息。与旧版本相比,默认值保持不变,使用值函数委托给上述存储过程。可以使用名为 direct 的新选项直接在连接器内构建查询,以更有效地收集更改。

5.范围密钥/信任 - MongoDB 的存储支持

  • Debezium 支持安全连接;但是,MongoDB 要求将密钥/信任存储配置作为 JVM 进程参数提供,这对于云等环境来说不太理想。作为协调如何跨连接器指定安全连接配置的第一步,Debezium 2.6 for MongoDB 现在支持在连接器配置中指定范围密钥/信任存储配置。

MongoDB 连接器现在包含以下新配置属性:

  • mongodb.ssl.keystore:指定 SSL 密钥库文件的路径。
  • mongodb.ssl.keystore.password:指定用于打开和访问 mongodb.ssl.keystore 提供的 SSL 密钥库的凭据。
  • mongodb.ssl.keystore.type:指定 SSL 密钥库文件类型,默认为 PKC512。
  • mongodb.ssl.truststore:指定 SSL 信任库文件的路径。
  • mongodb.ssl.truststore.password:指定用于打开和访问 mongodb.ssl.truststore 提供的 SSL 信任库的凭据。
  • mongodb.ssl.truststore.type:指定 SSL 信任库文件类型,默认为 PKC512。

6.源交易id变化

  • 所有 Debezium 更改事件都包含一个称为源信息块的特殊元数据块。这部分事件负载负责提供有关更改事件的元数据,包括更改的唯一标识符、更改发生的时间、更改引用的数据库和表,以及有关更改的事务的事务元数据。
  • 在 Debezium 2.6 中,将不再提供源信息块中的 transaction_id 字段,除非该字段填充了值。这不会给用户带来任何问题,因为仅当连接器配置为 Provide.transaction.metadata 设置为 true (DBZ-7380) 时,才会填充此字段。
  • 如果您的工具期望源信息块的 transaction_id 字段存在(尽管它是可选的),则您将需要调整该行为,因为除非填充,否则该字段将不再存在。

7.Google PubSub 订购密钥支持

  • Debezium Server Google PubSub 接收器适配器在 Debezium 2.6 中收到了一个小更新。如果您正在流式传输具有外键关系的更改,您可能想知道是否可以指定排序键以便维护外键约束。
  • Debezium 2.6 为 Google PubSub 接收器适配器引入了一个新的可配置属性 ordering.key,它允许接收器适配器使用事件连接器配置中外部提供的排序键,而不是使用基于事件键的默认行为。

8.MongoDB UUID 密钥支持增量快照

  • 作为 Debezium for MongoDB 连接器增量快照流程的一个小改进,Debezium 2.6 添加了对 UUID 数据类型的支持,允许该数据类型像其他数据类型一样在增量快照流程中使用。

9.MongoDB 图像后更改

  • MongoDB 连接器的事件负载可以配置为包含更新中更改的完整文档。连接器之前对如何获取完整文档作为变更流的一部分做出了固执己见的选择;然而,这种行为与我们在所有用例中的预期并不相符。
  • Debezium 2.6 引入了一个新的配置选项 capture.mode.full.update.type,允许连接器显式控制如何处理变更流的完整文档查找。该选项的默认值是lookup,这意味着数据库将进行单独的查找以获取完整文档。如果您使用 MongoDB 6+,您还可以选择使用 post_image 来依赖 MongoDB 更改流的后期映像支持。

这篇关于Debezium日常分享系列之:Debezium 2.6.0.Alpha2发布的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/726043

相关文章

Debezium 与 Apache Kafka 的集成方式步骤详解

《Debezium与ApacheKafka的集成方式步骤详解》本文详细介绍了如何将Debezium与ApacheKafka集成,包括集成概述、步骤、注意事项等,通过KafkaConnect,D... 目录一、集成概述二、集成步骤1. 准备 Kafka 环境2. 配置 Kafka Connect3. 安装 D

定价129元!支持双频 Wi-Fi 5的华为AX1路由器发布

《定价129元!支持双频Wi-Fi5的华为AX1路由器发布》华为上周推出了其最新的入门级Wi-Fi5路由器——华为路由AX1,建议零售价129元,这款路由器配置如何?详细请看下文介... 华为 Wi-Fi 5 路由 AX1 已正式开售,新品支持双频 1200 兆、配有四个千兆网口、提供可视化智能诊断功能,建

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

MySQL8.2.0安装教程分享

《MySQL8.2.0安装教程分享》这篇文章详细介绍了如何在Windows系统上安装MySQL数据库软件,包括下载、安装、配置和设置环境变量的步骤... 目录mysql的安装图文1.python访问网址2javascript.点击3.进入Downloads向下滑动4.选择Community Server5.

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

10个Python自动化办公的脚本分享

《10个Python自动化办公的脚本分享》在日常办公中,我们常常会被繁琐、重复的任务占据大量时间,本文为大家分享了10个实用的Python自动化办公案例及源码,希望对大家有所帮助... 目录1. 批量处理 Excel 文件2. 自动发送邮件3. 批量重命名文件4. 数据清洗5. 生成 PPT6. 自动化测试

10个Python Excel自动化脚本分享

《10个PythonExcel自动化脚本分享》在数据处理和分析的过程中,Excel文件是我们日常工作中常见的格式,本文将分享10个实用的Excel自动化脚本,希望可以帮助大家更轻松地掌握这些技能... 目录1. Excel单元格批量填充2. 设置行高与列宽3. 根据条件删除行4. 创建新的Excel工作表5

Redis多种内存淘汰策略及配置技巧分享

《Redis多种内存淘汰策略及配置技巧分享》本文介绍了Redis内存满时的淘汰机制,包括内存淘汰机制的概念,Redis提供的8种淘汰策略(如noeviction、volatile-lru等)及其适用场... 目录前言一、什么是 Redis 的内存淘汰机制?二、Redis 内存淘汰策略1. pythonnoe

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree