> В чем разница между Kafka и RabbitMQ (Go, Python)
Уровень: senior · Роль: backend · Категория: Технические вопросы
Компании: Wildberries, Lamoda
Стек: Go, Python
> Пример ответа
Основное различие между Kafka и RabbitMQ - в модели передачи сообщений и сценариях использования. RabbitMQ - это классический брокер сообщений, работающий по модели очередей с поддержкой различных протоколов (AMQP, MQTT, STOMP). Он идеален для задач, где важна гарантированная доставка каждого сообщения одному потребителю, например, в микросервисной архитектуре с Go или Python для обработки фоновых задач (celery + RabbitMQ). Kafka же - это распределенная платформа потоковой обработки, построенная на логах (commit log). Она хранит сообщения в топиках с возможностью повторного чтения, что делает её незаменимой для event sourcing, логов, метрик и real-time аналитики.
На практике: в Go-проекте с RabbitMQ вы будете использовать библиотеку streadway/amqp для отправки и получения сообщений с подтверждениями (ack), а в Kafka - confluent-kafka-go или segmentio/kafka-go для работы с партициями и оффсетами. RabbitMQ лучше подходит для сложной маршрутизации (direct, topic, fanout exchanges) и гарантированной доставки с низкой задержкой, а Kafka - для высокой пропускной способности (миллионы сообщений в секунду) и долговременного хранения данных. В Python аналогично: pika для RabbitMQ, confluent-kafka для Kafka.
Выбор зависит от задачи: если нужно надежно передать задание одному воркеру - RabbitMQ; если требуется обрабатывать потоки событий с возможностью replay - Kafka.
> Похожие задачи по backend
Какие состояния могут быть у горутин в Go
Каковы преимущества и недостатки индексов в базе данных
Как использовать EXPLAIN и ANALYZE для оптимизации SQL запросов
Можно ли передать функцию как аргумент в другую функцию в Go
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью