Kafka 能容忍 N-1 次失败吗?
Can Kafka tolerate N-1 failures?
我正在阅读 Kafka 的文档,它在这里说:
For a topic with replication factor N, we will tolerate up to N-1
server failures without losing any messages committed to the log.
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 因为我希望有更简单的东西。
谢谢
我可以帮助您回答问题的 Kafka/Zookeeper 部分。我认为您混淆了 Kafka 和 Zookeeper 如何协同工作。
我认为考虑 Kafka 和 Zookeeper 独立运行可能更好,但需要两者协同工作才能完成工作。 Kafka 和 Zookeeper 都可能自行失败。
- Zookeeper 整体可能会失败,导致 Kafka 停止工作,但这只是因为 Zookeeper 失败,而不是因为 Kafka 集群出现问题。
- Kafka 集群可能会失败,Zookeeper 仍然可以工作。但由于 Kafka 宕机,整个系统无法正常工作。
Kafka 和 Zookeeper 对于什么构成失败有不同的规则。
- 只要大多数 Zookeeper 服务器 运行,Zookeeper 整体就会继续工作。因此,如果您有 7 个 Zookeeper 服务器,它可以在 Zookeeper 整体停止工作之前处理最多 3 个故障。 [reference]
- Kafka 对其工作方式有不同的限定。只要一台 Kafka 机器还活着,Kafka 就会继续运行,正如您引用的 N-1 数字。
我对你提到的 Zookeeper 中使用的算法 Zab(一种类似 Paxos 的算法)一无所知,但据我了解,这就是 Kafka 和 Zookeeper 协同工作的方式。
我正在阅读 Kafka 的文档,它在这里说:
For a topic with replication factor N, we will tolerate up to N-1 server failures without losing any messages committed to the log.
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 因为我希望有更简单的东西。
谢谢
我可以帮助您回答问题的 Kafka/Zookeeper 部分。我认为您混淆了 Kafka 和 Zookeeper 如何协同工作。
我认为考虑 Kafka 和 Zookeeper 独立运行可能更好,但需要两者协同工作才能完成工作。 Kafka 和 Zookeeper 都可能自行失败。
- Zookeeper 整体可能会失败,导致 Kafka 停止工作,但这只是因为 Zookeeper 失败,而不是因为 Kafka 集群出现问题。
- Kafka 集群可能会失败,Zookeeper 仍然可以工作。但由于 Kafka 宕机,整个系统无法正常工作。
Kafka 和 Zookeeper 对于什么构成失败有不同的规则。
- 只要大多数 Zookeeper 服务器 运行,Zookeeper 整体就会继续工作。因此,如果您有 7 个 Zookeeper 服务器,它可以在 Zookeeper 整体停止工作之前处理最多 3 个故障。 [reference]
- Kafka 对其工作方式有不同的限定。只要一台 Kafka 机器还活着,Kafka 就会继续运行,正如您引用的 N-1 数字。
我对你提到的 Zookeeper 中使用的算法 Zab(一种类似 Paxos 的算法)一无所知,但据我了解,这就是 Kafka 和 Zookeeper 协同工作的方式。