Перейти к содержимому
Опубликовано

📈 Кто дергает? Это один из первых вопросов,...

Автор
  • Имя
    Максим | Системный анализ
    Telegram

Кратко

Кто дергает? Это один из первых вопросов, который должен возникнуть у аналитика при проектировании интеграции. Есть два подхода: Pull-модель....

Кто дергает? Это один из первых вопросов, который должен возникнуть у аналитика при проектировании интеграции. Есть два подхода: Pull-модель. Приложение само решает, когда сходить за данными. Как официант, который подходит к вам в ресторане и спрашивает, готовы ли вы сделать заказ. Push-модель. Сервер уведомляет о том, что у него появились новые данные. Как в KFC на экранах появляется уведомление, что заказ готов. Почему в kafka выбрали pull? Контроль над нагрузкой: если потребитель перегружен, то он просто перестает слать запросы и разбирает накопившиеся данные. Батчинг: pull-модель позволяет забирать данные пачками. Это кратно увеличивает пропускную способность и снижает накладные расходы на сеть. Восстановление после падения клиента: поскольку потребитель хранит место, где он остановился, то в случае падения и потери данных он просто начинает с того места, где упал (как на видео ). А в push-модели запросить уже прочитанные данные практически невозможно без танцев с бубном.

Подводный камень Если данных нет, то pull-модель порождает паразитную нагрузку:
Consumer: Есть данные? Producer: Нет Consumer: А сейчас? Producer: Нет Consumer: Ну может сейчас есть? Producer: Нет
Поэтому в кафка используют long pooling. Consumer присылает запрос, но брокер не отвечает сразу, если данных нет. Он держит соединение открытым (например, 500 мс) и ждет. Как только данные появились, сразу отдает. Если не появились, то такой способ помогает хотя бы сократить частоту запросов на время простоя. @maximbelovmentor
Максим | Системный анализ
349 подписчиков
95 постов
Как войти в IT через системный анализ и получить оффер от 200к+. Опыт Senior аналитика из топ-банков. Разборы, практика, собесы, техника мышления аналитика. Бесплатная консультация - в закрепе.