Управление схемами данных
Apache Kafka® использует бинарный формат для хранения и передачи сообщений. В сообщениях нет никакой информации об их структуре. Поэтому для интерпретации данных в бинарном формате потребителю нужно воспользоваться схемой формата данных (format schema). Она описывает формат ввода или вывода данных.
На основе схемы формата данных производитель формирует, а потребитель интерпретирует сообщения из топиков. Если схемы форматов данных производителей и потребителей будут различаться, в работе приложения будут возникать ошибки из-за неправильной интерпретации сообщений.
Разработчикам производителя и потребителя необходимо:
- Своевременное обновлять схемы форматов данных.
- Обеспечивать возможность работы производителя и потребителя сразу с несколькими версиями схем форматов данных, если это необходимо.
Для автоматизации работы со схемами формата данных используется реестр схем формата данных. Он существенно упрощает работу с данными, особенно в случаях, когда схема меняется со временем. Реестр автоматически проверяет совместимость версий данных и обеспечивает обратную совместимость версий схем.
Как работает реестр схем форматов данных
Производители и потребители используют реестр следующим образом:
-
Производитель передает схемы форматов данных в реестр.
При помещении схемы в реестр:
- Ей присваивается уникальный номер версии.
- Схема и ее версия сохраняются в служебном топике Apache Kafka®.
-
При отправке сообщения производитель указывает номер версии нужной схемы.
-
При получении сообщения потребитель извлекает из него номер версии схемы формата данных.
-
Если нужной схемы формата данных нет в локальном кеше, потребитель обращается за ней в реестр. Получив нужную схему, он корректно интерпретирует полученное сообщение.
Подробнее о работе реестра см. в документации Confluent.
Managed Schema Registry
В кластер Managed Service for Apache Kafka® уже интегрирован реестр схем формата данных Managed Schema Registry. Реестр разворачивается на каждом хосте-брокере кластера и доступен по протоколу HTTPS на порту 443.
Для работы с реестром предоставляется JSON REST API, полностью совместимое с API Confluent Schema Registry. Для выполнения запросов необходима авторизация.
Поддерживаются следующие форматы схем данных:
Сведения о схемах помещаются в служебный топик _schemas
. В этот топик нельзя писать данные стандартными средствами.
Чтобы воспользоваться этим реестром, включите соответствующую опцию при создании кластера.
Важно
Для работы с Managed Schema Registry требуется дополнительная настройка групп безопасности.
Авторизация в Managed Schema Registry
При работе с API Managed Schema Registry через SSL-соединение необходимо настроить тот же клиентский SSL-сертификат, что и для подключения к хостам-брокерам.
Также необходимо авторизовывать запросы к API-серверам с помощью HTTP-заголовка Authorization
. В заголовке нужно указать логин и пароль учетной записи Apache Kafka®.
Возможность работы со схемами зависит от выбранного способа управления топиками и настроенных ролей учетной записи:
-
Если в кластере используются управляемые топики, то:
- Учетной записи с ролью
ACCESS_ROLE_PRODUCER
для топика доступны любые операции над субъектами (subjects), связанными с этим топиком. - Учетной записи с ролью
ACCESS_ROLE_CONSUMER
для топика доступны операции чтения над субъектами, связанными с этим топиком.
- Учетной записи с ролью
-
Если в кластере используются неуправляемые топики, то:
- Верно то же, что и для кластера с управляемыми топиками.
- В дополнение к этому учетной записи c ролью
ACCESS_ROLE_ADMIN
для топика доступны любые операции над субъектами, связанными с этим топиком. Для такой учетной записи можно разрешить доступ к любым топикам.
Подробнее о ролях см. в разделе Управление учетными записями Apache Kafka®.