В чём разница между архитектурными подходами Push-based и Pull-based при проектировании систем стриминга данных, например RabbitMQ и Kafka? Как эти подходы влияют на утилизацию памяти на стороне брокера и проблему перегрузки потребителей (consumer backpressure)?

Push отправляет данные потребителю по инициативе брокера, pull позволяет потребителю запрашивать порции. Управление потоком нужно в обоих случаях; сама модель не определяет весь расход памяти брокера.

Короткий ответ

Что ответить на собеседовании

Push отправляет данные потребителю по инициативе брокера, pull позволяет потребителю запрашивать порции. Управление потоком нужно в обоих случаях; сама модель не определяет весь расход памяти брокера.

Подробный разбор

Ответ с пояснениями

Push отправляет данные потребителю по инициативе брокера, pull позволяет потребителю запрашивать порции. Управление потоком нужно в обоих случаях; сама модель не определяет весь расход памяти брокера.

При push ограничивают число неподтверждённых сообщений и скорость отправки, иначе память клиента растёт. При pull контролируют размер выборки, внутреннюю очередь и число обрабатываемых записей. RabbitMQ-потребление часто push-based с prefetch, Kafka — fetch-based, но нельзя сводить продукты только к этому различию. Отстающий потребитель увеличивает очередь или лаг; хранение на диске, retention и лимиты определяют, где накапливается нагрузка.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее