Вопрос проверяет понимание основных логических компонентов Kafka и их ролей во взаимодействии producer’ов и consumer’ов.
Kafka на логическом уровне состоит из broker’ов, topic’ов, partition’ов, producer’ов и consumer’ов. Producer’ы отправляют сообщения в topic’и, а consumer’ы их читают. Topic делится на partition’ы для масштабирования и параллелизма. Consumer’ы объединяются в группы для распределения нагрузки. Kafka хранит сообщения упорядоченно внутри partition’а.
Apache Kafka — это распределенная платформа для передачи и хранения потоков сообщений.
Kafka состоит из нескольких логических компонентов, каждый из которых решает свою задачу.
Broker — это сервер Kafka, который:
принимает сообщения от producer’ов,
хранит данные,
отдает сообщения consumer’ам.
Кластер Kafka обычно состоит из нескольких broker’ов.
Topic — это логическая категория сообщений. Producer отправляет сообщения в topic, а consumer читает их оттуда.
Каждый topic разбивается на partition’ы, которые:
позволяют масштабировать чтение и запись,
обеспечивают порядок сообщений внутри partition’а.
Producer:
отправляет сообщения в topic,
может выбирать partition (явно или автоматически),
не знает, кто будет читать сообщения.
Consumer:
читает сообщения из partition’ов.
Consumer group:
группа consumer’ов, которые совместно читают topic,
каждый partition в группе читается только одним consumer’ом.
Последовательность работы выглядит так:
Producer отправляет сообщение в topic
Kafka сохраняет сообщение в конкретный partition
Consumer из группы читает сообщения из своего partition’а
Логическая архитектура Kafka построена вокруг topic’ов и partition’ов, что позволяет эффективно масштабировать обработку сообщений и обеспечивать высокую пропускную способность.