原文地址: 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服务器和甲骨文连接器的支持即将到来!
非常感谢在很多方面做出贡献的球队:阿斯克安萨里,因德拉舒克拉,勒内克纳和贡纳莫林!