卡夫卡领导人多党选举与仲裁员/证人/观察员一起选举

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了卡夫卡领导人多党选举与仲裁员/证人/观察员一起选举相关的知识,希望对你有一定的参考价值。

我想在两个数据中心部署Kafka集群,每个DC上具有相同数量的节点。第一个DC用于主动模式,而第二个DC处于被动模式。

例如,假设两个数据中心都有3个节点,第一个DC上有2个同步复制(ISR),第二个DC上有一个ISR。

是否有可能让第三个DC包含仲裁者/证人/观察者节点,以便在一个DC失败的情况下,领导者选举能否在一致性方面取得正确的结果? mongoDB有这样的功能,名为Replica set Arbiter

如何在三个数据中心上部署ZooKeeper?根据我的理解,ZooKeeper不保存Kafka数据,并且不应该为Kafka主题中的每个新记录联系它,即您不为每个新记录支付第三个DC的延迟。

答案

在卡夫卡峰会2017 One Data Center is Not Enough: Scaling Apache Kafka Across Multiple Data Centers有一个演讲,谈到这个设置。汇合白皮书Disaster Recovery for Multi-Datacenter Apache Kafka® Deployments中也有一些有趣的信息。它说它可以工作,他们称之为观察者节点,但它也说没有人尝试过这个。

Zookeeper为Kafka(0.9.0+)保留以下元数据的跟踪。

  • 选择控制器 - 控制器是代理之一,负责维护所有分区的领导者/关注者关系。当节点关闭时,控制器会告诉其他副本成为分区负责人,以替换正在消失的节点上的分区负责人。 Zookeeper用于选择控制器,确保只有一个控制器,如果它崩溃,则选择一个新控制器。
  • 集群成员资格 - 哪些经纪人还活着并成为集群的一部分?这也是通过ZooKeeper管理的。
  • 主题配置 - 该主题的覆盖是什么,分区位于何处等。
  • 配额 - 允许每个客户端读取和写入多少数据
  • ACL - 允许谁读取和写入哪个主题

关于kafka和Zookeeper在Kafka FAQanswer at Quora from a Kafka commiter working at Confluent之间的依赖关系的更多细节。

从我读过的资源中,在第三个具有高延迟的DC上使用两个DC(Kafka plus Zookeeper)和一个仲裁器/见证/观察者Zookeeper节点的设置可以工作但我没有找到任何实际已经实验过的资源。

以上是关于卡夫卡领导人多党选举与仲裁员/证人/观察员一起选举的主要内容,如果未能解决你的问题,请参考以下文章

图解Raft之领导者选举

云计算设计模式(十三)——领导人选举模式

ZookeeperZookeeper集群角色及选举原理分析

实例详解ZooKeeper ZAB协议分布式锁与领导选举

golang Kubernetes领导人选举实例

一文理解 Kafka 的 Controller 领导选举!