У меня есть кластер Kafka с 5 разделами.
При уменьшении до 3 выборы лидера проводились несколько раз.
Наконец, только один брокер стал лидером по всем 3 разделам одной из моих тем.
Topic: test PartitionCount:3 ReplicationFactor:3
Topic: test Partition: 0 Leader: 2 Replicas: 2,0,1 Isr: 2,1,0
Topic: test Partition: 1 Leader: 2 Replicas: 3,1,2 Isr: 2,1
Topic: test Partition: 2 Leader: 2 Replicas: 4,2,3 Isr: 2
2,1,0 являются брокерами, которые работают.
раздел 0 доступен с 2, 0, 1. Доступны все брокеры.
Итак, isr = 2,1,0
раздел 1 доступен с 3, 1, 2, но 3 удален, брокер. Так
ISR = 2,1
раздел 2 доступен с 4,2,3, но оба 4,3 являются удаленными брокерами. Так
ISR = 2
Обратите внимание, что только 2 были избраны в качестве лидера. Даже если мы предположим, что он имеет самый высокий водяной знак среди других посредников, все ISR для данного раздела могли быть синхронизированы, поэтому все имеют одинаковые смещения для данного раздела (в противном случае они были бы удалены из ISR).
Я ждал много времени (есть время, после которого, если одна из реплик окажется не на должном уровне, она будет удалена из ISR), но все же это выборы лидера.
Лидеры могут быть распределены равномерно (с балансировкой нагрузки).
For example, partition-0 leader can be 0
partition 1 leader can be 1
partition 2 leader can be 2
Почему это не так?
Примечание: я не включил unclean leader election
. Это только значение по умолчанию.
Если мы предположим, что 0,1 произошло после выборов лидера, почему
разве нет переизбрания тогда? Если ISR обновлены, в идеале
лидеры тоже должны быть. Не так ли?
т.е. если Кафка знает, что 0,1
и иметь синхронизированные реплики, он должен провести еще одного лидера
выборы.
Есть ли какая-то конкретная причина, почему это не так?