Понимание распределения идентификаторов схемы в реестре схем Confluent
Я пытаюсь понять, как глобально уникальные UUID генерируются для схем в реестре схем, но не понимаю следующий текст, представленный на этой странице.
Распределение идентификаторов схемы всегда происходит в главном узле, и они гарантируют, что идентификаторы схемы монотонно увеличиваются.
Если вы используете основные выборы Kafka, идентификатор схемы всегда основывается на последнем идентификаторе, который был записан в хранилище Kafka. Во время переизбрания мастера распределение партии происходит только после того, как новый мастер перехватит все записи в хранилище.
Если вы используете мастер-выборы ZooKeeper, путь {schema.registry.zk.namespace}/schema_id_counter хранит верхнюю границу текущего пакета идентификаторов, а новое назначение пакета инициируется как основным, так и исчерпанием текущего пакета. Такое распределение пакетов помогает защититься от потенциальных сценариев "зомби-мастер" (например, если предыдущий мастер имел паузу GC, которая длилась дольше, чем время ожидания ZooKeeper, вызывая переизбрание мастера).
Вопрос:
- При использовании zookeeper для главных выборов, зачем хранить текущий идентификатор партии в zookeeper в отличие от главных выборов kafka?
- Может кто-нибудь подробно объяснить, как работает распределение пакетов при использовании выборов zookeeper? В частности, я не понимаю следующее:
распределение новой партии инициируется как основным выбором, так и исчерпанием текущей партии. Такое распределение пакетов помогает защититься от потенциальных сценариев "зомби-мастер" (например, если предыдущий мастер имел паузу GC, которая длилась дольше, чем время ожидания ZooKeeper, вызывая переизбрание мастера).