Оптимизируем вычислительные ресурсы с помощью платформы Kafka
Сергей Кравченко, Старший аналитик данных, Beltel Datanomics
Платформа Kafka была создана в компании LinkedIn. Компания располагала большим потоком данных, пересылаемых в режиме реального времени, для которого не было удобной возможности их обрабатывать. Ни один из имеющих на тот момент инструментов не мог справиться с большими объемами данных, генерируемых всеми системами. Поэтому была создана Kafka — платформа, позволяющая хранить и передавать события и данные в больших масштабах.
Kafka хранит все сообщения, получаемые от источников, в плоских файлах в распределенной файловой системе. Каждое сообщение имеет параметр, называемый временем жизни (time to live, TTL), которое обычно составляет семь дней. По истечении этого срока сообщения удаляются. Kafka систематизирует свои данные по топикам, напоминающим очереди сообщений, необходимых одному или множеству потребителей, а также использует разделы для хранения тем.
Источники и приемники. Принципы взаимодействия
Источники данных пополняют топики, а потребители подписываются на них, аналогично тому, как пользователи мессенджеров подписываются на каналы. Потребители читают темы, используя смещение, обозначающее текущую позицию в диапазоне событий топика. Смещение поддерживается платформой Kafka, при необходимости можно его изменять, прокручивая «ленту событий» вправо или лево. После обработки события потребитель посылает подтверждение в Kafka, после чего платформа увеличивает смещение на одну позицию.
В Kafka реализовано несколько API, с помощью которых можно отправлять, обрабатывать, перенаправлять и потреблять данные:
- Connect API связывает Kafka с внешними системами-источниками и базами данных. Существует множество готовых коннекторов для популярных БД, они выполняют преобразование формата данных и просты в настройке
- Producer API и Consumer API. Альтернативный вариант к Connect API . Эта форма связи обычно требует дополнительных функций обработки или кода. Поставщик или производитель событий использует Producer API, а потребитель событий — Consumer API
- Streams API позволяет взаимодействовать и управлять потоками данных внутри Kafka, который может использоваться как производителем, так и потребителем. Производитель может управлять или преобразовывать поток событий
Какие задачи решает платформа Kafka
С помощью Apache Kafka можно построить масштабируемую и отказоустойчивую потоковую платформу, предлагающую большое количество возможностей, позволяющую создавать распределенные приложения, которая обеспечивает:
- интеграцию данных. С помощью Kafka можно напрямую преобразовывать данные или отправлять события внешним механизмам преобразования, которые выполняют ETL-процессы самостоятельно
- передачу сообщений или событий. Kafka используется как брокер сообщений для прямого подключения одних приложений к другим. Сообщения могут выполнять функции предупреждений, уведомлений, журналов событий и т. д
- поддержку микросервисов. Kafka может использоваться в архитектурах микросервисов для синхронизации данных между разными компонентами, источниками событий или команд
- репликацию данных
- потоковую передачу и анализ в режиме реального времени. Платформа может использоваться для анализа потоков данных в режиме реального времени с функциями временных рядов и возможностями преобразования
Заключение
Использование Kafka позволяет агрегировать данные из разных источников в определенные топики для последующего переноса информации в необходимые сервисы или системы хранения данных. Команда Datanomics использует сервис Kafka для переноса данных из локальных транзакционных хранилищ в облачные аналитические. Настройки сервиса позволяют создать отказоустойчивые решения, используя механизмы распределения и репликации ресурсов по разным физическим серверам. Использование такого подхода позволяет создать надежное решение, которое сокращает количество дорогих операций записи в аналитическую базу данных, что приводит к оптимизации вычислительных ресурсов.
Дополнительно
Пример построения гибридных систем с выносом аналитики в облако (datanomics.ru)
Построение аналитической платформы в облаке Yandex Cloud (datanomics.ru)