Skip to main content

Архитектура

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 без группы равносилен группе из одного пользователя