Debezium发布历史115

原文地址: https://debezium.io/blog/2021/11/30/debezium-1.8-beta1-released/

欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.

Debezium 1.8.0.Beta1 Released
November 30, 2021 by Gunnar Morling
releases mysql postgres sqlserver cassandra oracle db2 vitess outbox

我很高兴地宣布 1.8.0.Beta1 !

这个版本充满了令人兴奋的新功能,比如支持蒙戈数据库5.0,蒙戈数据库连接器的一个外发箱事件路由器,支持波斯特格雷斯逻辑解码消息,以及大量的布格菲尔斯和其他改进。总的来说,不少于 63个问题 已经为这个版本做好了准备。

让我们仔细看看其中一些。

蒙戈德事件路由器
"发送箱"模式越来越受欢迎。 以可靠的方式在微服务之间交换数据 ,不使用不安全的 双写 一个服务的数据库和阿帕奇卡夫卡。

使用外框模式,您将发送给外部消费者的消息写入专用的外框表,而不是从实际业务表中捕获更改。这很好地将您的内部数据模型与用于与外部服务通信的消息契约脱钩,使您能够独立开发和发展这些消息。在一个数据库事务中对您的业务表进行更新并插入到输出框表中,这样,这两种事情都可以完成,或者都没有完成。一旦一个消息被持久地保存在输出箱表中,Debezum就可以从那里捕获它,并使用通常的至少一次的语义将它传播给任何用户。

德贝齐姆支持通过一个特殊的单一消息转换(SMT)实现出箱模式, 事件路由器 .这将根据代表事件的聚合类型的可配置列(在域驱动设计的术语中),将事件从单一的输出箱表路由到不同的主题。另外,还有 发射出箱事件的扩展 从使用 夸克斯 ,提供云端式的微型服务。

现在这些东西被一个新的 事件路由SMT 它与蒙戈数据库的德贝兹连接器一起工作。由于蒙戈德连接器的事件格式不同于关系数据库的Debezum连接器的格式,因此需要创建这个单独的SMT。这里有一个配置SMT的例子:

{
“name”: “outbox-connector”,
“config”: {
“connector.class” : “io.debezium.connector.mongodb.MongoDbConnector”,
“tasks.max” : “1”,
“mongodb.hosts” : “rs0/mongodb:27017”,
“mongodb.name” : “dbserver1”,
“mongodb.user” : “debezium”,
“mongodb.password” : “dbz”,
“collection.include.list”: “inventory.outboxevent”,
“database.history.kafka.bootstrap.servers” : “kafka:9092”,

"transforms" : "outbox",
"transforms.outbox.type" :"io.debezium.connector.mongodb.transforms.outbox.MongoEventRouter",
"transforms.outbox.route.topic.replacement" : "${routedByValue}.events",
"transforms.outbox.collection.expand.json.payload" : "true",
"transforms.outbox.collection.field.event.timestamp" : "timestamp",
"transforms.outbox.collection.fields.additional.placement" : "type:header:eventType",
"key.converter": "org.apache.kafka.connect.storage.StringConverter",
"value.converter": "org.apache.kafka.connect.storage.StringConverter"

}
}
在这里我们使用MongoEventRouter 用于捕获来自inventory.outboxevent 收藏。事件可以像这样写,使用蒙戈数据库CLI作为例子:

new_order = { “_id” : ObjectId(“000000000000000000000002”), “order_date” : ISODate(“2021-11-22T00:00:00Z”), “purchaser_id” : NumberLong(1004), “quantity” : 1, “product_id” : NumberLong(107) }

s = db.getMongo().startSession()
s.startTransaction()

s.getDatabase(“inventory”).orders.insert(new_order)
s.getDatabase(“inventory”).outboxevent.insert({ _id : ObjectId(“000000000000000000000001”), aggregateid : new_order._id, aggregatetype : “Order”, type : “OrderCreated”, timestamp: NumberLong(1556890294484), payload : new_order })

s.commitTransaction()
请注意我们是如何将插入插入到业务集合(“订单”)和事务中的出箱集合(“出箱事件”)中的,这是自第4.0版以来由MOGODB支持的。在此特定情况下,我们使用的是出箱消息本身中的实际订单对象,同时我们也可以分离这些东西,并在出箱事件中选择另一个采购订单表示形式。

命令的标识 合计的 作为卡夫卡中的消息键,确保与给定的采购订单相关的所有收发箱事件的顺序一致。… 集合类型 是用来确定事件路由的主题名称,Order.events 在这个例子中。唯一的 留言的身份证 它本身在卡夫卡消息中作为头标题进行传播,例如允许消费者识别重复的消息。

你能找到 完整例子 在我们的系统中使用这个新的蒙戈数据库事件路由SMT 数据存储库 .非常感谢 光宏 ,他们不仅提供了实际的特性实现本身,而且还创建了这个示例。

接下来的步骤可能是将对MOGODB的支持添加到夸克斯外包箱的扩展部分,并且可以选择从附属于实体的子文档中捕获外包箱事件,例如Order .这样,您的应用程序的数据和外框消息就可以作为一个单独的文档写入(否则应用程序会忽略外框子文档本身),而不需要交叉文档事务。这个想法是通过 DBZ-4319 如果你认为这是一个有用的补充,或者你是否有兴趣实施,请告诉我们。

对邮政总局的支助pg_logical_emit_message()
波斯特的多功能性和灵活性是一个传奇;有趣的和较不知名的特性之一是能够将消息写入数据库的事务日志(Wal),而实际上不需要对表进行写入。这是通过pg_logical_emit_message() 职能。 截至邮政总局14 ,这些逻辑解码讯息可使用pgoutput 自该发布以来,插件和Debezum也支持此事件类型。

逻辑解码消息非常适合于传播与事务相关的上下文信息,无需将这些数据存储在表中。例如,这可能是 审计元数据 比如一个业务用户触发了一些数据更改。另一个潜在的用例是上面提到的外发箱模式,它可以在没有专用的外发箱表的情况下实现,仅通过将外发箱事件写入Wal来实现。例如,当考虑到住房管理时,这是有好处的:在消息被传播到卡夫卡之后,没有必要从一个外发夹中删除消息。

"发送"逻辑解码信息就像这样简单:

SELECT pg_logical_emit_message(true, ‘some-prefix’, ‘some text’);
此发送的消息是事务性的(true ),以"某些前缀"前缀和"某些文本"作为消息内容。前缀可以用来将消息分组到逻辑上下文中。德贝兹使用前缀作为卡夫卡消息键,即。所有前缀相同的消息都将进入相应的卡夫卡主题的相同分区,因此将按照创建时的相同顺序传播给下游的消费者。

逻辑解码消息由使用新的事件类型(“M”)的DEBeZIZUSEGres连接器发出,看起来是这样的(消息内容是双编码的,在本例中使用的是BISI64):

{
“source”: {
“version”: “1.8.0.Beta1”,
“connector”: “postgresql”,
“name”: “PostgreSQL_server”,
“ts_ms”: 1559033904863,
“snapshot”: false,
“db”: “postgres”,
“schema”: “”,
“table”: “”,
“txId”: 556,
“lsn”: 46523128,
“xmin”: null
},
“op”: “m”,
“ts_ms”: 1559033904961,
“message”: {
“prefix”: “some-prefix”,
“content”: “c29tZSB0ZXh0”
}
}
消息内容是一个任意的有效载荷,除了文本表示之外,您还可以在这里插入二进制数据。事件生成者的责任是记录格式,在考虑到向后兼容性的情况下对其进行改进,并与任何客户机交换模式信息。这样做的一个很好的方法是利用架构注册表,例如: 阿皮库里奥 .你还可以考虑使用标准 阴霾 对于您的逻辑解码消息,然后,例如允许一个SMT,比如上面提到的外框事件路由器,根据事件结构中定义的属性采取行动。

如欲了解更多有关逻辑解码讯息的支持,请参阅 连接文档 .非常感谢莱仁海托华实现这个功能!

其他修正和更改
1.8.0.Beta1版本的进一步修正和改进包括:

支持在DebezUI中配置SMTS和主题创建设置;您可以在一个快速视频中看到前者。 这个职位 本周晚些时候,我们将分享另一个主题创建UI的演示

事务元数据事件( DBZ-4355 );我们亦透过把从属关系删除至VtctDD( DBZ-4324 ),增加对stop_on_reshard 旗( DBZ-4295 ),并提供指定VGtid作为流媒体的起点的能力( DBZ-4297 )。所有这些变化都是由来自条纹工程团队的杨武和施考促成的,他们同意作为连接器的维护者。多谢,欢迎!

甲骨文德贝兹连接器( DBZ-4169 )

改进的类型映射MONEY 邮政站栏( DBZ-1931 )及INTERVAL 甲骨文专栏( DBZ-1539 )

支持架构更改,同时使用mysql的Debezum连接器进行增量快照( DBZ-4196 感谢凯特·加里耶娃的这一非常有益的改进!

请参阅 释放说明 在此版本中学习更多关于这些和进一步修复的知识。

一如既往,非常感谢为这一版本做出贡献的各位:

安德烈·叶戈罗夫 , 阿尼莎 , 安萨里 , 比尔加劳 , 卡米尔歌曲 , 克兰福德 , 丹尼尔 , 贡纳·莫林 , , 雅各布格明德 , 杰克布切切克 , 伊里·帕坎奇c , 卡特琳娜·加里耶娃 , 莱伦海托华 , 麦克·卡莫尼科夫 , 谢尔盖·莫罗佐夫 , 石超安 , 光宏 , 蒂亚戈·丹塔斯 , 汤姆比利特 , 拉马嫩卡 , 沃伊泰克 ,以及 杨武 .

展望
随着Beta1的发布,我们正在接近1.8发布周期的最后阶段。您可以期待一个CR1下周的某个时候,并根据收到的问题报告,我们可能决定在圣诞节前一周,或在2022年的第一周削减最终发行。在要添加的功能方面,我们最想做的一件事就是对MOGODB连接器的增量快照支持。我们将不得不看看这是否能在剩余的时间内完成,或者这是否需要等待Debezum1.9的发布。虽然1.8的发布线路是成熟的,您也可以期待释放的德贝齐姆1.7.2。

展望未来,我们还在继续我们的德贝齐姆2.0计划,该计划将于明年某个时候发布。请加入关于这个问题的讨论。 邮寄清单 .

原文地址: https://debezium.io/blog/2021/12/02/debezium-ui-topic-groups/

Configuring Automatic Topic Creation With the Debezium UI
December 2, 2021 by Mark Drilling
releases mysql postgres mongo debezium-ui

DebezumUI团队继续为更多的功能添加支持,允许用户更容易地配置连接器。在本文中,我们将描述和演示对主题自动创建的UI支持。进一步信息,包括视频演示!

专题自动创作
当启动Debezu连接器时,捕获事件的主题由卡夫卡代理根据默认的(可能是定制的)代理配置创建(如果需要的话)auto.create.topics.enable = true )。但是,当你在一个生产环境中使用Debezum和卡夫卡时,你可能会选择禁用卡夫卡的主题自动创建能力(auto.create.topics.enable = false ),或者您希望连接器主题的配置与默认的不同。在这种情况下,您需要为Debezum捕获的数据源创建主题。

从卡夫卡2.6.0开始,卡夫卡连接提供了自定义由源连接器(如Debezns)( KIP-158 )。如果卡夫卡连接主题创建启用(topic.creation.enable = true ),Debezum用户界面现在允许您使用用户界面来配置连接器主题。

卡夫卡连接主题创作
卡夫卡将主题创作作品与群体联系起来。有一个default 组,当没有其他组定义来匹配主题时使用。

您还可以定义多个自定义主题组,每个主题组都有自己的配置。每个组可以指定其配置参数,以自定义如何创建组中匹配的主题。自定义组将返回到所需的默认组设置replication.factor 和partitions 财产。如果自定义主题组的配置未定义其他属性,则不应用默认组中指定的值。

如欲了解更多有关德贝兹主题自动创作的详情,请参阅 参考文件 .你也可以参考这个 博客帖子 作为一个完整的例子。观看下面的视频,可以快速演示德贝齐姆用户界面中的主题创建:

自发的例子
您可以使用我们的独立示例试用主题自动创建(以及更多) UI演示 -列于 脱贝齐例子 在基特布上。用户界面演示包括一个Dorker组合文件,它提供了多个数据源以及用户界面。请参阅 阅读文件 有关运行德贝齐姆UI演示的更多细节。

欲了解更多有关德贝齐姆用户界面的资料,请参阅 参考文件 .

又来了!
在即将发布的版本中,请继续关注UI中的进一步改进和新功能。对SQL服务器和甲骨文连接器的支持即将到来!

非常感谢在很多方面做出贡献的球队:阿斯克安萨里,因德拉舒克拉,勒内克纳和贡纳莫林!

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

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

相关文章

【Git版本控制 01】基本操作

目录 一、初始配置 二、添加文件 三、查看日志 四、修改文件 五、版本回退 六、撤销修改 七、删除文件 一、初始配置 Git版本控制器:记录每次的修改以及版本迭代的一个管理系统。 # 初始化本地仓库:git init(base) [rootlocalhost gitcode]# gi…

NLP_语言模型的雏形 N-Gram 模型

文章目录 N-Gram 模型1.将给定的文本分割成连续的N个词的组合(N-Gram)2.统计每个N-Gram在文本中出现的次数,也就是词频3.为了得到一个词在给定上下文中出现的概率,我们可以利用条件概率公式计算。具体来讲,就是计算给定前N-1个词时&#xff0…

ChatPromptTemplate和AI Message的用法

ChatPromptTemplate的用法 用法1: from langchain.chains import LLMChain from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import ChatPromptTemplate from langchain_community.tools.tavily_search import TavilySear…

STM32 微控制器应用领域

STM32 微控制器在多个领域有广泛应用,具体如下: 工业自动化:STM32 在工厂自动化、机器人控制、传感器接口和数据采集等方面具有出色的性能和可靠性,有助于实现高效的工业自动化系统。消费电子:STM32 适用于智能手机、…

阿里 EasyExcel 表头国际化

实体类字段使用EasyExcel提供的注解ExcelProperty,value 值写成占位符形式 ,匹配 i18n 文件里面的编码。 如: /*** 仓库名称*/ ExcelProperty("{warehouse.record.warehouseName}") private String warehouseName;占位符解析器 A…

《电子芯片的夜晚》

《电子芯片的夜晚》 在这个寂静的城市中,有一位名叫小明的程序员。他不同寻常,因为他有一项神奇的技能——他能够让电子芯片们说出自己的故事。 一天,小明收到了一块别具灵性的电子芯片,传说这块芯片能够在夜晚让设备们复活&…

笔记---dp---数字三角形模型

所谓数字三角形模型,即是从数字三角形这一题衍生出来的 题目为经典题目,不再赘述,此笔记根据AcWing算法提高课来进行对数字三角形模型衍生例题的记录 题目关系如下(见AcWing里的AcSaber): AcWing.1015.摘…

哪些软件可以提供更好的协同办公体验?

协同办公软件的选择取决于您的具体需求,包括团队规模、工作流程、预算以及所需的特定功能。根据搜索结果,这里有一些被推荐的协同办公软件,它们在不同的领域提供了良好的协同体验: 一、文档协同: 1.Pixso:这…

微信小程序(三十八)滚动容器

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.滚动触底事件 2.下拉刷新事件 源码&#xff1a; index.wxml <view class"Area"> <!-- scroll-y 垂直滚动refresher-enabled 允许刷新bindrefresherrefresh 绑定刷新作用函数bindscrollto…

单片机无线发射的原理剖析

目录 一、EV1527编码格式 二、OOK&ASK的简单了解 三、433MHZ 四、单片机的地址ID 五、基于STC15W104单片机实现无线通信 无线发射主要运用到了三个知识点&#xff1a;EV1527格式&#xff1b;OOk&#xff1b;433MHZ。下面我们来分别阐述&#xff1a; EV1527是数据的编…

【算法题】92. 反转链表 II

题目 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left 2, right 4 输出&#xff1a;[…

Android 9.0 禁用adb reboot recovery命令实现正常重启功能

1.前言 在9.0的系统rom定制化开发中,在定制recovery模块的时候,由于产品开发需要要求禁用recovery的相关功能,比如在通过adb命令的 adb reboot recovery的方式进入recovery也需要实现禁用,所以就需要了解相关进入recovery流程来禁用该功能 2.禁用adb reboot recovery命…

【力扣 67】二进制求和 C++题解(位运算+模拟+字符串+位集合)

给你两个二进制字符串 a 和 b &#xff0c;以二进制字符串的形式返回它们的和。 示例 1&#xff1a; 输入:a “11”, b “1” 输出&#xff1a;“100” 示例 2&#xff1a; 输入&#xff1a;a “1010”, b “1011” 输出&#xff1a;“10101” 提示&#xff1a; 1 <…

网神 SecGate 3600 防火墙 route_ispinfo_import_save 文件上传漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

Golang 基础 Go Modules包管理

Golang 基础 Go Modules包管理 在 Go 项目开发中&#xff0c;依赖包管理是一个非常重要的内容&#xff0c;依赖包处理不好&#xff0c;就会导致编译失败&#xff0c;本文将系统介绍下 Go 的依赖包管理工具。 我会首先介绍下 Go 依赖包管理工具的历史&#xff0c;并详细介绍下…

LeetCode动态规划的解题思路

动态规划 动态规划&#xff0c;其实就是找规律&#xff0c;总结公式/方程。 动态规划&#xff0c;类似于数学归纳法。 关键的思想在「自底向上」和「空间换时间」。 动态规划&#xff0c;可以使用一维数组&#xff0c;有时也会用到二维数组。 应用场景 “动态规划”可以用于…

idea2023创建spring项目无法选择Java8

idea2023创建spring项目无法选择Java8 今天下载了新版的idea 2023.3.2&#xff0c;但是在创建springboot项目的时候只能选择Java17和Java21&#xff0c;没法选择其他的版本。 使用下面阿里云的地址替换Server URL中的start.spring.io的地址即可 https://start.aliyun.com/替…

C#调用WechatOCR.exe实现本地OCR文字识别

最近遇到一个需求&#xff1a;有大量的扫描件需要还原为可编辑的文本&#xff0c;很显然需要用到图片OCR识别为文字技术。本来以为这个技术很普遍的&#xff0c;结果用了几个开源库&#xff0c;效果不理想。后来&#xff0c;用了取巧的方法&#xff0c;直接使用了WX的OCR识别模…

Linux大集合

Linux Linux是什么&#xff1f; Linux是一套免费使用和自由传播的类Unix操作系统&#xff0c;是一个基于POSIX和UNIX的多用户、多任务、 支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和 64位硬件。 Linux内核 是一个Linux系统…

可达鸭二月月赛——入门赛第四场T3题解

姓名 王胤皓 AC 记录 题目&#xff1a; 思路 用数组进行操作太难&#xff0c;而这些操作可以再 STL 中的 vector 容器&#xff0c;有 insert 和 erase 函数&#xff0c;所以非常方便。 vector 下标从 0 0 0 开始&#xff0c;所以所有操作都要 − 1 -1 −1。 操作 1 1 1 …