Apache Kafka
Apache Kafka – распределённая система для обработки данных в режиме реального времени.
Работает как почта — одни сервисы передают туда сообщения, а другие — получают.
Называют брокером сообщений, так как выступает в качестве посредника
Компоненты
🟣Продюсеры — приложения, которые публикуют данные
🟣Консьюмеры — приложения, которые читают
⚪️Топики – каналы, куда продюсеры публикуют сообщения. Могут иметь множество подписчиков (консьюмеров)
⚪️Партиции – части топиков для параллельной обработки данных.
Сообщения в партиции хранятся в строгом порядке
🟣Брокеры — серверы, которые принимают, хранят и передают сообщения.
В кластере их может быть несколько для отказоустойчивости и масштабируемости
🟣Зукипер — сервис для координации. Управляет конфигурацией кластера, отслеживает состояние брокеров, топиков и партиций
Принцип работы
*️⃣Публикация: продюсер отправляет данные в топик, выбирает партицию для записи (с помощью ключа сообщения, по алгоритму round-robin)
*️⃣Хранение: сообщение записывается в выбранную партицию на одном из брокеров.
Происходит репликация (об этом далее)
*️⃣Чтение: консьюмер запрашивает данные из топика, Kafka направляет консьюмера к соответствующей партиции.
Читает, начиная с последнего прочитанного сообщения (офсета).
*️⃣Обновление офсетов: консьюмер периодически обновляет свой текущий офсет (в Zookeeper / в самом Kafka, зависит от настройки)
Это позволяет возобновить чтение с правильного места в случае сбоя.
Репликация данных
✨Реплика в Kafka – копия партиции топика, хранится на другом брокере для обеспечения надежности и отказоустойчивости.
✨Лидер — основная копия партиции, которая обрабатывает все операции записи и чтения.
Фолловеры — дополнительные копии, которые синхронизируются с лидером.
Как работает?
➖Сообщения записываются в лидера и затем копируются на фолловеров
➖Фолловеры следят за лидером и обновляются в реальном времени
➖Если лидер выходит из строя, один из фолловеров становится новым лидером для непрерывности работы
✨Replication factor — количество реплик для каждой партиции. Например, фактор репликации 3 означает 1 основную копию и 2 резервные.
Типы доставки сообщений
🟠At most once: сообщение может быть доставлено максимум один раз, возможны потери
🟠At least once — как минимум один раз, возможны дублирования
🟠Exactly once — ровно один раз, без потерь и дублирования
Надежность доставки
Продюсеры могут настроить количество подтверждений (acks) от брокеров
😀acks=0: Без подтверждений, низкая надежность.
😀acks=1: Подтверждение от лидера, средняя надежность.
😀acks=all: Подтверждение от всех реплик, высокая надежность.
Способы Интеграции с Kafka
*️⃣Прямое подключение: через стандартные клиенты (Java, Python, Go и др.)
*️⃣Коннекторы Kafka Connect: для интеграции с БД, хранилищами и др.
*️⃣Потоковые платформы: Apache Flink, Apache Spark и др
Примеры
Синхронная работа
⏺Синхронная передача: приложения отправляют данные и ожидают подтверждения от Kafka
☺️ параметр acks=all у продюсера, чтобы дождаться подтверждения от всех реплик перед продолжением
⏺Запрос-ответ: консьюмер отправляет запрос и ожидает ответа в другом топике.
☺️ уникальные ключи для корреляции запросов и ответов
Асинхронная
⏺Логирование и мониторинг: отправка логов без ожидания подтверждения
☺️ параметр acks=1 или acks=0 для продюсеров, чтобы минимизировать задержку
⏺Обработка событий
☺️ группа консьюмеров параллельно обрабатывает события
⏺ETL-процессы: загрузка в хранилища через Kafka
☺️ Kafka Connect для интеграции с источниками и приемниками
Kafka как хранилище данных
😀Можно настраивать время хранения сообщений от минут до нескольких лет
😀Сообщения хранятся в сегментах и индексируются ✨ эффективное управление большими объемами данных
😀Высокая скорость записи и чтения данных
Ограничения
😀Нет сложных запросов и транзакционной поддержки
😀Старые данные автоматически удаляются по истечению срока
😀Иногда нужна интеграция с др системами (HDFS, S3, реляционные БД)
📎 Подборка материалов в этом посте
#интеграции
Post #448
17.7K
Системный Аналитик Основы Kafka – что нужно знать аналитику Неделей ранее мы рассматривали основные понятия очередей сообщений. Пришло время копнуть чуть глубже и познакомиться с Кафкой. Apache Kafka – популярный брокер сообщений с открытым исходным кодом. Применяется в …
- 👍 68
- ❤ 27
- 🔥 9
- ⚡ 2
- 👎 1