Введение#

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

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

О Schema Registry#

Будучи системой, основанной на событиях, брокеры Kafka используют Schema Registry для интеллектуальной передачи данных и событий тематических сообщений Kafka между производителями и потребителями.

SR Overview

Использование Schema Registry дает ряд преимуществ, таких как:

  • валидация данных;

  • проверка совместимости схем;

  • создание версий cхем;

  • обновление схем без прерывания сервиса.

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

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

Экосистема данных#

Schema Registry предоставляет следующие услуги:

  • позволяет производителям и потребителям взаимодействовать на основе четко определенного договора о данных в виде схемы;

  • контролирует обновление схемы с помощью четких и явных правил совместимости;

  • оптимизирует полезную нагрузку по сети, передавая идентификатор схемы вместо полного определения схемы.

По своей сути Schema Registry состоит из двух основных частей:

  • REST-сервис для проверки, хранения и извлечения схем Avro, JSON Schema и Protobuf;

  • сериализаторы и десериализаторы, подключаемые к клиентам Apache Kafka для обработки хранилища схем и извлечения схем для сообщений Kafka в трех форматах.

Понятие о схемах#

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

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

Общие проблемы, решаемые Schema Registry#

Schema Registry решает следующие общие проблемы работы с системами данных большого размера:

  • несогласованность данных: Schema Registry гарантирует, что все данные системы соответствуют согласованным схемам. Это снижает риск несогласованности данных и повышает их качество;

  • несовместимые форматы данных: при наличии нескольких производителей и потребителей данных различные приложения могут использовать разные форматы данных. Schema Registry решает эту проблему, обеспечивая централизованное управление схемами и их проверку, чтобы гарантировать совместимость всех данных сообщений;

  • обновление схем: схемы часто меняются со временем, что может привести к проблемам совместимости между различными версиями схем. Schema Registry поддерживает версионирование схем, гарантируя, что различные версии схемы могут использоваться одновременно, не вызывая проблем с совместимостью;

  • проверка схемы: Schema Registry проверяет, что данные, созданные для темы, используют действительный идентификатор схемы в Schema Registry. Это гарантирует соответствие данных стандартному формату, снижая риск потери или повреждения данных;

  • управление данными: Schema Registry — центральное место для управления схемами данных и их версий. Это упрощает управление, позволяя легко отслеживать изменения схем, вести историю обновление схем и обеспечивать соответствие данных нормативным требованиям.

Особенности и преимущества Schema Registry#

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

Schema Registry имеет следующие преимущества при управлении данными:

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

  • проверка схем, то есть Schema Registry проверяет структуру и совместимость схем. Это гарантирует, что данные сообщений топиков соответствуют стандартному формату и не содержат ошибок, что снижает риск потери или повреждения данных;

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

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

  • упрощение разработки благодаря стандартному способу определения схем и управления ими. Это сокращает объем пользовательского кода, необходимого для управления изменениями схемы, и упрощает привлечение новых разработчиков к проекту.

Совместимость и обновление схем#

Производители Apache Kafka пишут данные в топики Kafka, а потребители Kafka читают из них данные . Существует негласный договор о том, что производители пишут данные со схемой, которая может быть прочитана потребителями, даже если производители и потребители меняют свои схемы. Schema Registry помогает обеспечить выполнение этого договора с помощью проверок на совместимость.

Полезно думать о схемах как об API. Приложения зависят от API и ожидают, что любые изменения, внесенные в API, останутся совместимыми и приложения смогут работать. Аналогично, потоковые приложения зависят от схем и ожидают, что любые изменения, внесенные в схемы, будут по-прежнему совместимы, и они смогут работать. Обновление схем требует проверки совместимости, чтобы гарантировать, что контракт между производителем и потребителем не будет нарушен. Именно в этом помогает Schema Registry: он обеспечивает централизованное управление схемами и проверку совместимости по мере развития схем.

Сериализация данных#

Схема обычно используется при сериализации данных — процессе преобразования структур данных или объектов в формат, который может быть передан по сети или сохранен в файле. В этом контексте схема определяет формат сериализованных данных и используется для проверки данных при их десериализации другой системой или приложением. Schema Registry поддерживает сериализаторы и десериализаторы (serdes) Avro, JSON Schema и Protobuf.

Всегда начинайте с Schema Registry#

Если начинать работу без Schema Registry и подключать его позже, то увеличится объем работы за счет использования пользовательского кода в качестве основы, который потом придется в той или иной степени переделывать.

Начинать проект с Schema Registry — лучшая практика по причинам, уже описанным в предыдущих разделах:

  • предотвращает несогласованность данных и повышает их качество;

  • упрощает управление данными;

  • сокращает время разработки. Использование Schema Registry устраняет необходимость в пользовательском коде для управления и проверки схем. Это также снижает затраты и повышает производительность разработки;

  • облегчает совместную работу, предоставляя стандартный интерфейс для обмена схемами между различными командами и приложениями. Это облегчает сотрудничество и помогает избежать потенциальных проблем с интеграцией данных;

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