Итак, есть кластер Kafka, и у нас есть реестр схемы поверх него для проверки схемы для тем. По какой-то причине обслуживания, если реестр схемы не работает, у Kafka будет простой в течение этого времени, и он не будет принимать какие-либо новые входящие запросы данных?
если Schema-Registry не работает, означает ли это, что у Kafka будет простой?
Ответы (2)
Потребители и производители Kafka кэшируют схемы, которые они извлекают из реестра схем, внутренне. К реестру схем обращаются только тогда, когда отправляется / принимается запись, для которой ранее схема не просматривалась.
Поэтому до тех пор, пока вы не запускаете новых потребителей / производителей или не отправляете записи со схемами, которые не были отправлены ранее, все будет в порядке.
Однако отнеситесь к этому с долей скептицизма, я просмотрел код и провел быстрый тест с потребителем и производителем консоли и все еще мог производить и потреблять после удаления реестра схемы, но могут быть случаи, когда он все равно не работает.
Обновление:
Сегодня мне пришло в голову, что я, наверное, слишком дословно ответил на ваш вопрос, вместо того, чтобы пытаться понять, что вы пытаетесь сделать :)
Если вы хотите включить окна обслуживания в реестре схемы, возможно, стоит изучить возможность параллельного запуска двух или более реестров схем и настроить их обоих в ваших производителях и потребителях. Один из них будет выбран главным, и запросы на запись для схем будут перенаправлены этому экземпляру. Таким образом, вы можете выполнять непрерывный перезапуск, если вам нужны окна обслуживания.
KafkaAvroSerializer
и десериализатор поддерживают кэш идентификаторов схемы.
Так что, пока в сеть не появятся новые производители и потребители, вы не увидите ошибок.
Если реестр не работает, у Kafka не будет простоев, но вы начнете видеть ошибки сетевых исключений на клиентах, поскольку они используют HTTP для связи с реестром, тогда как Kafka использует свой собственный протокол TCP.