Debezium日常分享系列之:Debezium 2.3.0.Final发布

news2024/11/17 4:55:01

Debezium日常分享系列之:Debezium 2.3.0.Final发布

  • 一、重大改变
  • 二、PostgreSQL / MySQL 安全连接更改
  • 三、JDBC 存储编码更改
  • 四、新功能和改进
  • 五、Kubernetes 的 Debezium Server Operator
  • 六、新的通知子系统
  • 七、新的可扩展信号子系统
  • 八、JMX 信号和通知集成
  • 九、新的 JDBC 存储子系统
  • 十、PostgreSQL 流式传输的恰好一次传送
  • 十一、PostgreSQL 副本身份更改
  • 十二、Oracle RAC 改进

一、重大改变

通常会尝试尽可能避免次要版本中的重大更改,但不幸的是,有时此类更改是不可避免的,特别是如果某个功能可能是作为实验性引入的。 Debezium 2.3 引入了两项重大更改:

  • PostgreSQL / MySQL 安全连接更改
  • JDBC 存储编码更改

二、PostgreSQL / MySQL 安全连接更改

  • Debezium for PostgreSQL 和 MySQL 可以配置为使用安全的 SSL 连接。对于 PostgreSQL,这可以通过配置database.sslmode 来完成,而对于MySQL,这可以通过database.ssl.mode 来完成。
  • 在 Debezium 2.3 中,此配置选项不再默认为禁用 (PostgreSQL) 或禁用 (MySQL),而是默认为首选 (PostgreSQL) 和首选 (MySQL)。这意味着,当尝试使用加密的安全连接进行连接不可用时,连接器将默认使用不安全的连接,除非另有配置。

三、JDBC 存储编码更改

  • Debezium 2.3.0.alpha1 引入了新的实验性 JDBC 存储模块。该存储模块默认使用UTF-16作为默认编码;但是,大多数数据库更喜欢将 UTF-8 作为默认值。如果您从 Debezium 2.3.0.Alpha1 升级,则 Debezium 2.3.0.Beta1 及更高版本现在在使用 JDBC 存储模块存储数据时使用 UTF-8,以与典型数据库默认值保持一致。

四、新功能和改进

Debezium 2.3 包含大量新功能改进,其中包括:

  • Kubernetes 的 Debezium Server Operator
  • 新的通知子系统
  • 具有新通道的新型可扩展信号子系统
  • JMX 信号和通知集成
  • 新的 JDBC 存储模块
  • PostgreSQL 流式传输的恰好一次传送
  • PostgreSQL 副本身份更改
  • Oracle RAC 改进

五、Kubernetes 的 Debezium Server Operator

  • 此版本引入了新 Debezium Operator 的预览版本,提供了在 Kubernetes 中部署和管理 Debezium Server 实例的能力。 Debezium Server 允许您将更改事件从数据源流式传输到各种消息传递基础设施。我们的目标是为希望利用 Kubernetes 实现可扩展性和高可用性部署的 Debezium 社区提供一种无 Kafka 的替代方案。
  • 目前,由于运营商处于早期孵化阶段,相关文档很少;然而,我们确实打算在即将到来的发布周期中对此进行改进。您可以在 github 存储库中找到自定义资源规范的部署示例和基本描述,您可以将其用作短期参考。
  • 我们目前不建议将此组件进行生产部署;但是,我们鼓励用户提供社区反馈。这些反馈对于评估组件是否已准备好功能或是否仍有需要改进的地方来满足每个人的需求非常有价值。

六、新的通知子系统

  • Debezium 2.3 引入了一个名为通知的全新功能,允许 Debezium 发出可供任何外部系统使用的事件,以了解 Debezium 生命周期各个阶段的状态。
  • 通知事件表示为一系列键/值元组,其结构包含多个开箱即用的字段。以下是一个简单通知事件的示例。

通知事件示例

{
  "id": "c485ccc3-16ff-47cc-b4e8-b56a57c3bad2",
  "aggregate_type": "Snapshot",
  "type": "Started",
  "additional_data": {
    ...
  }
}

每个通知事件由一个 id 字段、一个用于标识通知的 UUID、一个基于域驱动设计概念与通知相关的aggregate_type 字段、一个用于提供有关聚合类型本身的更多详细信息的 type 字段组成,以及一个可选的 extra_data 字段,该字段由基于字符串的键/值对的映射以及有关事件的附加信息组成。

目前 Debezium 支持两种通知事件类型:

  • 初始快照的状态
  • 增量快照监控

初始快照通知:

初始快照是连接器首次启动时对现有数据的一致捕获。初始快照事件将具有值为“初始快照”的聚合类型,并且事件类型将由三个逻辑值之一组成:

  • SKIPPED:代表初始快照被跳过
  • ABORTED:表示初始快照已中止。
  • COMPLETED:表示初始快照已成功结束。

以下是有关初始快照完成的通知示例:

快照完成事件示例

{
  "id": "5563ae14-49f8-4579-9641-c1bbc2d76f99",
  "aggregate_type": "Initial Snapshot",
  "type": "COMPLETED"
}

增量快照通知:

增量快照是在连接器主动传输更改时从一组配置的表中捕获现有数据。增量快照事件将具有值为“增量快照”的聚合类型,并且该类型将由以下几个逻辑值之一组成:

  • STARTED:表示增量快照已经开始
  • PAUSED:表示增量快照已暂时暂停。
  • RESUMED:表示已暂停的增量快照现已恢复。
  • STOPPED:表示增量快照已停止。
  • IN_PROGRESS:指示增量快照正在进行中。
  • TABLE_SCAN_COMPLETED:指示给定表的增量快照已结束。
  • COMPLETED:表示所有表的增量快照已结束。

配置通知:
Debezium 通知是通过连接器的配置进行配置的。以下示例展示了如何配置开箱即用的基于 Kafka 主题或日志的通道。

使用 Kafka 主题

{
  "notification.enable.channels": "sink",
  "notification.sink.topic.name": "debezium_notifications",
  ...
}

使用连接器日志

{
    "notification.enable.channels": "log"
}

七、新的可扩展信号子系统

自 Debezium 1.x 中引入增量快照功能以来,Debezium 就支持信号的概念。信号很重要,因为它允许您提供元数据来指示 Debezium 执行给定任务,无论该任务是向连接器日志写入条目还是执行临时增量快照。

在 Debezium 2.3 中,信号子系统经过重新设计,引入了称为通道的概念,它代表 Debezium 观察或收听信号并对信号做出反应的媒介。在以前的版本中,有一个跨连接器普遍支持的通道,即数据库信号表。在此版本中,这些渠道已统一,并且以下内容可供开箱即用:

  • 数据库信号表
  • Kafka信号主题
  • 文件系统
  • JMX

但这还不是全部,信号通道合约是可扩展的,允许您编写自定义实现并轻松地将其提供给您的连接器。

八、JMX 信号和通知集成

Debezium 2.3 之前引入了新的信号通道和通知功能。此功能允许外部应用程序轻松与 Debezium 集成,发送信号来执行各种任务(例如临时增量快照),并接收有关此类任务进度的通知。此版本建立在该功能之上,允许通过 JMX 发送信号和接收通知。

发送信号

在此版本中,信号通道子系统已得到改进,支持通过 JMX 发送信号。从 jconsole 窗口中,您现在可以看到连接器有两个新的小部分,即通知和信号部分,如下所示:

在这里插入图片描述
新的信号部分允许您调用 JMX bean 上的操作,以便将信号传输到 Debezium。该信号类似于逻辑信号表结构,它接受 3 个参数:唯一标识符、信号类型,最后是信号有效负载。下面说明了 jconsole 中的情况:

在这里插入图片描述

接收通知

新的通知部分允许您接收来自 Debezium 的 JMX bean 捕获的通知并做出反应。 Debezium JMX bean 将缓冲所有通知以确保不会错过任何通知。下面说明了 jconsole 中的情况:

在这里插入图片描述
JMX bean 不会自动清除通知队列。为了避免内存问题,请务必在处理完所有通知后调用通知 bean 上的重置方法。

九、新的 JDBC 存储子系统

Debezium 2.3 引入了一种新的存储模块实现,支持通过 JDBC 在数据存储中持久保存模式历史记录和偏移数据。对于您可能无法轻松访问持久文件系统的环境,这提供了另一种通过远程持久存储平台进行存储的替代方案。

为了利用这个新模块,必须将以下依赖项添加到您的项目或应用程序中:

Maven coordinates

<dependency>
    <groupId>io.debezium</groupId>
    <artifactId>debezium-storage-jdbc</artifactId>
    <version>2.3.0.Final</version>
</dependency>

以下示例展示了如何通过 JDBC 存储模块配置偏移量或架构历史记录存储:

Offset JDBC 存储配置示例

{
  "offset.storage.jdbc.url": "<jdbc-connection-url>",
  "offset.storage.jdbc.user": "dbuser",
  "offset.storage.jdbc.password": "secret",
  "offset.storage.jdbc.offset_table_name": "debezium_offset_storage"
}

架构历史 JDBC 存储的配置示例

{
  "schema.history.internal.jdbc.url": "<jdbc-connection-url>",
  "schema.history.internal.jdbc.user": "dbuser",
  "schema.history.internal.jdbc.password": "secret",
  "schema.history.internal.jdbc.schema.history.table.name": "debezium_database_history"
}

十、PostgreSQL 流式传输的恰好一次传送

Debezium 传统上是一种至少一次交付解决方案,保证不会错过任何更改。 Exactly-Once 是 Apache Kafka 社区提出的一项提案,作为 KIP-618 的一部分。该提案旨在解决生产者(源连接器)的常见问题,当生产者重试时,它可能会重新向 Kafka 代理发送一批事件,即使该批次已经由代理提交。这意味着在某些情况下可能会发送重复的事件,并且并非每个消费者(接收器连接器)都能够轻松处理此类情况。

Debezium 计划以分阶段的方式推出一次性交付语义。快照和流媒体存在一些特定的极端情况,这些情况可能因连接器而异。就这样,Debezium 2.3 首先专门只在 PostgreSQL 的流阶段添加对一次语义的支持!

为了利用一次性交付,无需更改连接器配置;但是,您的 Kafka Connect 工作线程配置需要调整才能启用此功能。

如果您在同一个连接集群上混合支持和不支持精确一次传送的连接器,则您将无法在工作配置中将正好.once.support 设置为 required,因为这将导致不支持此功能的连接器启动时验证失败。

十一、PostgreSQL 副本身份更改

Debezium 2.3 引入了一个新的 PostgreSQL 连接器功能,称为“自动设置副本身份”。

副本身份是 PostgreSQL 识别在数据库事务日志中捕获哪些列以进行插入、更新和删除的方法。这项新功能允许通过连接器配置来配置表的副本身份,并在启动时将设置此配置的责任委托给连接器。

新的配置选项replica.identity.autoset.values指定以逗号分隔的表和副本身份元组列表。如果表已经具有给定的副本标识,则该标识将被覆盖以匹配此配置中指定的内容(如果包含该表)。 PostgreSQL 支持多种副本身份类型。

指定replica.identity.autoset.values时,该值是一个以逗号分隔的值列表,其中每个元素使用<完全限定表名称>:<副本身份>的格式。下面显示了一个示例,其中两个表配置为具有完整副本标识:

{
  "replica.identity.autoset.values": "public.table1:FULL,public.table2:FULL"
}

十二、Oracle RAC 改进

连接到 Oracle RAC 安装时,您必须指定 rac.nodes 配置属性,其中至少包含集群中所有单个节点的主机或 IP 地址。旧版本的连接器还支持多种格式,允许为每个节点包含一个端口,因为并非集群上的每个节点都可以使用相同的端口。

Debezium 2.3 还承认每个节点不一定使用相同的 Oracle 站点标识符 (SID),从而改进了 Oracle RAC 支持,因此,SID 现在也可以包含在 rac.nodes 配置属性中以支持此类安装。

以下示例说明了连接到两个 Oracle RAC 节点,每个节点使用不同的端口和 SID 参数:

配置示例

{
  "connector.class": "io.debezium.connector.oracle.OracleConnector",
  "rac.nodes": "host1.domain.com:1521/ORCLSID1,host2.domain.com:1522/ORCLSID2",
  ...
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1077041.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何查看dll文件内导出函数名称

一 使用VS自带工具 进入VS开发环境&#xff0c;然后Tools -> Visual studio 2017 Command Prompt&#xff0c;打开兼容工具命令提示符&#xff0c; 如果工具 目录下没有命令行提示&#xff0c;可以从开始菜单找到VS的命令行提示符。 cd到dll所在目录&#xff0c;输入命令…

联邦学习综述

《Advances and Open Problems in Federated Learning》 选题&#xff1a;Published 10 December 2019-Computer Science-Found. Trends Mach. Learn. 联邦学习定义 联邦学习是一种机器学习设置&#xff0c;其中多个客户端在中央服务器或服务提供商的协调下协作解决机器学习…

VR会议:远程带看功能,专为沉浸式云洽谈而生

随着科技的不断发展&#xff0c;VR技术已经成为当今市场上较为热门的新型技术之一了&#xff0c;而VR会议远程带看功能&#xff0c;更是为用户提供更加真实、自然的沉浸式体验。 随着5G技术的发展&#xff0c;传统的图文、视频这种展示形式已经无法满足消费者对信息真实性的需求…

存档&改造【04】二维码操作入口设置细节自动刷新设置后的交互式网格内容的隐藏

因为数据库中没有数据无法查看设置效果&#xff0c;于是自己创建了个测试数据表&#xff0c;用来给demo测试 -- 二维码操作入口设置 create table JM_QR_CODE(QR_CODE_ID NUMBER generated as identity primary key,SYSTEM_ID NUMBER(20) not null,IS_ENAB…

中国数字化转型浪潮下,移动钱包成为全球App标配

中国&#xff0c;一个数字化转型极为快速的国家&#xff0c;在电子钱包和移动支付方面处于世界领先地位。 在中国&#xff0c;几乎一半的店内购物都是通过手机进行的&#xff0c;这远高于其他发达市场的水平&#xff08;德国25%&#xff0c;美国24%&#xff09;。移动支付&…

AI情感陪伴 | 数字伙伴为你而在,解锁情感健康的新时代

当我们审视当今社会的变革和进步时&#xff0c;不难发现新一代年轻人正面临着前所未有的多重挑战。其中就涵盖了社交关系的复杂性、学业上的巨大压力、激烈的就业竞争&#xff0c;以及紧迫的环境问题等等。这些挑战不仅深刻地影响着他们的生活品质&#xff0c;还可能引发严重的…

AUTOSAR CAN通信全过程

1、CAN通信概略图和基本概念介绍 应用层APPL、RTE&#xff08;实时运行环境 Runtime Environment&#xff09; 交互层&#xff1a; IPDU multiplexer&#xff1a;协议数据单元复用模块 COM&#xff1a;COMMUNICATION 通信模块 DCM: 诊断通信管理模块&#xff08;Diagnostic C…

多项目并行管理:优化协调策略提高效率

多项目同时进行已然是大部分项目管理者面临的现状了。相比于单项目管理&#xff0c;多项目管理可能会出现项目资源分配不均&#xff0c;项目进度监控难以及沟通协作复杂等问题。 可以通过一款灵活高效得项目管理工具&#xff0c;来帮助您进行多项目管理&#xff0c;比如 Zoho …

SSL证书如何提升网站的安全性和信任度

在今天的数字时代&#xff0c;随着网络攻击的日益增多&#xff0c;确保网站和用户数据的安全变得至关重要。SSL&#xff08;Secure Sockets Layer&#xff09;证书是一个有效的安全解决方案&#xff0c;可以为您的网站提供加密通信通道&#xff0c;并提升其安全性和信任度。下面…

南昌新颜|AIGC艺术之光,历史的魅力与未来的探索

在这个本来稀松平常的周一&#xff0c;我们坐在电脑前&#xff0c;回顾着刚刚过去的两天&#xff0c;仿佛经历了“反方向的钟”。前两天的上班日子&#xff0c;究竟是周几呢&#xff1f;答案不再是简单的星期几&#xff0c;而是“周负二”和“周负一”。因为&#xff0c;我们把…

三、WebGPU Uniforms

三、WebGPU Uniforms Uniform有点像着色器的全局变量。你可以在执行着色器之前设置它们的值&#xff0c;着色器的每次迭代都会有这些值。你可以在下一次请求GPU执行着色器时将它们设置为其他值。我们将再次从第一篇文章中的三角形示例开始&#xff0c;并对其进行修改以使用一些…

Go 字符串操作实战

1. 引言 在现代编程中&#xff0c;字符串处理是不可或缺的一部分。无论是简单的用户界面&#xff0c;还是复杂的数据处理&#xff0c;字符串都扮演着关键的角色。Go语言&#xff0c;作为一个现代的、性能优越的编程语言&#xff0c;为字符串处理提供了一系列强大的工具和功能。…

通过后台系统添加一段div,在div中写一个<style></style>标签来修改div外面的元素的深层元素的样式

先看图 btn元素就是通过后台系统加上的元素,现在需要通过在btn里面写一个style标签来修改grid-nine里面的head元素的高度.开始想通过style来修改,但是不知道怎么去获取这个div外面的元素,想通过js方法去修改,写了script标签加了js代码,但不生效,后面问了才知道,这个项目是vue打…

深度学习笔记之优化算法(六)RMSprop算法的简单认识

深度学习笔记之优化算法——RMSProp算法的简单认识 引言回顾&#xff1a;AdaGrad算法AdaGrad算法与动量法的优化方式区别AdaGrad算法的缺陷 RMProp算法关于AdaGrad问题的优化方式RMSProp的算法过程描述 RMSProp示例代码 引言 上一节对 AdaGrad \text{AdaGrad} AdaGrad算法进行…

重载和重写的区别

方法重载&#xff1a; &#xff08;1&#xff09;在同一个类中 &#xff08;2&#xff09;方法名必须相同 &#xff08;3&#xff09;形参列表必须不同&#xff08;形参类型或个数或顺序&#xff0c;至少有一样不同&#xff0c;参数名无要求&#xff09; &#xff08;4&…

基于SpringBoot的校园社团信息管理系统

目录 前言 一、技术栈 二、系统功能介绍 学生管理 社长管理 社团信息管理 社团新闻管理 社团添加 社团活动 加入社团 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术…

Linux---进程(1)

操作系统 传统的计算机系统资源分为硬件资源和软件资源。硬件资源包括中央处理器&#xff0c;存储器&#xff0c;输入设备&#xff0c;输出设备等物理设备&#xff1b;软件资源是以文件形式保存在存储器上的成熟和数据等信息。 操作系统就是计算机系统资源的管理者。 如果你的计…

GEO生信数据挖掘(七)差异基因分析

上节&#xff0c;我们使用结核病基因数据&#xff0c;做了一个数据预处理的实操案例。例子中结核类型&#xff0c;包括结核&#xff0c;潜隐进展&#xff0c;对照和潜隐&#xff0c;四个类别。本节延续上个数据&#xff0c;进行了差异分析。 差异分析 计算差异指标step12 加载…

销售小白如何写客户拜访记录?

销售小白如何写客户拜访记录&#xff1f;10年客户管理经验&#xff0c;接下来我说的&#xff0c;都是实实在在的经验&#xff0c;小白能用到其中的40%&#xff0c;你的客户成单率会大大提升&#xff01; 首先&#xff0c;客户拜访记录的哪些信息是重要的&#xff1f; 答案是&…

【ccf-csp题解】第7次csp认证-第二题-俄罗斯方块-简单碰撞检测算法

题目描述 思路讲解 本题的主要思路是实现一个draw函数&#xff0c;这个函数可以绘制每一个状态的画布。然后从第一个状态往后遍历&#xff0c;当绘制到某一个状态发生碰撞时&#xff0c;答案就是上一个状态的画布。 此处的状态x实际就是在原来的15*10画布上的第x行开始画我们…