RabbitMQ обычно доставляет сообщения активным consumers с учётом prefetch; Kafka consumer сам запрашивает порции данных. Нагрузка определяется также батчами, подтверждениями и скоростью клиентов.
Чем паттерн Push-based в RabbitMQ концептуально отличается от Pull-based в Kafka с точки зрения нагрузки на брокер?
RabbitMQ обычно доставляет сообщения активным consumers с учётом prefetch; Kafka consumer сам запрашивает порции данных. Нагрузка определяется также батчами, подтверждениями и скоростью клиентов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
RabbitMQ обычно доставляет сообщения активным consumers с учётом prefetch; Kafka consumer сам запрашивает порции данных. Нагрузка определяется также батчами, подтверждениями и скоростью клиентов.
В push-модели брокер знает о подписчиках и управляет доставкой, ограничивая число неподтверждённых сообщений. Медленный consumer не должен получать бесконечный поток: для этого важны prefetch и backpressure. В pull-модели клиент управляет частотой и объёмом fetch, а ожидание на сервере позволяет избежать постоянных пустых запросов. Нельзя заключить, что push всегда тяжелее или pull всегда дешевле: сравнивают размер сообщений, репликацию, batching, сеть и требования к задержке.
Источник: www.rabbitmq.com.