Kafka 3.0新特性 (2)

Connect 的行为就好像上面没有提供一样。具体来说,对于它的键和值转换器,它将使用开箱即用的 JsonConverter,配置为 schemas.enable 属性值为 false 。

2.1.2 升级步骤

运行未使用JsonConverter 并对 schemas.enable 设置 false 的 Connect 集群用户,可以按照以下步骤将其 Connect 集群升级到 3.0:

停止集群上的所有工作线程

对于每个内部主题(配置、偏移量和状态):

创建一个新主题来代替现有主题

对于现有主题中的每条消息:

使用 Connect 集群的旧内部键和值转换器反序列化消息的键和值

使用 禁用模式的JSON 转换器序列化消息的键和值(通过将schemas.enable属性设置为false)

用新的键和值向新的内部主题写一条消息

重新配置每个 Connect worker 以使用步骤 2 中新创建的内部主题

启动集群上的所有worker

2.2 新功能

在本次 Kafka 3.0  版本中新增了以下功能:

添加了InsertHeader 和 DropHeader 连接转换 

在 KRaft 模式中实现 createPartitions

如果分区从 fetcher 中删除,副本 fetcher 不应在发散时期更新分区状态

2.2.1 添加 InsertHeader 和 DropHeader

之前在核心 Kafka 产品中引入了 Headers,在 Kafka Connect Framework 中公开它们将是有利的。Kafka 的 Header 是带有二进制值的简单名称,而 Connect API 已经有一个非常有用的层来处理不同类型的数据。Connect 的 Header 支持应该使用像 Kafka 这样的字符串名称,但使用与 Connect 记录键和值相同的类型来表示值。这将提供与 Connect 框架的其余部分的一致性,并使连接器和转换能够轻松地访问、修改和创建记录上的 Header。

Kafka 将 Header 定义为具有字符串名称和二进制值,但 Connect 将使用用于记录键和值的相同机制来表示 Header 值。每个 Header 值可能有一个对应的 Schema,允许连接器和转换以一致的方式处理 Header 值、记录键和记录值。Connect 将定义一种 HeaderConverter 机制以类似于Converter框架的方式序列化和反序列化标头值 ,这样现有的 Converter实现也可以实现 HeaderConverter. 由于来自不同供应商的连接器和转换可能被组合到单个管道中,因此不同的连接器和转换可以轻松地将 Header 值从原始形式转换为连接器和/或转换期望的类型,这一点很重要。

注意: 为了简洁和清晰,显示的代码不包括 JavaDoc,但提议的更改确实包括所有公共 API 和方法的 JavaDoc。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zggfpp.html