Что такое Apache Kafka?

«Что такое Apache Kafka?» — вопрос из категории Брокеры сообщений, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Apache Kafka — это распределённая, отказоустойчивая, высокопроизводительная платформа потоковой передачи событий (event streaming platform). Она функционирует как брокер сообщений, но с акцентом на долговременное хранение, высокую пропускную способность и обработку потоков данных в реальном времени.

Ключевые концепции и архитектура:

  • Топики (Topics): Категории или потоки, в которые публикуются сообщения. Топики логически разделяются на партиции для горизонтального масштабирования и параллельной обработки.
  • Производители (Producers): Приложения, которые публикуют (записывают) сообщения в топики Kafka.
  • Потребители (Consumers): Приложения, которые подписываются на топики и читают сообщения. Потребители объединяются в группы (Consumer Groups) для распределения нагрузки.
  • Кластер Kafka: Состоит из нескольких брокеров (серверов), где топики реплицируются между брокерами для отказоустойчивости.

Пример создания топика через утилиту командной строки:

# Создание топика 'user-events' с 3 партициями и фактором репликации 2
kafka-topics.sh --create 
  --topic user-events 
  --bootstrap-server kafka-broker1:9092,kafka-broker2:9092 
  --partitions 3 
  --replication-factor 2

Применение в DevOps и микросервисной архитектуре:

  • Декомпозиция связей: Асинхронная коммуникация между микросервисами.
  • Сбор логов и метрик: Централизованный поток событий от всех компонентов системы.
  • Трекер изменений (Change Data Capture): Передача изменений из базы данных в другие системы.
  • Обработка событий в реальном времени: Для аналитики, оповещений и реактивных пайплайнов.