Сценарии использования
Статья описывает сценарии использования ADS.
Обмен сообщениями
Для оптимальной организации обмена сообщениями (messaging) используются брокеры сообщений — приложения, которые выступают посредниками между приложениями источника и приёмника, использующих разные протоколы. Kafka обладает несколькими преимуществами по сравнению с большинством брокеров сообщений:
-
Высокая пропускная способность позволяет обработать большой обьем данных за незначительный период времени.
-
Организованное встроенное партиционирование (partitioning) позволяет контролировать время хранения и объем данных за счет того, что сообщения разделены на сегменты по партициям и не хранятся в одном большом файле.
-
Репликация позволяет автоматически переключаться на реплики записей при отказе сервера в кластере, поэтому сообщения остаются доступными даже при сбоях.
-
Отказоустойчивость гарантирует, что система обмена сообщениями будет сохранять сообщения при отсутствии активных подписчиков до тех пор, пока новый потребитель не подпишется на очередь сообщений.
Сервис | Сценарий взаимодействия с Kafka | Преимущества использования |
---|---|---|
NiFi |
NiFi как производитель (producer) — принимает данные из источников непосредственно в центральный экземпляр NiFi, который доставляет данные в соответствующий топик Kafka |
|
NiFi как потребитель (consumer) — принимает данные из Kafka и передает их в другую систему |
|
|
Динамический самонастраивающийся поток данных — объединение возможностей NiFi, Kafka и аналитических платформ:
|
|
|
ZooKeeper |
Сообщает брокерам Kafka о текущем состоянии кластера |
Автоматическое обновление метаданных у клиента Kafka при подключении к любому брокеру |
Confluent Schema Registry] |
Реализует механизм работы с разными схемами данных Kafka |
|
Отслеживание активности на сайте
Kafka — отличный инструмент для отслеживания активности на веб-сайте (website activity tracking). Когда новый пользователь регистрируется на веб-сайте, его активность может отслеживаться следующим образом:
-
Пользователь нажимает кнопку (элемент UI) в интерфейсе веб-страницы.
-
Веб-приложение создает сообщение с метаданными данного элемента UI.
-
Сообщения с метаданными собираются в пакете данных и отправляются в Kafka, создавая при этом логи фиксации (commit log).
-
При следующем действии пользователя с этим элементом 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.