apache-kafka - 具有仲裁者/证人/观察者的多 DC 中的 Kafka 领导者选举

标签 apache-kafka apache-zookeeper consensus leader

我想在两个数据中心部署一个 Kafka 集群,每个数据中心的节点数相同。第一个 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说到这个设置。 Confluent 白皮书中还有一些有趣的信息 Disaster Recovery for Multi-Datacenter Apache Kafka® Deployments .
它说它可以工作,他们称它为观察者节点,但它也说没有人尝试过这个。

Zookeeper 会跟踪 Kafka (0.9.0+) 的以下元数据。

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

  • 关于 Kafka 和 Zookeeper 之间依赖关系的更多详细信息 Kafka FAQanswer at Quora from a Kafka commiter working at Confluent .

    从我读过的资源来看,在第三个 DC 上有两个 DC(Kafka 加 Zookeeper)和一个仲裁者/见证人/观察者 Zookeeper 节点的设置可以工作,但我没有找到任何实际试验过的资源。

    关于apache-kafka - 具有仲裁者/证人/观察者的多 DC 中的 Kafka 领导者选举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49027761/

    相关文章:

    apache - 安全地替换 Zookeeper Quorum 中的坏节点

    distributed-system - 领导选举的 paxos vs raft

    distributed-computing - Paxos 和发现

    apache-kafka - state store changelog 主题的消费者是什么

    java - 带有 Exactly Once 处理的 Kafka 的 Spring Boot

    java - 是否可以使用 Kafka Streams 访问消息 header ?

    apache-zookeeper - 如何从文件创建Zookeeper节点?

    java - 在 Linux 中加载扩展时出现 NullPointerException

    blockchain - 我们是否需要在许可的区 block 链网络中支持 PBFT 算法?

    multithreading - 使用来自多个 kafka 主题的消息的最佳实践是什么?