Обзор Kafka REST Proxy

Возможности Kafka REST Proxy

Kafka REST Proxy — специальный прокси-сервер, созданный Confluent. Kafka REST Proxy предоставляет RESTful-интерфейс для взаимодействия с кластерами Kafka, позволяющий пользователям записывать и читать сообщения, используя HTTP/HTTPS-запросы.

Взаимодействие внешних систем с брокерами Kafka по умолчанию выполняется при помощи определенного набора API и инструментов CLI, обеспечиваемых клиентской библиотекой Java. Также поддерживаются клиентские библиотеки для некоторых языков программирования.

Kafka REST Proxy помогает обойти ограничения, связанные с узким выбором способов взаимодействия с Kafka. Любое приложение, в том числе основанное не на JVM, можно настроить для работы с кластером Kafka независимо от языка программирования, если оно имеет возможность отправлять HTTP/HTTPS-запросы.

Возможности Kafka REST Proxy
Возможности Kafka REST Proxy
"Возможности Kafka REST Proxy
Возможности Kafka REST Proxy

Основные функциональные возможности Kafka REST Proxy перечислены ниже:

  • Интерфейс HTTP RESTful позволяет клиентам взаимодействовать с Kafka при помощи стандартных методов HTTP, обеспечивая совместимость с различными языками программирования.

  • Обеспечивается взаимодействие с Kafka API через прокси-сервер:

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

    • подписка на топики и чтение сообщений в режиме реального времени;

    • получение данных о кластере и топиках.

  • Поддерживается интеграция со Schema Registry для создания и развития схем данных.

  • Поддерживаются механизмы аутентификации и авторизации для защиты доступа к кластерам Kafka.

Архитектура Kafka REST Proxy

Ниже на рисунке показана архитектура Kafka REST Proxy.

Архитектура Kafka REST Proxy
Архитектура Kafka REST Proxy
Архитектура Kafka REST Proxy
Архитектура Kafka REST Proxy

HTTP-запросы к Kafka REST Proxy

Каждый экземпляр Kafka REST Proxy — отдельный прокси-сервер, являющийся дополнительным уровнем между клиентом и брокером Kafka.

Клиент направляет HTTP-запрос к REST API сервера Kafka REST Proxy с использованием IP-адреса сервера Kafka REST Proxy, а не брокера Kafka.

Запрос на запись данных представляет собой метод POST с указанием метаданных (место, где будет храниться сообщение) и телом запроса с содержимым сообщения. Запрос на получение данных из Kafka представляет собой метод GET с указанием метаданных (место, откуда должно быть прочитано сообщение).

ПРИМЕЧАНИЕ
Для получения примеров запросов к серверу Kafka REST Proxy вы можете обратиться к статье Пример использования Kafka REST Proxy.

Сервер Kafka REST Proxy преобразует полученные запросы в экземпляры приложений Kafka API (Producer API, Consumer API или Admin API) и возвращает пользователю ответ, основанный на результате отработки приложения.

Сериализация и десериализация

Для выполнения сериализации и десериализации данных сервер Kafka REST Proxy подключается к REST API сервера Schema Registry и осуществляет запись новой или получение уже имеющейся схемы. Для этого в пользовательских запросах к серверу Kafka REST Proxy используются специальные заголовки:

  • Content-Type — определяет тип контента, который должен быть записан в Kafka.

  • Accept — определяет тип содержимого, который может понять клиент.

В этих заголовках указывается тип контента в формате, использующемся в Schema Registry API.

Например, ниже приведен пример запроса, который записывает данные в топик Kafka, а также регистрирует схему в хранилище Schema Registry:

$ curl -X POST -H "Content-Type: application/vnd.kafka.avro.v2+json" \
      -H "Accept: application/vnd.kafka.v2+json" \
      --data '{"value_schema": "{\"type\": \"record\", \"name\": \"User\", \"fields\": [{\"name\": \"name\", \"type\": \"string\"}]}", "records": [{"value": {"name": "testUser"}}]}' \
      "http://localhost:8082/topics/avrotest"

Безопасность

На стороне сервера Kafka REST Proxy настраивается аутентификация для двух соединений:

  • Соединение между клиентом и сервером Kafka REST Proxy.

    Для этого соединения настраивается базовая HTTP-аутентификация с использованием пары <имя пользователя>:<пароль>. Данные для аутентификации пользователя передаются Kafka REST Proxy в HTTP-запросе при помощи заголовка Authorization.

    Для включения взаимной SSL/TLS-аутентификации настраивается:

    • поддержка HTTPS для сервера Kafka REST Proxy;

    • хранилище доверенных сертификатов Kafka REST Proxy для проверки входящих клиентских сертификатов.

  • Соединение между Kafka REST Proxy и брокерами Kafka.

    Если Kafka REST Proxy используется для связи с брокером Kafka, в котором уже настроена аутентификация по методу SASL, для каждого сервера Kafka REST Proxy необходимо установить соответствующие параметры для аутентификации пользователя Kafka REST Proxy в Kafka.

    Если для брокера Kafka настроена SSL/TLS-аутентификация, для аутентификации пользователя Kafka REST Proxy необходимо настроить SSL-параметры.

Ограничения Kafka REST Proxy

При использовании Kafka REST Proxy в системах обработки данных необходимо учитывать следующие ограничения:

  • Не поддерживаются запросы на запись сообщений в несколько топиков одновременно — каждый HTTP-запрос от производителя может обращаться лишь к одному топику или партиции.

  • При помощи HTTP-запросов недоступно большинство переопределений конфигураций производителей и потребителей.

  • Недоступно использование разных сериализаторов для ключа и значения в сообщении.

  • Обработка запросов к Kafka REST Proxy производится при помощи синхронного протокола запроса-ответа. При этом для Kafka возможно подключение до десятков параллельных экземпляров Kafka REST Proxy, что достаточно для разных вариантов использования.

Kafka REST Proxy в ADS

Подключение

После добавления и установки сервиса Kafka REST Proxy в составе кластера ADS в запросе к серверу Kafka REST Proxy должен быть указан хост, где размещен компонент Kafka REST Proxy, и порт, указанный в качестве параметра rest_listener_port (по умолчанию 8082) в группе Main на странице конфигурирования сервиса Kafka REST Proxy.

Информация о сервисе Kafka REST Proxy в интерфейсе ADCM
Информация о сервисе Kafka REST Proxy в интерфейсе ADCM

Kafka

В ADS сервис Kafka REST Proxy может быть установлен только после установки сервиса Kafka. После установки Kafka REST Proxy в конфигурационном файле /etc/kafka-rest/kafka-rest.properties автоматически устанавливается параметр bootstrap.servers для связи с брокером Kafka.

Schema Registry

Сервис Schema Registry, установленный в ADS одновременно c сервисом Kafka REST Proxy, позволяет выполнять сериализацию и десериализацию данных при работе с топиками Kafka по интерфейсу RESTful. После установки обоих сервисов параметр schema.registry.url автоматически устанавливается в конфигурационном файле Kafka REST Proxy /etc/kafka-rest/kafka-rest.properties.

Безопасность

Большинство опций безопасности для Kafka REST Proxy могут быть настроены при помощи интерфейса ADCM:

  • В кластере ADS базовую HTTP-аутентификацию для Kafka REST Proxy можно настроить при помощи включения Basic-аутентификации.

  • В кластере ADS аутентификация по методу SASL включается при помощи действия Manage Kerberos либо при запуске механизма SASL PLAINTEXT.

  • В кластере ADS cпециальный модуль kafka-rest-security предоставляет возможность проходить аутентификацию в Kafka с разными принципалами при подключении к Kafka через Kafka REST Proxy после включения аутентификации по методу SASL.

  • В кластере ADS SSL-аутентификация включается при помощи действия Manage SSL.

Настройка

Настройка параметров Kafka REST Proxy в интерфейсе ADCM выполняется на странице конфигурирования сервиса Kafka REST Proxy.

Для настройки параметров конфигурационных файлов /etc/kafka-rest/kafka-rest.properties переведите в активное состояние переключатель Show advanced, раскройте узел kafka-rest.properties или connect.properties и введите новые значения для параметров. Для изменения параметров ksqlDB, отсутствующих в интерфейсе ADCM, используйте поле Add key,value. Выберите Add property и введите наименование параметра и его значение.

После изменения параметров при помощи интерфейса ADCM перезагрузите сервис Kafka REST Proxy. Для этого примените действие Restart, нажав на иконку actions default dark actions default light в столбце Actions.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней