Debezium日常分享系列之:Debezium 3.1.0.Beta1发布
Debezium日常分享系列之:Debezium 3.1.0.Beta1发布
- 新特性和改进
- Debezium 平台的首次发布
- Percona 的最小锁定
- 新的 Oracle 源信息 SCN 和时间戳字段
- Vitess Epoch/零日期列解析的变化
- Vitess 二进制排序的 tiny、medium 和 long 文本列的变化
- CloudEvent traceparent 支持
- WASM 转换中的模式访问支持
- 条件性包含 connect-base 镜像中的组件
- PubSub 源支持并发和压缩
- PubSub 源支持区域性端点
- RabbitMQ 源支持基于键的路由
此版本包含了许多特性和改进,包括但不限于 Debezium Server UI 的首个官方发布、CloudEvent traceparent 支持、Debezium 的 PubSub 和 RabbitMQ 源的新功能、WASM 转换中的模式访问,以及许多其他特性。让我们深入了解这些新特性和改进。
新特性和改进
升级到 Debezium 3.1.0.Beta1 在多个组件中引入了若干新特性和改进:
Debezium 平台的首次发布
一年前,我们开始了这一令人难以置信的旅程,旨在为 Debezium Server 创建一个现代化的用户界面,以简化在 Kubernetes 上部署 Debezium 的过程。我们很高兴地宣布,Debezium 3.1 将是这一多年努力的首个官方发布版本。
新的 Debezium 平台提供了一种基于现代管道的方法,可以在几秒钟内设计源和目标配置、转换链等。可以使用 Helm 按如下方式安装 Debezium 平台
helm install debezium-platform --set domain.url=<your-domain> --version 3.1.0-beta1 oci://quay.io/debezium-charts/debezium-platform
此外,此版本特别为用户界面添加了一些最终的完善功能,包括新的搜索/列表视图切换、显示应用的转换和编辑连接器管道,以及在配置管道时为有经验的用户提供智能编辑器。
Percona 的最小锁定
为 MySQL Percona 用户,Debezium 添加了一个新的 snapshot.locking.mode,以减少在快照过程中发生的锁定量。新的模式 minimal_percona_no_table_locks 与 minimal_percona 提供相同的语义,但额外省略了表级锁定。这为一些不允许表锁定的环境提供了一个替代方案。
新的 Oracle 源信息 SCN 和时间戳字段
Debezium 为 Oracle 变更事件的源信息块添加了几个新字段,包括:
- commit_ts_ms这指定了事件的事务提交的时间(以毫秒为单位)。
- start_scn这指定了事件的事务中观察到的第一个事件的 SCN。
- start_ts_ms这指定了事件的事务中第一个事件由用户更改的时间(以毫秒为单位)。
这些新字段是可选的,因此使用模式注册表的用户应发现这些更改是向后兼容的。
Oracle 的 SCN 值不是唯一的,因此多个事件可能具有相同的 SCN 值和时间戳。在使用这些值进行任何类型的事件排序时应谨慎。
Vitess Epoch/零日期列解析的变化
当 Vitess 值转换器发出一个设置为零日期值的日期列时,根据列的可选性,该字段可能会被发出为 null 或 Unix 元年。这为消费者应用程序创建了一个问题,因为它们无法区分元年值是真正的元年值还是因为源列是零日期而产生的哨兵值。
Debezium 3.1 为 Vitess 用户引入了一个新的配置属性:override.datetime.to.nullable。
默认值为 false,继续使用旧的行为发出日期列,即如果列不为 null,则使用 Unix 元年而不是 null。这意味着消费者将继续无法区分这两种情况。
当设置为 true 时,所有日期和 datetime 列都被设为可选,这意味着无论源数据库中列的可选性如何设置,它们都可以被序列化为 null。这意味着如果源系统中设置了一个零日期,连接器将始终使用 null 来表示这种情况,而不再使用基于元年的值,除非字段被填充了一个实际的非零日期值。
Vitess 二进制排序的 tiny、medium 和 long 文本列的变化
在 Debezium 3.1.0.Alpha2 中,我们引入了一个更改,将 Vitess 二进制排序的文本、枚举和集合列类型作为字符类型字段在变更事件中发出。这不幸地只涵盖了部分列类型,而在此次发布中,我们扩展了这一范围,包括 tinytext、mediumtext 和 longtext 类型)。
请注意,如果使用模式注册表,二进制排序的文本、tinytext、mediumtext、longtext、枚举和集合列类型在序列化方式上的变化可能会引入模式的向后兼容性问题。
CloudEvent traceparent 支持
Debezium 的 CloudEvents 支持已更新,增加了对 traceparent 属性的支持,这使得可以与 OpenTelemetry 集成,将跟踪详细信息作为事件的一部分传递。
通过将 opentelemetry.tracing.attributes.enabled 配置属性设置为 true,并在 metadata.source 中包含 traceparent:header,这些信息将被提供给 CloudEvents 转换器。
可以自定义转换器填充字段的方式,通过更改默认值并指定相应头部中的字段值。例如:
{"value.converter.metadata.source": "value,id:header,type:header,traceparent:header,dataSchemaName:header"
}
WASM 转换中的模式访问支持
现在,您可以使用 WASM 转换来在 TinyGo 程序中访问一些模式细节。新增了两个方法来支持时间:GetSchemaName 和 GetSchemaType。
TinyGo 模式访问器示例:
package mainimport( "githu.com/debezuim/debezium-smt-go-pdk" )//export process
func process(proxyPtr uint32) uint32 {var valueSchemaType = debezium.GetSchemaName(debezium.Get(proxyPtr, "valueSchema"))var opType = debezium.GetSchemType(debezium.Get(proxyPtr, "valueSchema.op"))// Filter where schema type or opType matchreturn debezium.SetBool(valueSchemaType == "dummy.Envelope" || opType == "string")
}func main() {}
条件性包含 connect-base 镜像中的组件
Debezium 的 kafka 和 connect 镜像都源自一个名为 connect-base 的单一通用镜像。默认情况下,这个基础镜像会安装 Apicurio、Jolokia 和 OpenTelemetry 依赖。这对于测试目的非常有用,但如果您希望使用 Debezium 的镜像作为自己项目的基镜像,可能希望在这些依赖对您的环境不必要时将其省略。
现在,connect-base 镜像可以有条件地省略这些依赖。可以通过将 OTL_ENABLED、APICURIO_ENABLED 和 JOLOKIA_ENABLED 环境变量设置为 no,在构建镜像时省略这些依赖,从而创建更小的镜像。
默认情况下,connect-base 镜像将继续安装这些依赖,因此开箱即用时镜像的行为不会发生变化
PubSub 源支持并发和压缩
为了提高与 Google PubSub 的吞吐量和容量,我们引入了几个新的配置属性,以支持 PubSub 的并发和压缩。这些新的配置属性可以在任何现有的 PubSub 配置中使用。
pubsub.concurrency.threads
这指定了用于向 Google PubSub 发布消息的线程数。这可以用来扩展或限制由 Google PubSub 客户端库创建的 PubSub 线程数量。默认情况下,PubSink 使用客户端库的默认行为。
pubsub.compression.threshold.bytes
当设置为 0 或更大的值时,PubSub 源启用可选的压缩,以传输事件批次到 PubSub 端点。是否使用压缩由提供的阈值定义。如果批次的总字节数小于阈值,将不使用压缩。如果批次的总字节数等于或大于阈值,则使用压缩。
PubSub 源支持区域性端点
在使用 PubSub 源时,pubsub.address 通常不足以满足生产系统中可能需要与特定地区(即区域)端点交互的需求。为了解决这一问题,Debezium 3.1 引入了一个新的配置属性,pubsub.region。
新的 pubsub.region 属性允许指定要连接的 Google Cloud 区域,例如 us-central1 或 asia-northeast1。指定后,Debezium 将使用格式为 <region>-pubsub.googleapis.com:443 的区域性端点。这使得可以连接到特定区域的端点,而不是全局端点。
pubsub.region 和 pubsub.address 配置属性是互斥的。如果在配置中提供了 pubsub.address,pubsub.region 将被忽略。
RabbitMQ 源支持基于键的路由
在 Debezium 3.1 中,我们改变了使用配置路由事件的方式。这一新方法采用了基于策略的设计,保留了旧的行为并引入了新的基于键的路由机制。
首先,rabbitmq.routingKeyFromTopicName 已被弃用,并将在未来的版本中移除。此功能已合并到新的 rabbitmq.routingKey.source 配置属性中,可以设置为以下值之一:
static
使用静态路由源时,RabbitMQ 源将使用在 sink 配置中指定的 rabbitmq.routingKey 静态值。由于此值在配置中设置并在 sink 启动时读取,因此该值在整个运行期间保持不变。
topic
使用主题路由源时,RabbitMQ 源将根据目标主题名称生成路由键。此模式替换了旧的 rabbitmq.routingKeyFromTopicName 配置属性行为,该属性现已弃用。
key
使用新的键路由源时,RabbitMQ 源将根据事件的记录键生成路由键。这提供了灵活性,可以控制 RabbitMQ 使用原始的 Debezium 变更事件的键,或者在将事件发送到 RabbitMQ 之前通过自定义转换来更改事件的键。
相关文章:
Debezium日常分享系列之:Debezium 3.1.0.Beta1发布
Debezium日常分享系列之:Debezium 3.1.0.Beta1发布 新特性和改进Debezium 平台的首次发布Percona 的最小锁定新的 Oracle 源信息 SCN 和时间戳字段Vitess Epoch/零日期列解析的变化Vitess 二进制排序的 tiny、medium 和 long 文本列的变化CloudEvent traceparent 支…...
21.多态
一、多态概念 多种形态。 静态多态:编译时多态。(函数重载) 动态多态:运行时多态。(继承关系下,调用父类指针或引用,对于不同的对象有不同的行为) 二、多态的定义及实现 1ÿ…...
【蓝桥杯】第十三届C++B组省赛
⭐️个人主页:小羊 ⭐️所属专栏:蓝桥杯 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 试题A:九进制转十进制试题B:顺子日期试题C:刷题统计试题D:修剪灌木试题E…...
C# PaddleOCR字符识别
1 安装Nuget 2 C# using System; using OpenCvSharp; using Sdcb.PaddleOCR; using Sdcb.PaddleOCR.Models.Local; using Sdcb.PaddleOCR.Models; using Sdcb.PaddleInference;namespace ConsoleApp1 {public class MichaelOCR{string imagePath "D:\\BUFFER\\VS\\Text\…...
网络爬虫相关
一、爬虫的基础内容 1、基本概念和用途 1.1、概念: 模拟浏览器、发送请求,获取响应。(只能获取客户端所展示出来的数据) 1.2、特点:知识碎片化,针对不同的网站对应的方法也不同。 爬虫:模拟…...
算法及数据结构系列 - 二分查找
系列文章目录 算法及数据结构系列 - BFS算法 文章目录 二分查找框架思路经典题型二分查找寻找左侧边界寻找右侧边界 刷题875. 爱吃香蕉的珂珂1011. 在 D 天内送达包裹的能力392. 判断子序列 二分查找 框架思路 int binarySearch(int[] nums, int target) {int left 0, righ…...
多环境开发-Profiles
在实际的项目开发中,我们通常会涉及多个环境,如开发环境(dev)、测试环境(test)和生产环境(pro)。在不同的环境下,程序的配置信息会有所不同,例如连接的数据库…...
《TCP/IP网络编程》学习笔记 | Chapter 18:多线程服务器端的实现
《TCP/IP网络编程》学习笔记 | Chapter 18:多线程服务器端的实现 《TCP/IP网络编程》学习笔记 | Chapter 18:多线程服务器端的实现线程的概念引入线程的背景线程与进程的区别 线程创建与运行pthread_createpthread_join可在临界区内调用的函数工作&#…...
MambaVision:一种Mamba-Transformer混合视觉骨干网络
摘要 我们提出了一种新型混合Mamba-Transformer主干网络,称为MambaVision,该网络专为视觉应用而设计。我们的核心贡献包括重新设计Mamba公式,以增强其对视觉特征的高效建模能力。此外,我们还对将视觉Transformer(ViT&…...
【Visio使用教程】
Visio使用教程 1. Visio 的基本介绍1.1 Visio 是什么?核心特点: 1.2 主要功能与应用场景典型用途:行业应用: 1.3 版本与兼容性1.4 Visio下载1.5 安装 2. Visio 的界面与基础操作2.1 界面布局详解2.2 创建新文档与模板选择2.3 形状…...
深度学习-服务器训练SparseDrive过程记录
1、cuda安装 1.1 卸载安装失败的cuda 参考:https://blog.csdn.net/weixin_40826634/article/details/127493809 注意:因为/usr/local/cuda-xx.x/bin/下没有卸载脚本,很可能是apt安装的,所以通过执行下面的命令删除: a…...
什么是梯度方差和缩放因子
什么是梯度方差和缩放因子 目录 什么是梯度方差和缩放因子计算梯度方差(Fisher 信息)作用梯度方差计算方式(方差越大,参数越重要,小步更新(细致一些))示例使用缩放因子作用示例两者的区别总结在 LoRA(Low-Rank Adaptation)中,计算梯度方差和使用缩放因子是两个不同的概…...
Linux 如何上传本地文件以及下载文件到本地命令总结
如果你希望在 Shell 终端中将远程服务器上的文件下载到本地电脑,可以使用以下工具和命令: 1. rz / sz(用于 Xshell、MobaXterm 等终端) 如果你使用的是Xshell、SecureCRT、MobaXterm等支持 rz/sz 的终端,可以使用 rz …...
学习单片机需要多长时间才能进行简单的项目开发?
之前有老铁问我,学单片机到底要多久,才能进行简单的项目开发?是三个月速成,还是三年磨一剑? 今天咱们就来聊聊这个话题,我不是什么高高在上的专家,就是个踩过无数坑、烧过几块板子的“技术老友”…...
stm32 L432KC(mbed)入门第一课
目录 一. 前言 二. 专栏意义 三. MS入门第一课 一. 前言 新的一年MS课程又开始了,同时也到了该专栏的第三个年头。在前两年中,该专栏帮助了很多第一次接触单片机的同学。其中,有的同学订阅专栏是为了更好的完成并且通过MS这门课程…...
【面试手撕】非常规算法,多线程常见手撕题目
【面试手撕】非常规算法,多线程常见手撕题目 生产者消费者ReentrantLock实现的生产苹果/消费苹果synchronized实现的生产消费LinkedBlockingQueue阻塞队列方法实现多条件资源分配分布式任务调度模拟 交替打印两个线程交替打印1-100之间的数ReentrantLock 实现synchr…...
Python 基础语法详解
一、变量和数据类型 变量 在 Python 中,变量无需声明类型,直接赋值即可。变量名区分大小写。 # 整数类型 age 25 print(age) # 输出:25# 浮点数类型 height 1.75 print(height) # 输出:1.75# 字符串类型 name "张三&…...
批量给 Excel 添加或删除密码保护|Excel 批量设置打开密码和只读密码
我们在将 Excel 文档发送给第三方或者进行存档的时候,对 Excel 文档添加密码保护是非常重要的一个操作。添加保护后的 Excel 文档。就只能有相应权限的用户才能够打开或者编辑操作。尤其是当我们 Excel 文档中内容非常敏感非常重要的时候,添加保护就显得…...
4.JVM-垃圾回收介绍
记录个人学习中记录笔记,如有错误请您指正,谢谢🙏 垃圾回收器发展史 传统垃圾回收: 分代回收 不同代有不同的垃圾回收机制 保底 标记清除算法 垃圾识别算法 引用计数法 缺陷:下图2 出现循环引用 无法解决 可达性分析 大部分(Java,pytho…...
Redis-锁-商品秒杀防止超卖
一、秒杀(Seckill) 1. 定义 秒杀:短时间内(如1秒内)大量用户同时抢购 限量低价商品 的营销活动。典型场景:双11热门商品抢购、小米手机首发、演唱会门票开售。 2. 技术挑战 挑战点说明后果…...
PostgreSQL 多数据库集簇配置及多数据库复制方法【流程+代码实例】
PostgreSQL 多数据库集簇配置及多数据库复制方法 1. 多数据库集簇配置 安装下载完postgresql后,系统此时包含一个postgres用户和一个名为postgres的默认数据库。 PostgreSQL 基本命令 服务管理命令 # 停止和启动及重启PostgreSQL服务 sudo systemctl stop postgr…...
【k8s004】 Docker 打包 K8s镜像
文章目录 一. 准备工作1. 安装 Docker: [官方安装文档](https://docs.docker.com/get-docker/)2. 准备应用代码(示例使用 Node.js 应用) 二. 创建 Dockerfile3、构建镜像(注意最后的点号)4、测试运行5、推送镜像到仓库6、 Kuberne…...
std::invoke详解
基础介绍 c17版本引入了std::invoke特性,这是一个通用的调用包装器,可以统一调用: 普通函数成员函数函数对象Lambda表达式指向成员的指针 它的主要作用是提供一个统一的方式来调用各种可调用对象。 std::invoke依赖的头文件:#…...
第一个vue项目
项目目录 启动vue项目 npm run serve 1.vue.config.js文件 (CLI通过vue-cli-serve启动项目,解析配置配置文件vue-condig-js) // vue.config.js //引入path板块,这是Node.js的一个内置模块,用于处理文件路径,这里引用…...
基于CNN的多种类蝴蝶图像分类
基于CNN的多种类蝴蝶图像分类🦋 基于卷积神经网络对64992786张图像,75种不同类别的蝴蝶进行可视化分析、模型训练及分类展示 导入库 import pandas as pd import os import matplotlib.pyplot as plt import seaborn as sns import numpy as np from …...
Unity插件-适用于画面传输的FMETP STREAM使用方法(三)基础使用
目录 一、插件介绍 二、组件介绍 三、Game View Streaming 1、使用 FM Network UDP 的基本设置 Server Scene Client Scene 2、使用使用 FM WebSocket 的基本设置 四、Audio Streaming 五、Microphone Streaming 一、插件介绍 Unity插件-适用于画面传输的…...
微信小程序wx.request接口报错(errno: 600001, errMsg: “request:fail -2:net::ERR_FAILED“)
来看看报错 报错如下: 请求发送部分,代码如下: uni.request({url: self.serverUrl "/getRealName",method: GET,data: {"code": self.info.code,},header: {"Authorization": uni.getStorageSync(tokenHead) uni.getStorageSync(token)}}…...
使用Docker快速搭建OpenAI兼容的Embeddings与Rerank双API服务
使用Docker快速搭建OpenAI兼容的Embeddings与Rerank双API服务 前言环境准备硬件要求软件依赖双服务部署指南1. Embeddings API部署启动容器参数说明2. Rerank API部署启动容器服务验证与测试通用验证方法1. Embeddings API测试请求示例响应特征2. Rerank API测试请求示例响应解…...
基于Python+MySQL编写的(WinForm)图书管理系统
一、项目需求分析 1.1 项目介绍 项目背景 图书馆管理系统是一些单位不可缺少的部分,书籍是人类不可缺少的精神食粮,尤其对于学校来说,尤其重要。所以图书馆管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管…...
[贪心算法] 摆动序列
1.解析 这里我们的贪心体现在,这里我们只需要找到每一个拐点位置的数字即可, 证明: 当我们在A点时,我们下一步的选择有四种 A到D这个线段内的数字(不包括D)选择D点D到F的点F之后的点 对于A到D来说…...
