Confluent Schema Registry обеспечивает управление версиями ваших схем Avro в Apache Kafka.
Согласно документации , реестр схемы поддерживает 4 конфигурации совместимости, и по умолчанию используется обратная совместимость:
Сервер реестра схемы может применять определенные правила совместимости, когда новыесхемы прописаны в теме.В настоящее время мы поддерживаем следующие правила совместимости.
Обратная совместимость (по умолчанию): Новая схема обратно совместима, если ее можно использовать для чтения данных, записанных во всех предыдущих схемах.Обратная совместимость полезна для загрузки данных в такие системы, как Hadoop, поскольку всегда можно запрашивать данные всех версий с использованием самой последней схемы.
Прямая совместимость: Новая схема является прямой совместимостью, если все предыдущие схемыможет читать данные, записанные в этой схеме.Прямая совместимость полезна для пользовательских приложений, которые могут работать только с данными в конкретной версии, которая не всегда может быть последней версией.
Полная совместимость: Новая схема полностью совместима, если она одновременнообратная и прямая совместимость.
Нет совместимости: Новая схема может быть любой схемой, если она является действительной Avro.
Вы можете изменить совместимость нанапример, BACKWARD
с использованием следующего вызова
# Update compatibility requirements globally
$ curl -X PUT -H "Content-Type: application/vnd.schemaregistry.v1+json" \
--data '{"compatibility": "BACKWARD"}' \
http://localhost:8081/config
И ответ должен быть
{"compatibility":"BACKWARD"}
Чтобы сериализовать объект Java в Avro, вы можете использовать Java Reflection API.Например, вы можете создать схему, используя:
Schema schema = ReflectData.get().getSchema(T);