Apache Kafka - это распределенная потоковая платформа, имеющая следующие особенности:
- Распределенная система: Данные хранятся и реплицируются на нескольких брокерах, обеспечивая высокую доступность и отказоустойчивость.
- Архитектура Publish-Subscribe: Продюсеры публикуют сообщения в топики, а консьюмеры подписываются на эти топики для их получения.
- Лог-ориентированная структура данных: Данные записываются в топики в виде упорядоченного, неизменяемого лога. Каждое сообщение имеет смещение (offset).
- Масштабируемость: Kafka горизонтально масштабируется путем добавления новых брокеров или партиций.
- Высокая пропускная способность: Способна обрабатывать миллионы сообщений в секунду.
- Надежность: Сообщения персистентны на диске и реплицируются между брокерами.
- Гарантированная доставка сообщений: Поддерживает различные уровни гарантий доставки (at most once, at least once, exactly once).
- Хранение сообщений: Сообщения хранятся в топиках определенный период времени или до достижения определенного размера, после чего удаляются.
- Партиции: Топики разбиваются на партиции, что обеспечивает параллелизм и масштабируемость. Каждая партиция обрабатывается одним консьюмером внутри группы консьюмеров.
- Консьюмер-группы: Несколько консьюмеров могут объединяться в группу для совместного потребления сообщений из топика. Это распределяет нагрузку и обеспечивает обработку каждой партиции только одним консьюмером в группе.
- Zookeeper: Используется для управления кластером Kafka, координации брокеров и управления метаданными. (В последних версиях появляется возможность работы без Zookeeper с использованием KRaft - Kafka Raft Metadata mode).
plaintext