Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 卡夫卡机架识别和ISR位置_Apache Kafka - Fatal编程技术网

Apache kafka 卡夫卡机架识别和ISR位置

Apache kafka 卡夫卡机架识别和ISR位置,apache-kafka,Apache Kafka,我想构建一个HA-Kafka集群,该集群需要跨越2个可用性区域 我希望能够继续读写一个主题,即使AZ的所有经纪人都倒下了 如果我在每个AZ中至少有2个代理,复制因子为3,最小ISR为2,acks设置为All,那么我认为当除领导者之外的另一个代理也确认写入时,生产者写入将被确认。机架感知算法是否强制ISR必须位于另一个AZ?文件只提到了副本,而不是ISR 这能让我在失去AZ的情况下继续阅读和写作吗?如果没有,需要什么来实现这一点?如果您想要一个真正的HA Kafka群集,您需要从HA Zookee

我想构建一个HA-Kafka集群,该集群需要跨越2个可用性区域

我希望能够继续读写一个主题,即使AZ的所有经纪人都倒下了

如果我在每个AZ中至少有2个代理,复制因子为3,最小ISR为2,acks设置为All,那么我认为当除领导者之外的另一个代理也确认写入时,生产者写入将被确认。机架感知算法是否强制ISR必须位于另一个AZ?文件只提到了副本,而不是ISR


这能让我在失去AZ的情况下继续阅读和写作吗?如果没有,需要什么来实现这一点?

如果您想要一个真正的HA Kafka群集,您需要从HA Zookeeper集合开始,这通常意味着3个可用区域,因为(与Kafka代理不同)Zookeeper节点需要一个仲裁(大多数原始节点)来运行,而当一半节点停机时,您不能拥有大多数


Zookeeper之所以重要,是因为一个合适的HA Kafka群集不应只允许在故障后进行读写操作,还应允许创建新主题和选举新领导人,这两项都要求Zookeeper能够正常运行。

机架感知仅适用于副本。如果您的代理0和1在一个AZ中,而2和3在另一个AZ中,启用机架感知的顺序将类似于0,2,1,3,用于选择代理应承载哪个副本。这保证了两个AZ中都有副本。我认为,如果min.isr=2,replication=3,#racks=2,那么可能只有两个isr,并且两个都在同一个机架(AZ)中,如果AZ失败,您可能会丢失消息(如果启用了不干净的领导人选举)或可用性(领导人离开后分区脱机)。同意-我有一个HA ZK集群。卡夫卡经纪人将位于两个地理位置非常接近的DC,以及每个DC的2个ZK节点。在更远的第三个DC将容纳第五个ZK节点。