Управление версиями сообщений Kafka - PullRequest
0 голосов
/ 24 марта 2019

В настоящее время я сам внедряю реестр схем. Но может быть есть какие-то другие способы для контроля версий сообщений (полезной нагрузки)? Я знаю о реестре схемы confluent.io (и некоторых других подобных). Поэтому мой вопрос: является ли реестр схем единственным возможным способом обеспечения обратной совместимости сообщений?

Кстати, есть ли хорошая библиотека для преобразования объекта Java из объекта и схемы JSON?

1 Ответ

1 голос
/ 25 марта 2019

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...