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