Apache Kafka — это распределенный программный брокер сообщений. Его ключевая задача заключается в
сборе данных у приложений и их хранении в распределенном хранилище (из-за чего Kafka
нередко называют гибридом брокера и СУБД). Сегодня разберем, зачем вообще нужен Apache
Kafka и какую роль он играет в проектах, связанных с большими данными.
Ключевые возможности Apache Kafka
Apache Kafka позволяет в онлайн-режиме собирать и обрабатывать множество типов данных, например:
- поведение посетителя веб-сайта или приложения;
- данные с устройств интернета вещей (Internet of Things, IoT) и IIoT;
- агрегация журналов работы приложений;
- агрегация статистики из распределенных приложения для витрин данных (data mart);
- журналирование событий.
Наиболее примечательный кейс применения Kafka — постоянная передача данных с устройств интернета вещей и их обработка сразу большим количеством клиентов (их также называют подписчиками или в англоязычной терминологии — consumers). Если число подписчиков меньше, чем число издателей, которые и являются источниками передаваемых данных, в ход идут отложенные вычисления. Сообщения от издателей записываются по соответствующим разделам темы, где будут храниться определенное время. Консьюмеры самостоятельно опрашивают Apache Kafka о наличии новых сообщений (messages) и определяют, какие сообщения им необходимо прочесть.
Говоря простыми словами, ключевая задача, которую решает Kafka — организация потока данных из одной точки в другую и их опциональная обработка. Он может работать с разными видами событий — метрики, логи, данные систем мониторинга и другое.
Apache Kafka позволяет существенно упростить архитектуру, сконцентрировав все сервисы вокруг лога. Например, вот так сервисы, системы и хранилища могли обмениваться данными раньше:
УвеличитьА вот так их взаимодействие выглядит с Apache Kafka:
УвеличитьПреимущество такой архитектуры — в возможностях ее децентрализации. Она не предполагает сильную связанность сервисов и позволяет, например, вынести в облако только их часть, не беспокоясь о полной миграции.
УвеличитьСценарии использования Apache Kafka
Вот так можно использовать брокер сообщений в реальных ситуациях.
Мониторинг активности посетителей веб-ресурса
Kafka можно использовать для «подписки» на потоки данных от различных генераторов событий. После внедрения инструмента все действия пользователей сайта (посещение страниц, клики по кнопкам, использование поиска и пр.) будут публиковаться в центральных топиках, причем каждый тип действий — в своем. Получившиеся фиды можно использовать совершенно по-разному: например, обрабатывать real-time, загружать в Hadoop или хранилища.
Обнаружение фрода
С помощью Apache Kafka можно строить сервисы выявления мошеннических или подозрительных действий. В этом случае его применяют на этапе сбора потоковых данных: в Kafka поступает информация от различных генераторов, например, сервисов онлайн-банкинга, а брокер передает эти данные в Spark, где они обрабатываются в режиме real-time.
УвеличитьОбработка логов игровых приложений
Игры генерируют огромное количество логов, которые затем хранятся в виде обычных файлов на физических серверах или ВМ. В связке с Apache Kafka эти ВМ могут выступать поставщиками данных, которые публикуют логи на брокере, откуда они уже передаются в обработку. Это позволяет работать не с разрозненными файлами, а сразу с потоком данных, которые можно транслировать, агрегировать, хранить и передавать на аналитику. Поскольку Apache Kafka отлично масштабируется и быстро работает, его можно использовать для загрузки данных в обработку в онлайн-режиме.
УвеличитьБэкенд для архитектурной модели Event Sourcing
Event Sourcing — это архитектурный шаблон разработки приложений, согласно которому любые изменения состояния регистрируются в виде некой последовательности записей. Так как Apache Kafka умеет работать с «тяжелыми» логами, его можно использовать как бэкенд для приложений с применением Event Sourcing.
Анализ временных рядов
Kafka можно использовать не только для real-time данных — он отлично подходит для анализа информации, собранной в разное время. С его помощью можно проанализировать данные за циклически повторяющиеся моменты времени (за один и тот же сезон в разные годы, за все выходные и пр.) и, например, зафиксировать снижение спроса. При этом Kafka может получать данные из разных временных рядов, а затем передавать их в ML-приложения, корпоративные DWH, ETL-системы и другие сервисы.
УвеличитьЕсли вы хотите ощутить пользу machine learning, но не планируете строить вычислительную платформу самостоятельно, рекомендуем наши производительные облачные сервисы:
- GPU SuperCloud — прост в использовании, как обычное публичное облако, но готов дать вам всю мощь графических ускорителей NVIDIA Tesla V100.
- MLOps Platform — платформа автоматизации процесса разработки и управления жизненным циклом проектов ML/AI с готовыми инструментами (TensorFlow, PyTorch, TensorBoard, NNI Jupiter Notebook и другими).