博客
2023 年 10 月 10 日 - 萨蒂什·杜加纳 ( @SatishDuggana )
我们很自豪地宣布 Apache Kafka 3.6.0 发布。此版本包含许多新功能和改进。这篇博文将重点介绍一些更突出的功能。有关更改的完整列表,请务必查看发行说明。
有关显着更改列表和详细升级步骤,请参阅文档中的从任何版本 0.8.x 到 3.5.x 升级到 3.6.0部分。
将 Kafka 集群从 ZooKeeper 元数据系统迁移到 KRaft 元数据系统的功能现已准备好在生产环境中使用。有关详细信息,请参阅 ZooKeeper 到 KRaft 的迁移
操作文档。请注意,KRaft 集群仍不支持 JBOD,因此无法迁移使用 JBOD 的集群。
有关 KRaft 和 JBOD 的详细信息,
请参阅KIP-858 。
KRaft(KAFKA-15219)在3.6中完成了对委托令牌的支持,进一步缩小了基于ZooKeeper的Kafka集群与KRaft之间的功能差距。3.6 中还包括将委托代币从 ZooKeeper 迁移到 KRaft。
分层存储是一项早期访问功能。目前仅适用于非生产环境中的测试。有关更多详细信息,请参阅抢先体验发行说明。
注意:自 3.5.0 版本起,ZooKeeper 被标记为已弃用。ZooKeeper 计划在 Apache Kafka 4.0 中删除。有关更多信息,请参阅ZooKeeper 弃用文档
Kafka Broker、控制器、生产者、消费者和管理客户端
- KIP-405:Kafka 分层存储(抢先体验):
向 Kafka 引入分层存储。请注意,这是一项早期访问功能,仅建议在非生产环境中使用(有关更多信息,请参阅早期访问说明)。此功能在代理中提供了计算和存储的分离,以便在 Kafka 分层存储中本机进行可插拔存储分层,从而以最小的操作更改将存储无缝扩展到远程对象。
- KIP-890:事务服务器端防御(第 1 部分):
挂起事务会对已提交的读取使用者产生负面影响,并阻止压缩日志被压缩。KIP-890 通过验证分区添加来帮助解决挂起事务。KIP-890 的第 2 部分将优化验证,目前增加了一个额外的跃点。
在 3.6.0 中,事务验证将防止在数据分区上挂起事务。在下一个版本中,还将涵盖事务偏移提交。
- KIP-797:接受 IPv4/IPv6 端口上的重复侦听器:
到目前为止,Kafka 不支持同一端口上的重复侦听器。这在仅使用单个 IP 堆栈时有效,但如果您同时使用 IPv4 和 IPv6,则会出现问题。使用 KIP-797,可以使用在不同 IP 堆栈上具有相同端口的侦听器来配置代理。此更新不会影响已具有此功能的广告侦听器。
- KIP-863:减少 CompletedFetch#parseRecord() 内存复制:
通过使用 ByteBuffer 而不是 byte[] 进行反序列化,减少记录反序列化期间的内存分配并提高内存性能,从而提高效率。更新的公共接口包括 Deserializer 类、ByteBufferDeserializer 类和 StringDeserializer 类。
- KIP-868:元数据事务:
通过添加元数据事务来提高 KRaft 层的整体耐用性,其中元数据事务包括:
KRaft 使用记录批次作为原子性机制。通常,Raft 共识层上的获取大小存在限制,并且控制器可能会生成一组超出此限制的原子记录。此更新引入了标记记录,允许将更大的原子记录集分批发送到 Raft 共识层。这绕过了获取限制。
- KIP-902:将 Zookeeper 升级到 3.8.2:
这会将与 Kafka 捆绑在一起的 ZooKeeper 版本升级到版本 3.8.2。新版本包括多项更新和安全改进。
- KIP-917:远程日志段的附加自定义元数据:
它引入了可选的自定义元数据作为远程日志段元数据的一部分。当调用 copyLogSegmentData() 时,RemoteStorageManager 返回可选的自定义元数据。它将与远程日志段元数据一起传递。
- KIP-937:改进消息时间戳验证:
它通过为消息时间戳添加更多验证逻辑来提高数据完整性并防止因时间戳处理不准确而导致的潜在陷阱。虽然过去的时间戳在 Kafka 中很常见,但未来的时间戳可能表示格式不正确的整数。KIP-937 拒绝具有未来时间戳的消息并提供描述性豁免。
- KIP-938:添加更多衡量 KRaft 性能的指标:
添加新的控制器、加载器和快照发射器 KRaft 性能指标。
Kafka流
- KIP-923:为流表连接添加宽限期:
为流表连接添加宽限期,以改进表端无序数据处理。连接的对象有一个名为“withGracePeriod”的新方法,该方法将导致表端查找仅在宽限期过后才发生。
- KIP-941:范围查询接受 null 下限和上限:
以前,RangeQuery 不支持 null 来指定“无上限/下限”。KIP-941 允许用户将 null 传递到 withRange(...) 的下限/上限以指定全开或半开范围:
- `withRange(null, null)` == `withNoBounds()`
- `withRange(lower, null)` == `withLowerBound(lower)`
- `withRange(null, upper)` == `withUpperBound(upper)`
Kafka连接
- KIP-793:允许接收器连接器与主题变异 SMT 一起使用:
添加对异步接收器连接器的主题变异 SMT 的支持。这是为了解决覆盖 SinkTask::preCommit 方法的接收器连接器与改变 SinkRecord 主题字段的 SMT 之间的不兼容性。
- KIP-875:Kafka Connect 中的一流偏移量支持:
为 Kafka Connect 中的偏移量提供一流的管理支持。KIP-875 第 1 部分添加了端点以获取偏移量以及连接器的新 STOPPED 状态。现在已添加更改偏移量和重置偏移量端点。
Action |
Description |
GET /connectors/{connector}/offsets |
Retrieve the offsets for a connector; the connector must exist |
PATCH /connectors/{connector}/offsets |
Alter the offsets for a connector; the connector must exist, and must be in the STOPPED state
|
DELETE /connectors/{connector}/offsets |
Reset the offsets for a connector; the connector must exist, and must be in the STOPPED state
|
PUT /connectors/{connector}/pause |
Pause the connector; the connector must exist |
- KIP-898:现代化 Connect 插件发现:
通过 KIP-898,Connect 工作人员现在可以在启动期间直接读取 ServiceLoader 清单和模块信息,以实现更高效的插件类发现。请注意,此更新允许连接器开发人员向其插件添加服务声明。
概括
准备好开始使用 Apache Kafka 3.6.0 了吗?查看发行说明中的所有详细信息并下载Apache Kafka 3.6.0。
A. Sophie Blee-Goldman、Aaron Ai、Abhijeet Kumar、Aindriu-Aiven、Akhilesh Chaganti、Alexander Dupriez、
Alexander
2023 年 7 月 21 日 - Divij Vaidya ( @DivijVaidya )
我们很自豪地宣布 Apache Kafka 3.5.1 发布。这是一个安全补丁版本。它将依赖项 snappy-java 升级到不易受到CVE-2023-34455影响的版本。您可以在Kafka CVE 列表中找到有关 CVE 的更多信息。有关更改的完整列表,请务必查看发行说明。
有关显着更改列表和详细升级步骤,请参阅文档中的从任何版本 0.8.x 到 3.4.x 升级到 3.5.1部分。
Kafka Broker、控制器、生产者、消费者和管理客户端
-
将依赖项 snappy-java 升级到不易受
CVE-2023-34455 影响的版本。
您可以在 Kafka CVE 列表中找到有关 CVE 的更多信息。
-
修复了 3.3.0 中引入的回归,该回归导致
security.protocol
配置值仅限于大写。修复后,security.protocol
值不区分大小写。有关详细信息,请参阅KAFKA-15053。
概括
这是社区的努力,因此感谢所有为此版本做出贡献的人,包括我们的所有用户和 22 位作者。请报告无意的遗漏。
Alyssa Huang、Aman Singh、Andymg3、Bo Gau、Calvin Liu、Chia-Ping Tsai、Chris Egerton、D00791190、Damon Xie、David Arthur、David Jacot、Divij Vaidya、DL1231、Zio、Manikumar Reddy、Manyanda Chitimbo、Mickael Maison、minjian .cai、可靠来源、Sambhav Jain、vamossagar12、Yash Mayya
2023 年 6 月 15 日 - Mickael Maison ( @MickaelMaison )
我们很自豪地宣布 Apache Kafka 3.5.0 发布。此版本包含许多新功能和改进。这篇博文将重点介绍一些更突出的功能。有关更改的完整列表,请务必查看发行说明。
请参阅文档中的从任何版本 0.8.x 到 3.4.x 升级到 3.5.0部分,了解显着更改的列表和详细的升级步骤。
在不停机的情况下将 Kafka 集群从 ZK 迁移到 KRaft 模式的能力仍然是早期访问功能。目前仅适用于非生产环境中的测试。有关更多详细信息,请参阅KIP-866 。
注意:ZooKeeper 在此版本中现已标记为已弃用。ZooKeeper 计划在 Apache Kafka 4.0 中删除。(参见ZooKeeper 弃用)
Kafka Broker、控制器、生产者、消费者和管理客户端
- KIP-881:Kafka 消费者的机架感知分区分配:Kafka 3.4.0 仅包含KIP-881的协议更改。内置分配器现已更新以支持机架感知。
- KIP-887:添加 ConfigProvider 以利用环境变量:KIP-887引入了一个新的
ConfigProvider
实现,EnvVarConfigProvider
用于从环境变量中检索配置。
- KIP-900:KRaft kafka-storage.sh API 添加以支持 Kafka Brokers 的 SCRAM:KIP-900更新了该
kafka-storage
工具并添加了一种机制来配置 SCRAM 以使用 KRaft 进行代理间身份验证。
- KIP-903:不应允许具有过时代理纪元的副本加入 ISR: KIP-903解决了代理间复制协议的限制,如果代理发生故障而另一个代理异常关闭,则可能会导致数据丢失。
Kafka流
- KIP-399:扩展 ProductionExceptionHandler 以涵盖序列化异常:KIP-399
handleSerializationException()
在接口中添加了一个方法 ,ProductionExceptionHandler
以处理生成记录时遇到的任何序列化错误。
- KIP-889:版本化状态存储:KIP-889引入了版本化状态存储,以提高处理无序记录时连接的准确性。
- KIP-907:将布尔 Serde 添加到公共接口:Kafka Streams 包含适用于大多数原始类型的内置 Serdes。KIP-907添加了一个新的布尔值。
Kafka连接
- KIP-710:完全支持专用 MirrorMaker 2.0 集群中的分布式模式:KIP-710改进了 MirrorMaker 的专用模式。它现在支持运行多个实例并处理自动重新配置。
- KIP-875:Kafka Connect 中的一流偏移量支持:KIP-875添加了用于管理连接器偏移量的 REST API 端点。3.5.0 仅包含列出偏移量的端点。用于更新和删除偏移量的端点将在未来版本中提供。
- KIP-894:使用incrementalAlterConfig同步主题配置:使用KIP-894,MirrorMaker可以在集群之间镜像主题配置时使用
IncrementalAlterConfig
API。
- KAFKA-14021:MirrorMaker 2 应实现 KIP-618 API:KAFKA-14021向 MirrorSourceConnector 添加了对一次性语义的支持。
概括
A. Sophie Blee-Goldman、Akhilesh Chaganti、Alex Sorokoumov、Alexandre Dupriez、Alyssa Huang、Anastasia Vela、Andreas Maechler、andymg3、artem Livshits、atu-sharm、bachmanity1、Bill Bejeck、Brendan Ribera、Calvin Liu、Chaitanya Mukka、Cheryl Simmons , Chia-Ping Tsai, Chris Egerton, Christo Lolov, Colin P. McCabe, csolidum, Daniel Scanteianu, David Arthur, David Jacot, David Karlsson, David Mao, Dejan Stojadinović, Divij Vaidya, Dorwi, Drgnchan, Daniel Urban, Edoardo Comar, Egyedt、Emilnkrastev、Eric Haag、Farooq Qaiser、Federico Valeri、Gantigmaa Selenge、Greg Harris、Guozhang Wang、Hao Li、Hector Geraldino、Himani Arora、Hoki Min、Hudeqi、iamazy、Iblis Lin、Ishmael Juma、Ivan Yurchenko、Jacob Scholz、杰森·古斯塔夫森、杰夫·金、吉姆·加拉辛、豪尔赫·斯蒂芬·奎尔凯特·奥特姆、何塞·普拉特、何塞·阿曼多·加西亚·桑西奥、胡安·何塞·拉莫斯、刘俊阳、贾斯汀·奥尔尚、卡迈勒·昌德拉普拉卡什、柯克·特鲁、Kowshik Prakasam、Littlehorse-eng、liuzc9、卢卡斯·布鲁茨奇、 Lucia Cerchie、Luke Chen、Manikumar Reddy、Mananda Chitimbo、Matthew Wong、Matthias J. Sax、Matthias Seiler、Michael Marshall、Mickael Maison、Nicolas Guyomar、Nikolay、Paolo Patierno、Philip Nee、Pierangelo Di Pilato、Proven Provenzano、Purshotam Chauhan、 Qing、Rajini Sivaram、RivenSun、Robert Young、Rohan、Roman Schmitz、Ron Dagostino、Ruslan Krivoshein、Satish Duggana、Shay Elkin、Shekhar Rajak、Simon Woodman、Spacrocket、Stejani-cflt、Terry、Tom Bentley、Vamossagar12、Victoria Xia、Viktor Somogyi-Vass、Vladimir Korenev、Yash Mayya、李正贤