Примеры использования Kafka

Здесь приведено описание нескольких популярных вариантов использования Apache Kafka.

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

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

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

В этой области Kafka можно сравнить с традиционными системами обмена сообщениями, такими как ActiveMQ или RabbitMQ.

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

Первоначальный вариант использования Kafka заключался в том, чтобы иметь возможность перестроить конвейер отслеживания активности пользователей в виде набора каналов публикации-подписки в реальном времени. Это означает, что активность сайта (просмотры страниц, поиски или другие действия, которые могут совершать пользователи) публикуется в центральных темах с одной темой для каждого типа активности. Эти каналы доступны по подписке для различных случаев использования, включая обработку в реальном времени, мониторинг в реальном времени и загрузку в Hadoop или автономные системы хранения данных для автономной обработки и отчетности.

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

Метрики

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

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

Многие люди используют Kafka в качестве замены решения для агрегирования журналов. Агрегирование журналов обычно собирает физические файлы журналов с серверов и помещает их в центральное место (возможно, на файловый сервер или HDFS) для обработки. Kafka абстрагирует детали файлов и дает более чистую абстракцию журнала или данных событий в виде потока сообщений. Это позволяет сократить время задержки и упростить поддержку нескольких источников данных и распределенного потребления данных. По сравнению с системами, ориентированными на журналы, такими как Scribe или Flume, Kafka предлагает одинаково хорошую производительность, более надежные гарантии надежности за счет репликации и гораздо более низкую сквозную задержку.

Обработка потока

Многие пользователи Kafka обрабатывают данные в конвейерах обработки, состоящих из нескольких этапов, где необработанные входные данные потребляются из тем Kafka, а затем агрегируются, обогащаются или иным образом преобразуются в новые темы для дальнейшего использования или последующей обработки. Например, конвейер обработки для рекомендации новостных статей может сканировать содержимое статьи из RSS-каналов и публиковать его в теме «статьи»; дальнейшая обработка может нормализовать или дедуплицировать это содержимое и опубликовать очищенное содержимое статьи в новой теме; на заключительном этапе обработки может быть предпринята попытка рекомендовать этот контент пользователям. Такие конвейеры обработки создают графики потоков данных в реальном времени на основе отдельных тем. Начиная с версии 0.10.0.0, в Apache Kafka доступна легкая, но мощная библиотека потоковой обработки под названием Kafka Streams для выполнения такой обработки данных, как описано выше. Помимо Kafka Streams, альтернативные инструменты обработки потоков с открытым исходным кодом включают Apache Storm и Apache Samza.

Источники событий

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

Журнал фиксации

Kafka может служить своего рода внешним журналом фиксации (commit-log) для распределенной системы. Журнал помогает реплицировать данные между узлами и действует как механизм повторной синхронизации для отказавших узлов при восстановлении их данных. Функция сжатия журналов в Kafka помогает поддерживать такое использование. В этом использовании Kafka похож на проект Apache BookKeeper.


Читайте также:

Комментарии

Популярные сообщения из этого блога

Язык поисковых запросов в Graylog

Хэш-таблица: разрешение коллизий

Нормальные формы, пример нормализации в базе данных