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