Веб-хуки в Apache Kafka из PostgreSQL на платформе Upstash: пример

Kafka курсы примеры обучение, Kafka для разработчика, Kafka вебхуки, Kafka примеры курсы обучение дата-инженеров, Школа Больших Данных Учебный Центр Коммерсант

Что такое вебхук и как отправить событие из PostgreSQL в Apache Kafka, используя API Webhook на платформе Upstash. NoCode-интеграция БД и брокера сообщений: практический пример.

Практический пример: CDC из PostgreSQL в Kafka через веб-хуки

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

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

Рассмотрим, как это работает на примере передачи изменений из таблицы PostgreSQL в топик Kafka. Подобную демонстрацию потокового захвата измененных данных (CDC, Change Data Capture) с настройкой логической репликации в PostgreSQL и Debezium-коннектора к Kafka я показывала здесь. Реализуем эту же самую передачу в Kafka, развернутой в сервисе Upstash, данных об операциях в таблице с jwt-токенами из PostgreSQL.

Архитектура интеграционного обмена
Архитектура интеграционного обмена

Для этого на платформе Hasura, которая связана с БД PostgreSQL, я создала событийный триггер для таблицы с jwt-токенами. Веб-хуки очень простой способ связать системы: при наличии Webhook API у системы-приемника на системе-источнике даже почти не требуется никаких настроек.

Создание и настройка веб-хука
Создание и настройка веб-хука

API Webhook Kafka в Upstash позволяет публиковать события напрямую в топике без использования сторонней инфраструктуры или сервиса. Этот API поддерживает базовую HTTP-аутентификацию и передачу учетных данных в качестве параметров запроса. Поскольку я решила передавать в Kafka из PostgreSQL все данные об изменениях в таблице jwts, выбраны методы Insert, Update, Delete и все столбцы.

Определение триггерных функций для срабатывания веб-хука
Определение триггерных функций для срабатывания веб-хука

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

Преобразование полезной нагрузки с данными о событии изменения таблицы
Преобразование полезной нагрузки с данными о событии изменения таблицы

Результат такого преобразования полезной нагрузки можно увидеть в GUI Upstash при просмотре содержимого топика Kafka после выполнения операций мутации с таблицей jwts, например, изменение данных.

Просмотр сообщения, опубликованного в Kafka
Просмотр сообщения, опубликованного в Kafka

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

График публикации и потребления данных в топике Kafka
График публикации и потребления данных в топике Kafka

Таким образом, интеграция PostgreSQL с Kafka через веб-хуки оказалась еще проще, чем с помощью Debezium-коннектора. Однако, этот способ подходит не для всех сценариев. Поскольку веб-хуки – это перехватчики HTTP-вызовов, они работают медленнее непосредственной публикации данных в Kafka по TCP-протоколу. Это обусловлено пакетным характером HTTP-протокола, а также необходимостью установки соединения при каждом запросе. В протоколе TCP, по которому взаимодействуют клиенты Kafka с этим брокером сообщений, таких факторов задержки нет. Впрочем, для передачи уведомлений об изменениях, т.е. событийной отправки небольшого объема данных, этот способ вполне подходит. Кроме того, организовать взаимодействие через веб-хуки при наличии Webhook API намного проще настройки коннектора и, тем более, разработки приложения-потребителя.

Освойте все тонкости работы с Apache Kafka на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.
Поиск по сайту