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

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

В этой статье разберем, что такое 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