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







