Ответ
Apache Kafka — это распределённая, отказоустойчивая, высокопроизводительная платформа потоковой передачи событий (event streaming platform).
Основное назначение: Надёжная обработка и хранение непрерывных потоков событий (данных) в реальном времени в режиме публикация-подписка (pub-sub).
Ключевые сценарии использования:
- Асинхронная межсервисная коммуникация (Messaging): Связь между микросервисами или распределёнными системами.
- Трек изменений данных (Change Data Capture - CDC): Фиксация и распространение изменений из базы данных.
- Сбор и агрегация логов и метрик: Централизованный сбор данных с множества источников.
- Обработка потоков событий (Stream Processing): Реакция на события в реальном времени (например, фрод-детекция, рекомендации).
Пример простого продюсера (Java):
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
try (Producer<String, String> producer = new KafkaProducer<>(props)) {
ProducerRecord<String, String> record = new ProducerRecord<>("orders-topic", "order-123", "{ "status": "shipped" }");
producer.send(record); // Асинхронная отправка сообщения в топик
}
Почему Kafka популярен?
- Высокая пропускная способность: Обрабатывает миллионы сообщений в секунду.
- Масштабируемость: Легко масштабируется горизонтально добавлением брокеров.
- Отказоустойчивость и долговременное хранение: Данные реплицируются и могут храниться сколь угодно долго.
- Гарантия порядка доставки: Сообщения в пределах одного партиции доставляются в порядке отправки.