Архитектура
Apache Kafka — opensource платформа хранения и потоковой передачи событий в режиме реального времени.
Событийная архитектура (Event driven architecture, EDA): шаблон, в котором производство, обнаружение, потребление и реакция на события играют центральную роль. Преимущества:
- Асинхронное взаимодействие, позволяющее функционировать системе при неустойчивой работе части компонентов
- Увеличение гибкости
- Снижение риска каскадных ошибок
Недостатки:
- Согласованность данных.
- Задержки между изменением данных и получением информации об изменении.
- Повышенные операционные издержки
Примеры задач EDA:
Объединяет создание значительных объемов данных, которые асинхронно получаются из различных источников и анализируются позже. Примеры:
- анализ активности пользователей
- сбор логов в задачах администрирования
- детекция мошенничества
- предсказание аварии железа
Ключевые компоненты
Кластерная структура стандартная:
Производители создают и отправляют данные, брокеры распределяют данные по потребителям, потребители получают и обрабатывают данные.
Процессы внутри одного брокера:
| Точка | Критерий выбора | Дополнительно |
| Topic | Topic name | Задается Producer при отправке сообщения. Обязательный параметр |
| Partition | Может задаваться Producer при отправке сообщения для определения Partition. Необязательный параметр. | |
| Key |
Выбор раздела по hash функции от ключа. Необязательный параметр. Но не гарантируется и зависит от количества разделов и количества ключей. Если не указан ни Key, ни Partition, то сообщения отправляются всем Consumer по кругу |
|
| Group | ||
| Consumer |
Offset
Смещение точки непрочитанного сообщения. В рамках Partition. Commit = фиксация.
Группы
- Сообщение из одной parititon не может поступать нескольким consumer в пределах группы
- Один consumer может получать сообщения из нескольких partition
- При нескольких группах consumer, каждая группа будет получать все сообщения
- Одиночный consumer без группы равносилен группе из одного пользователя