Kafka 2.8与ZooKeeper正式分手

 2023-09-15 阅读 24 评论 0

摘要:本文来说下Kafka 2.8与ZooKeeper正式分手 文章目录概述核心改进小结 概述 平时关注 Kafka 的小伙伴要注意了,2021年4月19日,Kafka 2.8.0正式发布! kafka zk。这次升级包括了很多重要的改动,其中最引人瞩目的就是kafka通过自我管理的仲裁来替代Zo

本文来说下Kafka 2.8与ZooKeeper正式分手

文章目录

  • 概述
  • 核心
  • 改进
  • 小结


概述

平时关注 Kafka 的小伙伴要注意了,2021年4月19日,Kafka 2.8.0正式发布!

kafka zk。这次升级包括了很多重要的改动,其中最引人瞩目的就是kafka通过自我管理的仲裁来替代ZooKeeper,通俗的说,Kafka将不再需要ZooKeeper,正式分手!

其实早在19年,就有人在社区中提出要移除Kafka对Zookeeper依赖的想法,当时被视为几乎不可能,但随着众人齐心协力踌躇满志,竟然真的一步一步逐渐实现了。

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

在这里插入图片描述


核心

分布式发布与订阅系统Apache Kafka在即将发布的2.8版本,使用Kafka内部的仲裁(Quorum)控制器来取代ZooKeeper,因此用户第一次可在完全不需要ZooKeeper的情况下执行Kafka,这不只节省计算资源,并且也使得Kafka性能更好,还可支持规模更大的集群。

kafka cluster?过去Apache ZooKeeper是Kafka这类分布式系统的关键,因为ZooKeeper管理元资料,存储着资料分割的位置,以及主要副本等信息,ZooKeeper扮演协调代理的角色,所有代理服务器启动时,都会连接到Zookeeper进行注册,当代理状态发生变化时,Zookeeper也会存储这些资料,在过去,ZooKeeper是一个强大的工具,但是毕竟ZooKeeper是一个独立的软件,使得Kafka整个系统变得复杂,因此官方决定使用内部仲裁控制器来取代ZooKeeper。

这项工作从去年4月开始,而现在这项工作取得部分成果,用户将可以在2.8版本,在没有ZooKeeper的情况下执行Kafka,官方称这项功能为Kafka Raft元资料模式(KRaft)。在KRaft模式,过去由Kafka控制器和ZooKeeper所操作的元资料,将整合到这个新的Quorum控制器,并且在Kafka集群内部执行,当然,如果用户有特殊使用场景,Quorum控制器也可以在专用的硬件上执行。

在Kafka内部执行的Quorum控制器,会使用新的KRaft协议来确保仲裁间能精确地复制元资料副本,并使用事件来源存储模型来存储状态,以确保内部状态机可以精确地被重新创建,官方提到,KRaft协议具有的事件驱动特性,和基于ZooKeeper控制器不同,不会在启动之前从ZooKeeper加载装态,当领导节点变更的时候,新激活的控制器内存早已记录所有提交的元资料。

另外,KRaft协议使用事件驱动机制来关注整个集群的元资料,过去必须依赖RPC来处理的任务,现在受益于事件驱动以及实际的日志传输,这些改变所带来的好处,便是让Kafka仍够支持更多的分割。

新的仲裁控制器是专门设计在单个集群中,处理大量的分割,在过去的实例中,受限于重要的元资料,必需要在外部共识机制ZooKeeper,以及内部领导控制器Kafka间移动,Kafka仅能达到20万个分割,而在新的仲裁控制器中,过去外部共识与领导管理的角色,都由同一个组件扮演,因此现在于单个集群中,分割数可以达到过去10倍,约是2百万个分割。

kafka admin。过去Kafka因为带着ZooKeeper,因此被认为拥有沉重的基础设施,而在移除ZooKeeper之后,Kafka更轻巧更适用于小规模工作负载,轻量级单体程序适合用于边缘以及轻量级硬件解决方案。

值得注意的是,在抢先体验版中,有部分像是ACL、安全以及交易等功能都尚未支持,而且在KRaft模式下,也还不支持重新分配分割和JBOD,官方提到,这些功能会在今年稍晚的版本中提供,而且因为仲裁控制器还在实验阶段,也不建议将其用于生产环境中。​​​​


改进

所以和ZooKeeper的友好分手短期可能会有阵痛,但对于Kafka的长远发展利大于弊。

除了和ZooKeeper分开,本次更新还新增了三个功能:

[KAFKA-10500]-添加API以启动和停止流线程

kafka netty?[KAFKA-10700]-支持使用SASL_SSL侦听器实现相互TLS身份验证

[KAFKA-10749]-通过连接速率添加IP限制

而优化及修改bug更是多达百个。

一些重要的更新例如:

[KAFKA-5488]-KStream.branch不应返回必须通过已知索引访问的流数组

kafka docker、[KAFKA-6687]-允许多次阅读主题

[KAFKA-6943]-如果任何线程崩溃,或者如果所有线程崩溃,可以选择干净地关闭KS

[KAFKA-9023]-生产者网络异常响应应记录更多信息

[KAFKA-12327]-删除CompressionType中的MethodHandle用法

[KAFKA-12365]-kip-500代理/控制器不支持块API(目前)

apache kafka实战,[KAFKA-12394]-考虑主题id存在和授权错误

[KAFKA-4748]-需要一种方法同时关闭Streams应用程序中的所有工作进程

[KAFKA-10722]-即使不需要,也使用时间戳存储

[KAFKA-10723]-LogManager在关闭期间泄漏内部线程池活动


小结

Kafka 2.8与ZooKeeper正式分手以后,对kafka以后的发展还是比较有利的。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/62344.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息