Сообщения Avro со схемой

Поэтому мы планируем использовать Avro для связи в единой экосистеме на основе кафки. Мое текущее понимание Avro состоит в том, что каждое сообщение несет свою схему. Если это так, нам нужен реестр схем только для разрешения обновлений версий?

Я спрашиваю, поскольку перенос схемы с каждым сообщением предотвращает необходимость чего-то вроде реестра схем для сопоставления идентификатора сообщения схеме. Или мне что-то здесь не хватает?


person intiha    schedule 30.05.2017    source источник


Ответы (1)


При запуске реестра Confluent Schema Registry сообщения Kafka, опубликованные с помощью библиотеки Confluent Avro Serdes, не содержат схему avro. Они содержат только числовой идентификатор схемы, который используется десериализатором потребителей для извлечения схемы из реестра конфлюентных схем. Эти схемы кэшируются сериализатором и десериализатором для дальнейшей оптимизации производительности.

person Hans Jespersen    schedule 31.05.2017
comment
спасибо --- так что сообщение, не основанное на схеме реестра, по-прежнему будет содержать схему в начале, верно? Это заставляет задуматься (я знаю отдельный вопрос), как получатель может написать код для неизвестных данных типа TLV. - person intiha; 31.05.2017
comment
Сериализованное сообщение Avro будет иметь один дополнительный байт в начале сообщения, который является его идентификатором схемы в реестре схемы, а остальная часть сообщения - это обычные двоичные данные avro. Очень компактный на проводе и гораздо меньший размер сообщения, чем размещение всей схемы avro в каждом сообщении. - person Hans Jespersen; 31.05.2017
comment
@intiha В зависимости от используемой реализации сериализатора, сообщение, не основанное на схеме реестра, будет иметь схему в каждой записи (ключ и значение, если оба они закодированы в Avro). - person OneCricketeer; 27.09.2018