Kafka 3.3使用KRaft共识协议替代ZooKeeper

2023-03-29 13:50:48 浏览数 (1)

作者 | Emeni Oghenevwede

译者 | 明知山

策划 | 丁晓昀  

Apache 软件基金会发布了包含许多新特性和改进的 Kafka 3.3.1。这是第一个标志着可以在生产环境中使用 KRaft(Kafka Raft)共识协议的版本。在几年的开发过程中,它先是在 Kafka 2.8 早期访问版本中发布,然后又在 Kafka 3.0 预览版本中发布。

KRaft 是一种共识协议,可以直接在 Kafka 中管理元数据。元数据的管理被整合到了 Kafka 当中,而不需要使用像 ZooKeeper 这样的第三方工具,这大大简化了 Kafka 的架构。这种新的 KRaft 模式提高了分区的可伸缩性和弹性,同时简化了 Kafka 的部署,现在可以不依赖 ZooKeeper 单独部署 Kafka 了。

KRaft 使用了 Raft 共识算法的一种基于事件的变体,因此得名。

随 KRaft 引入的新的仲裁控制器确保元数据在整个仲裁中可以被准确复制。活动控制器将元数据存储在事件源日志主题中,仲裁中的其他控制器对活动控制器创建的事件做出响应。事件日志定期进行快照,确保日志不会无限增长。与基于 ZooKeeper 的控制器不同,如果出现了问题,仲裁控制器不需要从 ZooKeeper 加载状态,因为集群的内部状态已经分布在元数据主题中。这大大减少了不可用时间窗口,缩短了系统最坏情况恢复时间。下图显示了使用新的仲裁控制器比使用 ZooKeeper 更快地关闭具有 200 万个分区的 Kafka 集群。

新的 KRaft 共识算法和仲裁控制器使得 Kafka 集群可以扩展到数百万个分区,不仅提升了稳定性,让 Kafka 变得更容易监控、管理和支持,而且让整个系统可以有一个单一的安全模型,使控制器故障转移接近瞬时。

Kafka 社区计划在下一个版本(3.4)中弃用 ZooKeeper,然后在 4.0 版本中完全删除它。

此外,Kafka 3.3 还提供了其他一些新特性,比如添加了与元数据日志处理错误相关的指标,允许用户为其他用户创建委托令牌,以及严格统一的粘性分区器,以缩短分区时间。

对于 Kafka Streams,这个版本增加了源 / 接收器指标,如消费 / 生产吞吐量、暂停 / 恢复拓扑,并集成了 KStream transform() 和 process() 方法。Kafka Connect 增加了对源连接器的精确一次语义支持。

原文链接:

https://www.infoq.com/news/2022/10/apache-kafka-kraft/

声明:本文为InfoQ翻译,未经许可禁止转载。

今日好文推荐

对话iPod之父:这不是互联网最坏的年代

“羊了个羊”背后公司清仓式分红10亿元;Meta元宇宙部门今年已亏94亿美元;微软称GitHub年收入10亿美元|Q资讯

全面审查Twitter代码、当场炒掉CEO等众多高管:马斯克正式入主Twitter

字节跳动开源BitSail:重构数据集成引擎,走向云原生化、实时化

0 人点赞