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

Статья описывает сценарии использования ADS.

Обмен сообщениями

Для оптимальной организации обмена сообщениями (messaging) используются брокеры сообщений — приложения, которые выступают посредниками между приложениями источника и приёмника, использующих разные протоколы. Kafka обладает несколькими преимуществами по сравнению с большинством брокеров сообщений:

  • Высокая пропускная способность позволяет обработать большой обьем данных за незначительный период времени.

  • Организованное встроенное партиционирование (partitioning) позволяет контролировать время хранения и объем данных за счет того, что сообщения разделены на сегменты по партициям и не хранятся в одном большом файле.

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

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

Сервисы, дополняющие и оптимизирующие работу Kafka
Сервис Сценарий взаимодействия с Kafka Преимущества использования

NiFi

NiFi как производитель (producer) — принимает данные из источников непосредственно в центральный экземпляр NiFi, который доставляет данные в соответствующий топик Kafka

  • Передача данных в Kafka без специального ПО.

  • Возможность визуально отслеживать и контролировать конвейер данных.

NiFi как потребитель (consumer) — принимает данные из Kafka и передает их в другую систему

  • Передача данных из Kafka в некоторые файловые и иные внешние системы (HFDS, HBase) без специального ПО.

  • Возможность визуально отслеживать и контролировать конвейер данных.

Динамический самонастраивающийся поток данных — объединение возможностей NiFi, Kafka и аналитических платформ:

  1. NiFi передает данные в Kafka.

  2. Данные становятся доступными для аналитических платформ.

  3. Результаты записываются обратно в другой топик Kafka.

  4. Данные поступают в NiFi.

  • Возможность дальнейшего использования данных, полученных NiFi, без специального ПО.

  • Возможность визуально отслеживать и контролировать конвейер данных.

ZooKeeper

Сообщает брокерам Kafka о текущем состоянии кластера

Автоматическое обновление метаданных у клиента Kafka при подключении к любому брокеру

Confluent Schema Registry]

Реализует механизм работы с разными схемами данных Kafka

  • Определение полей, необходимых для описания события.

  • Документирование событий и значений каждого его поля в доступном виде.

  • Предотвращение искажения данных.

  • Работа с различными форматами данных от нескольких источников информации.

Отслеживание активности на сайте

Kafka — отличный инструмент для отслеживания активности на веб-сайте (website activity tracking). Когда новый пользователь регистрируется на веб-сайте, его активность может отслеживаться следующим образом:

  1. Пользователь нажимает кнопку (элемент UI) в интерфейсе веб-страницы.

  2. Веб-приложение создает сообщение с метаданными данного элемента UI.

  3. Сообщения с метаданными собираются в пакете данных и отправляются в Kafka, создавая при этом логи фиксации (commit log).

  4. При следующем действии пользователя с этим элементом UI сообщение о действии добавляется в логи фиксации, а смещение сообщения в очереди увеличивается.

Далее из Kafka эти данные могут быть собраны для аналитики. Эти данные показывают использование веб-сайта в режиме реального времени.

Метрики

Kafka может использоваться для оперативного сбора метрик (мetrics) различных приложений и операционных данных:

  • технологические процессы;

  • статистика аудита и сбора данных;

  • активность системы;

  • агрегирование статистики работающих приложений и инфраструктуры;

  • трекеры потребления потоков данных пользователями в режиме реального времени.

 

Kafka обладает несколькими преимуществами при использовании в мониторинге:

  • Возможность подключать новых производителей для отправки метрик, а затем использовать данные мониторинга для нескольких различных систем.

  • Возможность выполнять анализ в реальном времени по большому набору данных, одновременно со сбором метрик.

  • Возможность использовать небольшой объем кода для обработки данных в приложении потребителя.

  • Возможность выделить в разные модули данные в соответствии с их назначением.

Агрегация журналов

Агрегация журналов (log aggregation) — один из возможных сценариев использования ADS. Для распределенных сред с разными архитектурами Kafka является наиболее оптимальным средством для агрегации журналов. Kafka собирает файлы журналов с серверов и помещает их в центральное хранилище (возможно, на файловый сервер или HDFS) для обработки. По сравнению с другими системами Kafka обладает рядом преимуществ:

  • Kafka абстрагируется от деталей файлов и представляет абстракцию для данных журнала или событий в виде потока сообщений. Это обеспечивает обработку с меньшей задержкой и упрощает поддержку нескольких источников данных и распределенного потребления данных.

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

Потоковая обработка

Для улучшения производительности обмена сообщениями используется потоковая обработка данных (stream processing). Преимущества потоковой передачи данных с ипользованием Kafka перед пакетными конвейерами:

  • Потоки сообщений обрабатываются в реальном времени.

  • К сообщениям применяются операции преобразования, фильтрации, агрегирования или соединения, чтобы опубликовать обработанные сообщения в другом потоке.

  • Потоковые конвейеры снижают нагрузку на источник данных, т.к. не нужно выполнять полные запросы, а можно извлекать данные из лог-файлов СУБД или других систем.

  • Сообщения могут храниться столько, сколько необходимо.

Инструменты и сервисы для потоковой передачи данных
Инструмент или сервис Роль в сценарии потоковой обработки Преимущества использования

Kafka Streams

Клиентская библиотека для разработки потоковых приложений Big Data, которые работают с данными, хранящимися в топиках Kafka

Мощный и гибкий API-интерфейс со всеми преимуществами Kafka (масштабируемость, надежность, минимальная задержка, механизмы аналитических запросов) позволяет разработчику писать код в локальном режиме (вне кластера)

NiFi

Использует концепцию потока как последовательность операций: передача, преобразование и обогащение данных над последовательностью отдельных событий (events)

Поток НЕ рассматривается как большая пакетная (batch) операция, требующая выполнения первоначальной загрузки всех данных перед началом обработки. Например, база данных SQL с миллионами строк рассматривается как миллионы отдельных строк, требующих своей обработки

ksqlDB

Платформа для потоковой обработки больших данных в Kafka с помощью структурированных SQL-запросов

Структуры данных в ksqlDB — это программные единицы, которые способны хранить и обрабатывать множество данных, связанных логикой ksqlDB

Event sourcing

Kafka является оптимальным вариантом для поддержки приложений, созданных по шаблону event sourcing для обработки событий. Преимущества использования Kafka в event sourcing:

  • Поддержка хранения данных журналов значительного обьема.

  • Возможность работы с отложенными событиями благодаря механизмам очереди и смещений в Kafka.

Commit log

Kafka может служить внешним commit log для распределенной системы. Преимущества использования Kafka:

  • Возможность репликации данных между узлами.

  • Возможность восстановления данных (механизм повторной синхронизации для отказавших узлов).

  • Функция сжатия журналов в Kafka.

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