Kafka 将 KRaft 标记为生产就绪功能,不再需要运行 Zookeeper。
2022 年 10 月 3 日,Kafka 3.3 发布——标志着 KRaft 共识协议已准备好生产,并消除了 Kafka 集群中对 Zookeeper 的需求。这当然是非常令人兴奋的消息,但让我们更好地了解幕后发生的事情。在本文中,我们将探索 Raft,查看 Kafka 的 KRaft 实现的高级概述。我将为好奇的人提供额外的链接,以便您可以根据需要了解有关这些概念的更多信息。
Raft 共识协议背后的想法来自于这篇论文。这篇论文很容易理解,它是开始你阅读学术论文之旅的好论文——我强烈建议你去看看。我也会带你过去。
Raft 的设计易于理解。它来自与 Paxos 类似的共识协议家族。Chubby(谷歌的内部锁服务)背后的工程师有一句名言
Paxos 算法的描述与现实世界系统的需求之间存在很大差距。为了构建一个真实世界的系统,专家需要使用散布在文献中的众多想法,并进行几个相对较小的协议扩展。累积的努力将是巨大的,最终的系统将基于未经证实的协议。
作者决定为状态机复制模型(也称为仲裁复制)设计一个更简单的协议。首先,什么是分布式共识协议?分布式意味着涉及多台计算机,共识意味着协议,因此分布式共识意味着以容易出现节点故障和网络分区的方式在多个服务器之间就共享状态达成一致。
Raft 定义了三个角色