Apache Kafka 3.0.0 正式发布,这是一个重要的版本更新,这次发布为 Kafka 彻底去掉ZooKeeper铺平了道路。
因此,在此背景下该版本中最突出的改进是 Kafka 的共识机制 KRaft 也就不足为奇了,该机制仍处于预览阶段。未来,KRaft 将作为 Apache Kafka 的内置共识机制将取代 Apache ZooKeeper,该版本目前提供了 KRaft 控制器和代理来为“名为 __cluster_metadata 的元数据主题分区生成、复制和加载快照”,也就是说这是 Kafka 集群存储、复制元数据的地方。
为了顺利切换到 KRaft,Kafka 团队重新设计了该工具的元数据记录类型,并让 Kafka Controller 负责在 ZooKeeper 和 KRaft 模式下生成生产者 ID。同时,从 3.0 开始,Kafka 生产者默认开启幂等性和所有副本的交付确认。
除此之外,Kafka 团队还尝试调整了当前的用例,这些用例以前很难实现。例如,监控任务通常会产生一些开销,因为无法为多个消费者组获取偏移量。这在 3.0 版的 OffsetFetch API 中得到了纠正。同时对 AdminClient.listOffsets 的改进将帮助用户测试分区的活跃度;它现在提供了查询选项,以返回分区中时间戳和具有最大时间戳的记录的偏移量。
Kafka Streams 的 TaskMetadata 接口提供了三种新方法来检查 commitedOffsets、endOffsets 和 timeCurrentIdlingStarted,这也有助于跟踪系统的健康状况。值得注意的增强功能还可以在数据集成中心 Kafka Connect 中找到,在 3.0 中,KIP-745 使用户能够通过一次调用重新启动所有或仅失败的连接器 Connector 和 Task 实例。
由于这是一个主要版本,还有一些更改可能会导致旧代码无法正常工作。其中包括弃用 Streams 中宽限期的 24 小时默认值,并用明确的新方法替换它们,这些方法要求用户要么将所述时间段设置为零,要么接受宽限期持续时间的自定义值。
Kafka 团队也开始了一些清理工作,因此用户应该为即将到来的“警告”做好准备。3.0 版本中弃用对 Java 8 和 Scala 2.12 的支持,并且将在 v4.0 中完全删除。除此之外,维护者还决定弃用消息格式 v0 和 v1,将消息格式 v2 作为默认消息格式。之后只能通过转换实现 v0 和 v1 的数据向后兼容性,但这会影响性能,因此建议大家进行升级。
更多详细信息见Kafka的博客。
评论