Понимание распределения идентификаторов схемы в реестре схем Confluent

Я пытаюсь понять, как глобально уникальные UUID генерируются для схем в реестре схем, но не понимаю следующий текст, представленный на этой странице.

Распределение идентификаторов схемы всегда происходит в главном узле, и они гарантируют, что идентификаторы схемы монотонно увеличиваются.

Если вы используете основные выборы Kafka, идентификатор схемы всегда основывается на последнем идентификаторе, который был записан в хранилище Kafka. Во время переизбрания мастера распределение партии происходит только после того, как новый мастер перехватит все записи в хранилище.

Если вы используете мастер-выборы ZooKeeper, путь {schema.registry.zk.namespace}/schema_id_counter хранит верхнюю границу текущего пакета идентификаторов, а новое назначение пакета инициируется как основным, так и исчерпанием текущего пакета. Такое распределение пакетов помогает защититься от потенциальных сценариев "зомби-мастер" (например, если предыдущий мастер имел паузу GC, которая длилась дольше, чем время ожидания ZooKeeper, вызывая переизбрание мастера).

Вопрос:

  • При использовании zookeeper для главных выборов, зачем хранить текущий идентификатор партии в zookeeper в отличие от главных выборов kafka?
  • Может кто-нибудь подробно объяснить, как работает распределение пакетов при использовании выборов zookeeper? В частности, я не понимаю следующее:

распределение новой партии инициируется как основным выбором, так и исчерпанием текущей партии. Такое распределение пакетов помогает защититься от потенциальных сценариев "зомби-мастер" (например, если предыдущий мастер имел паузу GC, которая длилась дольше, чем время ожидания ZooKeeper, вызывая переизбрание мастера).

0 ответов

Другие вопросы по тегам