【问题标题】:Can Kafka tolerate N-1 failures?Kafka 能容忍 N-1 次失败吗?
【发布时间】:2016-05-07 10:39:18
【问题描述】:

我正在阅读 Kafka 的文档,上面写着:

对于复制因子为 N 的主题,我们最多可以容忍 N-1 服务器故障,而不会丢失任何提交到日志的消息。

http://kafka.apache.org/documentation.html#introduction(就在1.2用例之上)

这怎么可能?根据我的理解,引擎盖下的主题使用使用 Zab(一种类似 Paxos 的算法)的 ZooKeeper。我在此页面中找不到任何关于 Zab 的文档:

https://cwiki.apache.org/confluence/display/ZOOKEEPER/Zab+vs.+Paxos

谁能向我解释他们如何支持 N-1 失败。 N-1 不就是机器本身以外的所有东西吗?

另外,如果有人知道有关 Zab 的任何阅读或视频的好地方,请告诉我。

除了这个http://web.stanford.edu/class/cs347/reading/zab.pdf,因为我希望有更简单的东西。

谢谢

【问题讨论】:

    标签: apache-kafka apache-zookeeper


    【解决方案1】:

    我可以帮助您回答问题中关于 Kafka/Zookeeper 的部分。我认为您对 Kafka 和 Zookeeper 如何协同工作感到困惑。

    我认为考虑 Kafka 和 Zookeeper 独立运行可能会更好,但需要两者协同工作才能完成工作。 Kafka 和 Zookeeper 都可能自行失败。

    • Zookeeper ensemble 可能会失败,导致 Kafka 停止工作,但这只是因为 Zookeeper 失败了,而不是因为 Kafka 集群出现问题。
    • Kafka 集群可能发生故障,Zookeeper 仍将工作。但由于 Kafka 出现故障,整个系统无法正常工作。

    Kafka 和 Zookeeper 对什么构成失败有不同的规则。

    • 只要大部分 Zookeeper 服务器都在运行,Zookeeper ensemble 就会继续工作。因此,如果您有 7 个 Zookeeper 服务器,它最多可以在 Zookeeper ensemble 停止工作之前处理 3 个故障。 [reference]
    • Kafka 对其工作方式有不同的限定。只要一台 Kafka 机器还活着,Kafka 就会继续运行,如您所引用的 N-1 数字。

    我对你提到的 Zookeeper 中使用的算法 Zab(一种类似 Paxos 的算法)一无所知,但据我了解,这就是 Kafka 和 Zookeeper 协同工作的方式。

    【讨论】:

      猜你喜欢
      • 2015-05-10
      • 1970-01-01
      • 1970-01-01
      • 2020-07-03
      • 2021-02-24
      • 2016-07-31
      • 1970-01-01
      • 2021-11-03
      • 1970-01-01
      相关资源
      最近更新 更多