Debezium日常分享系列之:Debezium 3.0.0.Beta发布

2024-08-28 21:44

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

Debezium日常分享系列之:Debezium 3.0.0.Beta发布

  • 一、重大变更
    • Debezium Server Kafka Sink
    • Debezium Server RabbitMQ Sink
  • 二、新功能和改进
    • 每个表的详细指标
    • PostgreSQL复制插槽创建超时
    • 对于PostgreSQL的PgVector数据类型的支持
    • Oracle Ehcache 事务缓冲实现
    • 解码PostgreSQL逻辑消息的转换
  • 三、更多内容

此版本包含大量新功能和改进,包括每个表的创建、更新和删除的详细指标、复制槽创建超时、PostgreSQL 对 PgVector 数据类型的支持、基于 Ehcache 的新 Oracle 嵌入式缓冲区实现等。

一、重大变更

Debezium Server Kafka Sink

  • 当Kafka代理不可用时,Debezium Server Kafka sink适配器可能会无限期等待。现在,在适配器中添加了一个可配置的超时选项,当达到超时时间时,适配器将强制失败。新的选项debezium.sink.kafka.wait.message.delivery.timeout.ms的默认值为30秒。如果默认值对您的需求不足,请相应地进行调整。

Debezium Server RabbitMQ Sink

  • Debezium Server RabbitMQ sink适配器将所有变更发送到同一个流中。虽然这在某些场景下可能很有用,但它与其他代理系统不太匹配,其他代理系统中每个表都会被流式传输到自己独特的主题或流中。从Debezium 3开始,这个逻辑已经发生了变化,默认情况下,每个表都将被流式传输到自己独特的流中。当设置debezium.sink.rabbitmqstream.stream时,您可以启用将所有变更流式传输到同一个流中的传统行为。

二、新功能和改进

每个表的详细指标

  • Debezium 现在将开始基于每个关系表执行的单个创建、更新和删除操作跟踪指标。对于某些连接器,如 PostgreSQL 和 Oracle,这些新的详细指标还会跟踪每个关系表执行的截断操作。这在需要检测特定变异模式或希望集成分析或可观测性堆栈的情况下非常有用,这些详细信息可以有助于识别问题。
  • 对于升级到 Debezium 3 的用户,这些新指标将自动捕获。它们使用基于映射的模式 Map<‍String, Long‍> 暴露,其中键是表名,值是观察到的事件数量。新的指标名称是 NumberOfCreateEventsSeen、NumberOfDeleteEventsSeen、NumberOfUpdateEventsSeen 和 NumberOfTruncateEventsSeen。

PostgreSQL复制插槽创建超时

  • 当首次部署PostgreSQL连接器时,其中一个最早的任务是在数据库中创建一个复制插槽,如果该插槽不存在。复制插槽是连接器工作的关键,它有助于捕获和发送更改到Debezium。不幸的是,有一些数据库操作会阻塞复制插槽的创建,比如正在进行的事务,强制连接器无限期地阻塞,等待事务结束。对于短暂的事务,这通常不是一个问题;然而,对于长时间运行的事务,情况就完全不同了。
    为了改善这种体验,添加了一个新的内部选项
    internal.create.slot.command.timeout,默认为90秒。如果复制插槽的创建在90秒内没有完成,它将重试slot.max.retries次。一旦重试次数用尽,连接器将抛出一个无法恢复的错误。

对于PostgreSQL的PgVector数据类型的支持

  • pgvector扩展为PostgreSQL引入了矢量搜索功能。该扩展引入了三种数据类型:vector、halfvec和sparsevec。
  • 在Debezium 3中,所有三种数据类型都将像其他数据类型一样进行流式传输。
  • 每种数据类型的发出基于以下语义映射:
    • vector作为数值值的数组
    • halfvec作为数值值的数组
    • sparsevec作为具有维度数量和索引到值的映射的结构体
    • 在启用数据库中的pgvector扩展后,无需进行其他配置。

Oracle Ehcache 事务缓冲实现

  • Debezium 3引入了基于Ehcache的新的Oracle连接器事务缓冲实现,以提供事务处理和事件数据的堆外存储。这个新的实现增加了现有的Java Heap、Infinispan Embedded和Infinispan Remote缓冲类型。
  • 要开始利用Ehcache实现,必须将log.mining.buffer.type设置为ehcache。默认情况下,缓冲类型是memory,以使用JVM的堆获得最佳性能。
  • 为了使Ehcache库成功启动,必须提供几个附加配置来明确配置缓存管理器维护的缓存。这些新的配置选项为:
    • log.mining.buffer.ehcache.global.config
    • log.mining.buffer.ehcache.transactions.config
    • log.mining.buffer.ehcache.processedtransactions.config
    • log.mining.buffer.ehcache.schemachanges.config
    • log.mining.buffer.ehcache.events.config
  • Debezium使用XML创建Ehcache配置,因此这些配置提供XML片段。全局配置是可选的,并允许您提供有关持久性和其他Ehcache属性的详细信息,但不包括指定<‍cache‍>或<‍default-serializers‍>标记,这些标记是单独处理的。其他单个缓存配置旨在提供<‍cache‍>配置标记的内部XML位,但不包括其<‍key-type‍>和<‍value-type‍>,这些由Debezium直接管理。

配置示例

{"log.mining.buffer.type": "ehcache","log.mining.buffer.ehcache.global.config": "<persistence directory=\"./data\"/>","log.mining.buffer.ehcache.transactions.config": "<resources><heap unit=\"entries\">256</heap><disk unit=\"B\">10485760</disk></resources>","log.mining.buffer.ehcache.processedtransactions.config": "<resources><heap unit=\"entries\">256</heap><disk unit=\"B\">10485760</disk></resources>","log.mining.buffer.ehcache.schemachanges.config": "<resources><heap unit=\"entries\">256</heap><disk unit=\"B\">10485760</disk></resources>","log.mining.buffer.ehcache.events.config": "<resources><heap unit=\"entries\">256</heap><disk unit=\"B\">10485760</disk></resources>"
}

在这个示例中,Ehcache将为缓存维护堆和堆外存储的组合,在堆中始终保持最多256个条目,并刷新到磁盘。磁盘缓存将存储在相对路径./data下。这意味着在使用基于磁盘的缓存时,您需要一个可用的持久存储卷。

这是一个新的功能,属于实验性质,因此我们希望您能提供反馈意见,以便我们改进。

解码PostgreSQL逻辑消息的转换

  • PostgreSQL在于您可以通过使用pg_logical_emit_message将逻辑消息直接写入WAL来实现Outbox模式,而无需创建一个outbox表。不幸的是,这些数据随后以一系列字节的形式发送到Kafka,这对于可能正在寻找结构化消息的消费者可能并不总是理想的。
  • Debezium 3引入了一个新的针对PostgreSQL的特定转换,称为DecodeLogicalDecodingMessageContent。该转换的目的是将pg_logical_emit_message事件字节转换为消费者应用程序能够理解的结构化事件负载。

给定以下配置:

{"transforms": "decode","transforms.decode.type": "io.debezium.connector.postgresql.transforms.DecodeLogicalDecodingMessageContent"
}

在转换之前使用 pg_logic_emit_message 写入的事件的事件值将是:

{"op": "m","ts_ms": 1723115240065,"source": {...},"message": {"prefix": "test-prefix","content": "eyJpZCI6IDEsICJpdGVtIjogIkRlYmV6aXVtIGluIEFjdGlvbiIsICJzdGF0dXMiOiAiRU5URVJFRCIsICJxdWFudGl0eSI6IDIsICJ0b3RhbFByaWNlIjogMzkuOTh9"}
}

应用转换后,事件的值现在如下所示:

{"op": "c","ts_ms": 1723115415729,"source": {...},"after": {"id": 1,"item": "Debezium in Action","status": "ENTERED","quantity": 2,"totalPrice": 39.98}
}

因此,您可以安全地实现发件箱模式,而无需物理发件箱表

三、更多内容

更多Debezium技术请参考:

  • Debezium技术专栏

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



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

相关文章

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

售价599元起! 华为路由器X1/Pro发布 配置与区别一览

《售价599元起!华为路由器X1/Pro发布配置与区别一览》华为路由器X1/Pro发布,有朋友留言问华为路由X1和X1Pro怎么选择,关于这个问题,本期图文将对这二款路由器做了期参数对比,大家看... 华为路由 X1 系列已经正式发布并开启预售,将在 4 月 25 日 10:08 正式开售,两款产品分别为华

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

Python解析器安装指南分享(Mac/Windows/Linux)

《Python解析器安装指南分享(Mac/Windows/Linux)》:本文主要介绍Python解析器安装指南(Mac/Windows/Linux),具有很好的参考价值,希望对大家有所帮助,如有... 目NMNkN录1js. 安装包下载1.1 python 下载官网2.核心安装方式3. MACOS 系统安

Nginx实现前端灰度发布

《Nginx实现前端灰度发布》灰度发布是一种重要的策略,它允许我们在不影响所有用户的情况下,逐步推出新功能或更新,通过灰度发布,我们可以测试新版本的稳定性和性能,下面就来介绍一下前端灰度发布的使用,感... 目录前言一、基于权重的流量分配二、基于 Cookie 的分流三、基于请求头的分流四、基于请求参数的分