以下は、トピックxx_json_topicのパーティション情報です。これは、3 つのノードを持つ Kafka クラスターです。
すべてのノードが稼働中:
Topic: xx_json_topic PartitionCount:4 ReplicationFactor:2 Configs:
Topic: xx_json_topic Partition: 0 Leader: 1 Replicas: 3,1 Isr: 3,1
Topic: xx_json_topic Partition: 1 Leader: 2 Replicas: 1,2 Isr: 2,1
Topic: xx_json_topic Partition: 2 Leader: 2 Replicas: 2,3 Isr: 2,3
Topic: xx_json_topic Partition: 3 Leader: 3 Replicas: 3,2 Isr: 2,3
この時点で..ノード「node-1」を停止すると..以下のようになります。
Topic: xx_json_topic PartitionCount:4 ReplicationFactor:2 Configs:
Topic: xx_json_topic Partition: 0 Leader: 3 Replicas: 3,1 Isr: 3
Topic: xx_json_topic Partition: 1 Leader: 2 Replicas: 1,2 Isr: 2
Topic: xx_json_topic Partition: 2 Leader: 2 Replicas: 2,3 Isr: 2,3
Topic: xx_json_topic Partition: 3 Leader: 3 Replicas: 3,2 Isr: 2,3
私の質問は、ノード 1 がダウンしていて、レプリケーション ファクターを維持する必要があることを kafka が認識している場合、ノード 3 をパーティション 1 のレプリカにし、ノード 2 をパーティション 0 のレプリカにしないでください。 -3 と node-2 は Isr の一部ですか?
または、Kafka はそれを約束していないと思います...レプリケーション係数が 2 の場合..データが常に少なくとも 2 つのノードで利用できるという意味ではありません (---Cassandra の一貫性レベルのように) 。