我们很自豪地代表 Apache Kafka 社区宣布发布 Apache Kafka® 3.3。3.3 版本包含许多新功能和改进。这篇博文将重点介绍一些更突出的功能。有关更改的完整列表,请务必查看发行说明。
几年来,Apache Kafka 社区一直在开发一种使用自我管理元数据运行的新方法。这种新的 KRaft 社区模式提高了可扩展性和弹性,同时实现了 Apache Kafka 的部署。另外还有在每个 Apache Kafka 周围运行 Apache ZooKeeper™ 集群的需要。
3.3 版本将 KRaft 模式标记仅作为适用于新集群的生产信息,请参考:KIP-833。
Kafka Broker Controller Producer Consumer 和 Admin Client
KIP-833:将 KRaft 标记为生产就绪
KIP将 KRaft 标记为可用于 Kafka 3.中的新近 8-3 版本的 Apache K3 的生产版本。IP -833 KRaft 3.5.0 标记为连接 KRaft 的版本。版本。
KIP-778:KRaft 到 KRaft 的升级
KIP- 7788 允许升级 KRaft 集群,而不是臭名昭著的双滚模式。为了能够升级在 KRaft 的下模式,需要能够升级和代理 Apache 的 RPC,直到我们允许使用新的 RPC 和格式记录集群升级。
KIP-841:不应允许受保护的副本加入 KRaft 中的 ISR
KIP-841提高了干净关闭期间主题执行的保护功能。它通过强制以下不变量来完成点:1)受或受控关闭的副本不符合ISR的条件;和2)受保护的或受控的受控的副本没有资格成为领导者关闭。
KIP-836:公开集群元数据的复制信息
KIP-836将描述 Quorum API 显示给管理员客户端,并添加每个副本到响应中。
KIP-835:监控 KRaft 控制器 Quorum 健康状况
使用 KRaft 模式,Apache Kafka 向集群添加了一个新的控制器仲裁。这些控制器需要能够提交记录以使 Apache Kafka 可用。KIP-835通过周期性地增加高水位线和最后提交的偏移量来衡量可用性。监控服务可以比较这些最后提交的偏移量是否正在推进。他们还可以使用这些指标来检查所有代理和控制器是否相对在彼此的偏移量内。
KIP-859:添加元数据日志处理错误相关指标
在 KRaft 模式下,集群元数据复制日志是集群中所有服务器的元数据相关信息的来源。处理此日志时发生的任何错误都可能导致服务器的内存状态变得不一致。重要的是要使此类错误可见。KIP-859公开了可以监控的指标,以便可以发现受影响的服务器。
KIP-794:严格统一的粘性分区
KIP-794改进了默认分区器,以在健康的代理之间分批均匀分布非键控数据,而向不健康的代理分配更少的数据。例如,具有异常行为的生产者工作负载的 p99 延迟从 11 秒减少到 154 毫秒。
KIP-373:允许用户为其他用户创建委托令牌
KIP-373允许用户为其他用户创建委托令牌。这允许以下用例:1) 指定的超级用户可以创建令牌而不需要单独的用户凭据;2)指定的超级用户可以代表另一个用户运行kafka客户端。
KIP-831:为日志恢复进度添加指标
日志恢复是 Kafka 服务器启动时触发的过程,如果它之前有过不干净的关闭。它用于确保日志处于良好状态并且没有损坏。KIP-831公开指标以允许用户监控日志恢复的进度。
KIP-709:扩展 OffsetFetch RPC 以接受多个组 id
KIP-709简化了从消费者组获取偏移量的过程,以便可以发出单个请求来获取多个组的偏移量。这具有以下优点:1)减少了请求开销;2)它简化了客户端代码。
KIP-827:通过 Kafka API 公开日志目录的总空间和可用空间
KIP-827公开了一个 RPC,用于查询每个日志目录的磁盘总大小和磁盘使用大小。这对于有兴趣在不依赖公开指标的情况下查询此信息的工具很有用。
KIP-851:将 requireStable 标志添加到 ListConsumerGroupOffsetsOptions
KIP-851在管理客户端中添加了选项,用于在使用恰好一次语义时查询提交的偏移量。
KIP-843:向 Metrics 添加 addMetricIfAbsent 方法
KIP-843允许指标 API 以原子方式查询指标(如果存在)或创建指标(如果不存在)。
KIP-824:允许转储段日志限制输出中的批次
KIP-824允许将 kafka-dump-logs 工具配置为仅扫描和打印日志段开头的记录,而不是整个日志段。
Kafka Streams
KIP-846:Streams 中消费/生产吞吐量的源/接收节点指标
借助当今普通消费者中可用的指标,Kafka Streams 的用户可以在子拓扑级别推导出其应用程序的消耗吞吐量,但对于产生的吞吐量而言,情况并非如此。
KIP-846填补了这一空白,并通过引入两个新的接收节点吞吐量指标,为最终用户提供了一种计算每个子拓扑的生产率的方法。尽管可以使用现有的客户端级别指标推导出消耗的吞吐量,但 KIP-846 还为源节点的吞吐量添加了两个新指标,以提供与汇节点处新添加的指标同样细粒度的指标范围,以及以简化用户体验。
KIP-834:暂停/恢复 KafkaStreams 拓扑
KIP-834增加了暂停和恢复拓扑的能力。这可用于减少使用的资源或修改数据管道。暂停的拓扑跳过处理、标点和备用任务。对于分布式 Streams 应用程序,每个实例都需要单独暂停和恢复。
KIP-820:合并 KStream 的 transform() 和 process() 方法
KIP-820泛化了 KStream API 以整合 Transformers(可以转发结果)和 Processors(不能转发)。该更改使用了新的类型安全处理器 API。这简化了 Kafka Streams,使其更易于使用和学习。
KIP-812:引入另一种形式的 KafkaStreams.close() API,强制成员离开消费者组
KIP-812可以通过强制成员离开消费者组来有效地永久关闭流。
Kafka Connect
KIP-618:source连接器的Exactly Once的支持
KIP-618为源连接器添加了一种语义支持。Connect 框架已扩展为以原子方式将源记录及其源偏移量写入 Apache Kafka,并防止僵尸任务向 Apache Kafka 生成数据。
总结
除了上面列出的所有 KIP,Apache Kafka 3.3 还包含修复和改进。了解更多:
有关更改的完整列表, 请参阅3.3.0和3.3.1的发行说明
观看视频
收听播客
下载Apache Kafka 3.3并开始使用