Kafka3.3.0版本信息


发布于 2022-07-24 / 86 阅读 / 0 评论 /
Kafka版本内容和发布时间

Kafka3.3.0发布信息可参考https://cwiki.apache.org/confluence/display/KAFKA/Release+Plan+3.3.0

1.发布时间

KIP Freeze时间:2022年6月15日

Feature Freeze时间:2022年7月6日

Code Freeze时间:2022年7月20日

代码封板后,最少需要保持2周的稳定期。

2.版本需求

Kafka3.3.0对以下19个特性进行了开发。

2.1.KIP-835: 监控KRaft Controller的健康状态

在KRaft模式中,Kafka为集群添加了一个新的Controller Quorum。这些Controller需要能够提交记录标记Kafka是可用的。衡量Kafka可用性的一种方法是定期增加高水印和增加最后提交偏移量。监控服务比起这种被动地可用性测量方法来说,还是更先进的。他们还可以使用这些指标来检查所有broker和controller是否在彼此的偏移范围内。

添加元数据日志处理错误相关指标

在 KRaft 模式下,集群元数据复制日志是集群中所有服务器的元数据相关信息的来源。处理此日志时发生的任何错误都可能导致服务器的内存状态变得不一致。重要的是要使此类错误可见。KIP-859公开了可以监控的指标,以便可以发现受影响的服务器。

KIP-851: Add requireStable flag into ListConsumerGroupOffsetsOptions

将 requireStable 标志添加到 ListConsumerGroupOffsetsOptions

KIP-851在管理客户端中添加了选项,用于在使用恰好一次语义时查询提交的偏移量。

KIP-846: Source/sink node metrics for Consumed/Produced throughput in Streams

Streams 中消费/生产吞吐量的源/接收节点指标

借助当今普通消费者中可用的指标,Kafka Streams 的用户可以在子拓扑级别推导出其应用程序的消耗吞吐量,但对于产生的吞吐量而言,情况并非如此。

KIP-846填补了这一空白,并通过引入两个新的接收节点吞吐量指标,为最终用户提供了一种计算每个子拓扑的生产率的方法。尽管可以使用现有的客户端级别指标推导出消耗的吞吐量,但 KIP-846 还为源节点的吞吐量添加了两个新指标,以提供与汇节点处新添加的指标同样细粒度的指标范围,以及以简化用户体验。

KIP-843: Adding addMetricIfAbsent method to Metrics

向 Metrics 添加 addMetricIfAbsent 方法

KIP-843允许指标 API 以原子方式查询指标(如果存在)或创建指标(如果不存在)。

KIP-841: Fenced replicas should not be allowed to join the ISR in KRaft

不应允许受保护的副本加入 KRaft 中的 ISR

KIP-841提高了干净关闭期间主题执行的保护功能。它通过强制以下不变量来完成点:

(1)受或受控关闭的副本不符合ISR的条件;

(2)受保护的或受控的受控的副本没有资格成为领导者关闭。

KIP-836: Expose replication information of the cluster metadata

公开集群元数据的复制信息

KIP-836将描述 Quorum API 显示给管理员客户端,并添加每个副本到响应中。

KIP-834: Pause / Resume KafkaStreams Topologies

暂停/恢复 KafkaStreams 拓扑

KIP-834增加了暂停和恢复拓扑的能力。这可用于减少使用的资源或修改数据管道。暂停的拓扑跳过处理、标点和备用任务。对于分布式 Streams 应用程序,每个实例都需要单独暂停和恢复。

KIP-833: Mark KRaft as Production Ready

将 KRaft 标记为生产就绪

KIP-831: Add metric for log recovery progress

为日志恢复进度添加指标

日志恢复是 Kafka 服务器启动时触发的过程,如果它之前有过不干净的关闭。它用于确保日志处于良好状态并且没有损坏。KIP-831公开指标以允许用户监控日志恢复的进度。

KIP-827: Expose log dirs total and usable space via Kafka API

通过 Kafka API 公开日志目录的总空间和可用空间

KIP-827公开了一个 RPC,用于查询每个日志目录的磁盘总大小和磁盘使用大小。这对于有兴趣在不依赖公开指标的情况下查询此信息的工具很有用。

KIP-824: Allowing dumping segmentlogs limiting the batches in the output

允许转储段日志限制输出中的批次

KIP-824允许将 kafka-dump-logs 工具配置为仅扫描和打印日志段开头的记录,而不是整个日志段。

KIP-820: Extend KStream process with new Processor API

合并 KStream 的 transform() 和 process() 方法

KIP-820泛化了 KStream API 以整合 Transformers(可以转发结果)和 Processors(不能转发)。该更改使用了新的类型安全处理器 API。这简化了 Kafka Streams,使其更易于使用和学习。

KIP-812: Introduce another form of the KafkaStreams.close() API that forces the member to leave the consumer group

引入另一种形式的 KafkaStreams.close() API,强制成员离开消费者组

KIP-812可以通过强制成员离开消费者组来有效地永久关闭流。

KIP-794: Strictly Uniform Sticky Partitioner

严格统一的粘性分区

KIP-794改进了默认分区器,以在健康的代理之间分批均匀分布非键控数据,而向不健康的代理分配更少的数据。例如,具有异常行为的生产者工作负载的 p99 延迟从 11 秒减少到 154 毫秒。

移除对partitioner.class配置的支持,而是使用partitioner.ignore.keys=true替代,分区分配通过org.apache.kafka.clients.producer.internals.BuiltInPartitioner来完成。

KIP-778: KRaft to KRaft Upgrades

KRaft 到 KRaft 的升级

KIP- 7788 允许升级 KRaft 集群,而不是臭名昭著的双滚模式。为了能够升级在 KRaft 的下模式,需要能够升级和代理 Apache 的 RPC,直到我们允许使用新的 RPC 和格式记录集群升级。

KIP-709: Extend OffsetFetch requests to accept multiple group ids.

扩展 OffsetFetch RPC 以接受多个组 id

KIP-709简化了从消费者组获取偏移量的过程,以便可以发出单个请求来获取多个组的偏移量。这具有以下优点:1)减少了请求开销;2)它简化了客户端代码。

KIP-618: Exactly-Once Support for Source Connectors

source连接器的Exactly Once的支持

KIP-618为源连接器添加了一种语义支持。Connect 框架已扩展为以原子方式将源记录及其源偏移量写入 Apache Kafka,并防止僵尸任务向 Apache Kafka 生成数据。

KIP-373: Allow users to create delegation tokens for other users

允许用户为其他用户创建委托令牌

KIP-373允许用户为其他用户创建委托令牌。这允许以下用例:1) 指定的超级用户可以创建令牌而不需要单独的用户凭据;2)指定的超级用户可以代表另一个用户运行kafka客户端。