Все статьи

Apache Kafka и как его используют в облачных средах

23 ноя 20212558

Apache Kafka — это распределенный программный брокер сообщений. Его ключевая задача заключается в сборе данных у приложений и их хранении в распределенном хранилище (из-за чего Kafka нередко называют гибридом брокера и СУБД). Сегодня разберем, зачем вообще нужен Apache Kafka и какую роль он играет в проектах, связанных с большими данными.

dreamstime_xxl_122583170.jpg

Ключевые возможности Apache Kafka

Apache Kafka позволяет в онлайн-режиме собирать и обрабатывать множество типов данных, например:

  • поведение посетителя веб-сайта или приложения;
  • данные с устройств интернета вещей (Internet of Things, IoT) и IIoT;
  • агрегация журналов работы приложений;
  • агрегация статистики из распределенных приложения для витрин данных (data mart);
  • журналирование событий.

Наиболее примечательный кейс применения Kafka — постоянная передача данных с устройств интернета вещей и их обработка сразу большим количеством клиентов (их также называют подписчиками или в англоязычной терминологии — consumers). Если число подписчиков меньше, чем число издателей, которые и являются источниками передаваемых данных, в ход идут отложенные вычисления. Сообщения от издателей записываются по соответствующим разделам темы, где будут храниться определенное время. Консьюмеры самостоятельно опрашивают Apache Kafka о наличии новых сообщений (messages) и определяют, какие сообщения им необходимо прочесть.

Говоря простыми словами, ключевая задача, которую решает Kafka — организация потока данных из одной точки в другую и их опциональная обработка. Он может работать с разными видами событий — метрики, логи, данные систем мониторинга и другое.

Apache Kafka позволяет существенно упростить архитектуру, сконцентрировав все сервисы вокруг лога. Например, вот так сервисы, системы и хранилища могли обмениваться данными раньше:

30_1.png Увеличить

А вот так их взаимодействие выглядит с Apache Kafka:

30_2.png Увеличить

Преимущество такой архитектуры — в возможностях ее децентрализации. Она не предполагает сильную связанность сервисов и позволяет, например, вынести в облако только их часть, не беспокоясь о полной миграции.

30_3.png Увеличить

Сценарии использования Apache Kafka

Вот так можно использовать брокер сообщений в реальных ситуациях.

Мониторинг активности посетителей веб-ресурса

Kafka можно использовать для «подписки» на потоки данных от различных генераторов событий. После внедрения инструмента все действия пользователей сайта (посещение страниц, клики по кнопкам, использование поиска и пр.) будут публиковаться в центральных топиках, причем каждый тип действий — в своем. Получившиеся фиды можно использовать совершенно по-разному: например, обрабатывать real-time, загружать в Hadoop или хранилища.

Обнаружение фрода

С помощью Apache Kafka можно строить сервисы выявления мошеннических или подозрительных действий. В этом случае его применяют на этапе сбора потоковых данных: в Kafka поступает информация от различных генераторов, например, сервисов онлайн-банкинга, а брокер передает эти данные в Spark, где они обрабатываются в режиме real-time.

30_4.png Увеличить

Обработка логов игровых приложений

Игры генерируют огромное количество логов, которые затем хранятся в виде обычных файлов на физических серверах или ВМ. В связке с Apache Kafka эти ВМ могут выступать поставщиками данных, которые публикуют логи на брокере, откуда они уже передаются в обработку. Это позволяет работать не с разрозненными файлами, а сразу с потоком данных, которые можно транслировать, агрегировать, хранить и передавать на аналитику. Поскольку Apache Kafka отлично масштабируется и быстро работает, его можно использовать для загрузки данных в обработку в онлайн-режиме.

30_5.png Увеличить

Бэкенд для архитектурной модели Event Sourcing

Event Sourcing — это архитектурный шаблон разработки приложений, согласно которому любые изменения состояния регистрируются в виде некой последовательности записей. Так как Apache Kafka умеет работать с «тяжелыми» логами, его можно использовать как бэкенд для приложений с применением Event Sourcing.

Анализ временных рядов

Kafka можно использовать не только для real-time данных — он отлично подходит для анализа информации, собранной в разное время. С его помощью можно проанализировать данные за циклически повторяющиеся моменты времени (за один и тот же сезон в разные годы, за все выходные и пр.) и, например, зафиксировать снижение спроса. При этом Kafka может получать данные из разных временных рядов, а затем передавать их в ML-приложения, корпоративные DWH, ETL-системы и другие сервисы.

30_6.png Увеличить

Если вы хотите ощутить пользу machine learning, но не планируете строить вычислительную платформу самостоятельно, рекомендуем наши производительные облачные сервисы:

  • GPU SuperCloud — прост в использовании, как обычное публичное облако, но готов дать вам всю мощь графических ускорителей NVIDIA Tesla V100.
  • MLOps Platform — платформа автоматизации процесса разработки и управления жизненным циклом проектов ML/AI с готовыми инструментами (TensorFlow, PyTorch, TensorBoard, NNI Jupiter Notebook и другими).