Ответ
Apache Kafka — это распределенная потоковая платформа обмена сообщениями, работающая по модели "публикация-подписка" (pub-sub). Она предназначена для обработки высоконагруженных потоков данных в реальном времени с гарантированной доставкой и отказоустойчивостью.
Основные концепции:
- Топик (Topic): Именованный поток сообщений (логическая категория).
- Партиция (Partition): Топик делится на партиции для параллельной обработки и масштабирования.
- Producer (Продюсер): Приложение, публикующее сообщения в топик.
- Consumer (Консьюмер): Приложение, подписывающееся на топик и читающее сообщения.
- Broker (Брокер): Сервер Kafka, хранящий данные топиков.
- Consumer Group: Группа консьюмеров, совместно потребляющих сообщения из топика (каждое сообщение читается только одним консьюмером в группе).
Пример кода продюсера на 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)) {
// Отправка сообщения с ключом "key1" и значением "Hello Kafka" в топик "test-topic"
ProducerRecord<String, String> record = new ProducerRecord<>("test-topic", "key1", "Hello Kafka");
producer.send(record);
}
Типичные сценарии использования:
- Стриминг данных: Обработка логов, метрик, активностей пользователей.
- Интеграция микросервисов: Асинхронная коммуникация через события (Event-Driven Architecture).
- Мост между системами: Загрузка данных в Data Lake или хранилища (например, через Kafka Connect).