Kafka2.8.0发布信息


发布于 2021-02-14 / 79 阅读 / 0 评论 /
Kafka2.8.0发布内容和发布时间

Kafka2.8.0发布信息可参考https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=173081737

1.发布时间

KIP Freeze时间:2021年1月27日

Feature Freeze时间:2021年2月3日

Code Freeze时间:2021年2月17日

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

2.版本需求

Kafka2.8.0版本对以下13个特性进行了开发。

KIP-700: Add Describe Cluster API

KIP-696: Update Streams FSM to clarify ERROR state meaning

更新 Streams FSM 以澄清ERROR状态的含义

KIP-689: Extend StreamJoined to allow more store configs

扩展 StreamJoined 以允许更多的存储配置

KIP-684 - Support mutual TLS authentication on SASL_SSL listeners

支持使用SASL_SSL侦听器实现相互TLS身份验证

KIP-680: TopologyTestDriver should not require a Properties argument

KIP-676: Respect logging hierarchy

KIP-673: Emit JSONs with new auto-generated schema

KIP-671: Introduce Kafka Streams Specific Uncaught Exception Handler

引入 Kafka-Streams 专用的未捕获异常处理程序

KIP-663: API to Start and Shut Down Stream Threads

添加用于启动和停止流线程的API

KIP-661: Expose task configurations in Connect REST API

在Connect REST API中公开任务配置

KIP-659: Improve TimeWindowedDeserializer and TimeWindowedSerde to handle window size

优化 TimeWindowedDeserializer 和 TimeWindowedSerde 处理窗口大小

KIP-612: Ability to Limit Connection Creation Rate on Brokers

给Broker上的连接创建速率添加IP限制

KIP-572: Improve timeouts and retries in Kafka Streams

改善Kafka流中的超时和重试情况

3.特别说明——KRaft

2.8.0版本将是第一个不需要ZooKeeper就可以运行Kafka的版本,而这也被称为Kafka Raft Metadata mode(Kafka Raft 元数据模式)。

KRaft定义

KRaft(Kafka Raft)是 Kafka 引入的新一代元数据管理机制,旨在取代 Zookeeper,简化架构并提升性能。KRaft 模式通过 Kafka 自的 Raft 共识协议管理元数据,消除了对外部 Zookeeper 的依赖。

KRaft发展路线

KRaft自 Kafka 2.8引入早期版本,并在 3.3 版本中成为生产就绪模式Kafka 4.0 完全移除 Zookeeper 依赖,KRaft 成为默认元数据管理方式,

KRaft功能

(1)元数据管理:KRaft将集群元数据存储在 Kafka 内部的 cluster_metadata 单分区主题中,使用事件驱动的存储模型。元数

据包括 Broker 配置、主题分区分配、领导者状态等,

(2)共识协议:基于 Raft 协议,KRaft 使用一组控制器 (Cntroller) 节点组成 quorum,通过领导者-跟随者模式确保元数据一致

性和高可用性。

(3)快照机制:通过定期生成快照,防止元数据日志无限增长,提高存储效率,无需重启集群。

(4)动态管理: 支持动态添加或移除控制器节点 (自 Kafka 3.9 起,KIP-853)

KRaft特性

(1)简化架构:移除 Zookeeper 依赖,减少运维复杂性,统一 Kafka 的安全模型和监控体系。

(2)高性能:KRaft 模式下,控制器故障转移更快,元数据管理支持百万级分区,显著提升集群扩展性.

(3)生产就绪:自 Kafka 3.3 起,KRaft 适用于生产环境,但建议在 3.7 或更高版本迁移以确保稳定性。

(4)迁移路径:从Zookeeer到 KRaft 的迁移需谨慎规划,涉及元数据转换和集群升级,推荐在测试环境中进行多次试验(参考KIP-833 和 KIP-866)

(5)限制:早期版本的 KRaf 模式存在一些限制,如不支持 JBOD 存储、不支持部分认证方式 (如 SCRAM-SHA-512),但这些问题在 Kafka 3.6 及以上版本中已逐步解决。

使用说明

(1)节点角色:通过 process.roles 配置,节点可以是 broker 、controller 或 combined (仅限开发测试)

(2)生产建议:生产环境中建议使用独立的控制器和 Broker 节点,至少运行 3 个控制器节点以确保 quorum 稳定性

(3)工具支持: 使用 kafka-metadata-guorum,sh 查看元数据 guorum 状态, kafka-storagesh 配置集群ID 和 SCRAM 认证

迁移注意事项

(1)确保使用 Kafka 2.8 或更高版本,推荐 3.7 或以上。

(2)备份 Zookeeper 和 Kafka 数据,记录集群配置 (如 Broker、主题、分区数)

(3)在测试环境进行多次迁移试验,避免直接在生产环境操作

(4)迁移后不可回滚至 Zookeeper (除非在“双写”模式期间)