День 2226. #ЗаметкиНаПолях
Kafka и Event-Driven Архитектура. Начало
Kafka — это распределённая платформа потоковой передачи событий с открытым исходным кодом, предназначенная для обработки потоков данных в реальном времени.
Первоначально разработанная в LinkedIn, а затем с открытым кодом в Apache Software Foundation, Kafka теперь широко используется для создания высокопроизводительных, отказоустойчивых и масштабируемых конвейеров данных, аналитики в реальном времени и архитектур, управляемых событиями.
Какие проблемы решает?
До Kafka широко использовались традиционные очереди сообщений, такие как RabbitMQ и ActiveMQ, но у них были ограничения при обработке больших потоков данных в реальном времени с высокой пропускной способностью.
Kafka была разработана для решения этих проблем, предоставляя:
1. Обработку больших данных
Оптимизирована для приёма, хранения и распределения потоков данных большого объёма по распределённым системам.
2. Отказоустойчивость
Реплицирует данные на несколько узлов, гарантируя, что даже в случае сбоя брокера данные останутся доступными.
3. Долговечность
Сообщения сохраняются на диске, что позволяет потребителям воспроизводить события при необходимости.
4. Поддержку Event-Driven архитектуры
Обеспечивает асинхронную связь между микросервисами, что делает её идеальной для современных облачных приложений.
Когда использовать?
1. Сообщения
Kafka хорошо подойдёт в качестве замены более традиционному брокеру сообщений для отделения обработки от производителей данных, для буферизации необработанных сообщений и т.д. По сравнению с большинством систем обмена сообщениями Kafka имеет лучшую пропускную способность, встроенное партиционирование, репликацию и отказоустойчивость, что делает её хорошим решением для крупных приложений обработки сообщений.
2. Отслеживание активности веб-сайта
Первоначальным вариантом использования Kafka была возможность перестроить конвейер отслеживания активности пользователя в виде набора тем публикации-подписки в реальном времени. Это означает, что активность сайта (просмотры страниц, поиски или другие действия, которые могут выполнять пользователи) публикуется в темах по типу активности. Эти темы доступны для подписки для различных вариантов использования, включая обработку и мониторинг в реальном времени, загрузку в Hadoop или автономные системы хранения данных для автономной обработки и отчётности.
3. Метрики
Kafka часто используется для данных оперативного мониторинга: агрегации статистики из распределённых приложений для создания централизованных каналов оперативных данных.
4. Агрегация журналов
Агрегация журналов обычно собирает физические файлы журналов с серверов и помещает их в единое место для обработки. Kafka абстрагирует детали файлов и даёт более чистую абстракцию данных журнала или событий в виде потока сообщений. Это позволяет обрабатывать данные с меньшей задержкой и упрощает поддержку нескольких источников данных и распределённого потребления данных.
5. Потоковая обработка
Многие пользователи Kafka обрабатывают данные в конвейерах обработки, состоящих из нескольких этапов, где необработанные входные данные потребляются из тем Kafka, а затем агрегируются, обогащаются или иным образом преобразуются в новые темы для дальнейшего потребления или последующей обработки.
6. Event Sourcing
Это стиль проектирования приложений, в котором изменения состояния регистрируются как упорядоченная по времени последовательность записей. Поддержка Kafka очень больших хранимых данных журнала делает её отличным бэкэндом для приложений, созданных в этом стиле.
7. Журнал транзакций
Kafka может служить своего рода внешним журналом транзакций для распределённой системы. Журнал помогает реплицировать данные между узлами и действует как механизм повторной синхронизации для отказавших узлов для восстановления их данных.
Окончание следует…
Источники:
- https://dev.to/lovestaco/why-kafka-a-developer-friendly-guide-to-event-driven-architecture-4ekf
- https://kafka.apache.org
>>Click here to continue<<