Что такое REST Proxy к Apache Kafka: разбираемся с RESTful API от Confluent

курсы по Kafka, Обучение Apache Kafka, Apache Kafka Для разработчиков, обработка данных, большие данные, Big Data, Python, архитектура, RESTful API Kafka, What is Confluent REST Proxy Apache Kafka

В этой статье разберем, что такое Confluent REST Proxy для Apache Kafka, как работает этот RESTful API, каким образом он связан с облачным сервисом этой популярной Big Data платформой потоковой обработки событий, а также при чем здесь Schema Registry.

Основы Confluent REST Proxy для Apache Kafka

Широко известная в области Big Data компания Confluent, разработчик коммерческих инструментов, упрощающих работу с open-source системой Apache Kafka, представила свой прокси-сервер с RESTful-интерфейсом для этой стриминговой платформы. Что такое RESTful к Apache Kafka и как это связано с HTTP, мы рассматривали вчера. Confluent REST Proxy упрощает генерацию и потреблением сообщений, мониторинг состояния кластера и его администрирование без использования собственного протокола Kafka или специальных клиентов. На практике это очень полезно в следующих случаях [1]:

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

Дополнительным удобством является наличие плагина для Confluent REST Proxy, который помогает аутентифицировать входящие запросы и распространяется на аутентифицированного принципала, посылающего запросы к Kafka. Благодаря этому клиенты Confluent REST Proxy могут использовать функции мультитенантной безопасности брокера Kafka [1]. Напомним, в мультинатентной (multi-tenant) или мультиарендной архитектуре единый экземпляр приложения, запущенный на сервере, обслуживает много клиентов (арендаторов), работая одновременно с несколькими конфигурациями и наборами данных. При этом каждый клиент взаимодействует только со своим экземпляром виртуального приложения, видя лишь свою конфигурацию и свой датасет [2].

Интересно, что Confluent REST Proxy существует уже достаточно давно и доступен по лицензии Confluent Community License. Этот RESTful API к Apache Kafka используется в качестве самоуправляемого компонента для данной Big Data платформы, а также в сочетании с Confluent Platform или Confluent Cloud, о котором мы упоминали здесь на примере кейса цифровой трансформации британского ритейлера Boden. В 2020 году в Confluent REST Proxy были добавлены дополнительные архитектурные опции [3]:

  • Самоуправляемый экземпляр REST Proxy или кластер экземпляров как «выделенный узел» отделен от брокера Kafka и Confluent Server, что позволяет изолировать рабочие нагрузки друг от друга;
  • унифицированный REST API в Confluent Server как «плагин брокера» и в Confluent Cloud упрощают администрирование кластера, поскольку не требуются дополнительные узлы для специализированного API;
  • встроенные API-интерфейсы REST в Confluent Server и в Confluent Cloud позволяют выделять несколько отдельных и независимых от сервера экземпляров REST Proxy, обеспечивая масштабируемость и гибкость всей системы, в т.ч. организацию гибридных архитектур и миграцию в облако без каких-либо критических изменений.
Confluent REST Proxy Apache Kafka
3 варианта использования Confluent REST Proxy к Apache Kafka

Интеграция Big Data с RESTful API или работа со Schema Registry

Реестр схем данных (Schema Registry) обеспечивает поддержку множества файловых форматов в Apache Kafka (AVRO, JSON, Protobuf и пр.), о чем мы подробно писали здесь. Confluent REST Proxy работает с Kafka для публикации и чтения сообщений, схемы моделей данных которых хранятся в Schema Registry. Реестр схем обеспечивает управление данными и применение схемы для всех событий, предоставляя RESTful-интерфейс для хранения и извлечения схем AVRO, JSON и Protobuf. Он хранит историю версий всех схем на основе заданной стратегии имен субъектов, предоставляет несколько параметров совместимости и обеспечивает эволюцию схем в соответствии с настроенными параметрами совместимости и расширенной поддержкой их типов. Он предоставляет сериализаторы, которые подключаются к клиентам Kafka, обрабатывающим хранение и извлечение схемы для сообщений.

При том, что применение схемы происходит на стороне клиента, Confluent Platform и Confluent Cloud обеспечивают проверку схемы на стороне сервера. Это полезно, если некорректные или вредоносные клиентские приложения отправляют сообщения в Apache Kafka без интеграции с реестром схем [3].

Confluent REST Proxy может читать и записывать данные с использованием JSON, необработанных байтов, закодированных с помощью base64, кодированных JSON Avro, Protobuf или схемы JSON. В Avro, Protobuf или JSON схемы регистрируются и проверяются в реестре схем [1].

Apache Kafka Schema Registry
Чтение сообщений разных форматов с Apache Kafka Schema Registry

При работе с Confluent Cloud в графическом интерфейсе следует проверить подключение к конечной точке Schema Registry, включить возможность работы с реестром схем, а также создать ключ API и секрет для подключения к нему [4]:

schema.registry.url=https://{{ SR_ENDPOINT }}

basic.auth.credentials.source=USER_INFO

schema.registry.basic.auth.user.info={{ SR_API_KEY }}:{{ SR_API_SECRET }}

Практические примеры работы с Confluent REST Proxy подробно описаны в официальной документации [4]. Завтра мы продолжим разбирать этот RESTful-интерфейс и рассмотрим его основные достоинства и недостатки. А освоить все тонкости администрирования кластера, разработки и интеграции приложений Kafka для потоковой аналитики больших данных вы сможете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

 

 

Источники

  1. https://docs.confluent.io/platform/current/kafka-rest/index.html
  2. http://www.openedge.ru/read/733/
  3. https://www.confluent.io/blog/http-and-rest-api-use-cases-and-architecture-with-apache-kafka/
  4. https://docs.confluent.io/platform/current/tutorials/examples/clients/docs/rest-proxy.html

 

Поиск по сайту