Перейти к содержимому

Реестр схем

Реестр схем нужен, чтобы управлять структурой данных, передаваемых через топики. Также реестр схем помогает обеспечить совместимость приложений производителей и потребителей.

Схема данных описывает структуру сообщения производителя: имена полей и типы данных. У каждой схемы в реестре есть идентификатор и номер версии. При регистрации схемы с существующим идентификатором ее содержимое сравнивается с последней версией. Если схема изменилась, ей присваивается новый номер версии. Реестр хранит все версии и позволяет отслеживать изменения структуры данных и обеспечивать совместимость.

Производители и потребители обращаются к реестру схем через клиентские библиотеки, которые автоматически проверяют соответствие сообщений схеме. Проверка гарантирует, что сообщения, отправляемые производителями, соответствуют ожидаемой структуре и не нарушают работу существующих потребителей при изменении формата данных.

Схемы данных могут быть описаны в формате Avro, Protobuf или JSON Schema. Каждая схема идентифицируется по имени топика с суффиксом -key (для ключа) или -value (для значения), например users-value.

Реестр схем разворачивается на тех же узлах, что и брокеры. На каждом узле кластера реестр схем работает как отдельный процесс. При отказе одного узла экземпляры реестра продолжают работать на других узлах. Все экземпляры реестра синхронизируются через служебный топик, недоступный пользователю. В служебный топик записываются все зарегистрированные схемы и их версии.

В качестве движка реестра схем используется решение Karapace, совместимое с API Confluent Schema Registry и стандартными библиотеками и утилитами этого API.

Включить использование реестра схем можно только при создании кластера, отключить можно в любой момент.

Для подключения к реестру схем используются адреса, отличные от адресов брокеров кластера. Адрес указывается в настройках приложений производителей и потребителей.

Для аутентификации при подключении к реестру схем используются имя пользователя кластера и его пароль.

Для шифрования используется SSL-сертификат, выпущенный MWS Cloud Platform.