Получить доступ

Чем неблокирующая модель обработки отличается от модели «поток на запрос»?

JuniorReactive и WebFluxSpringWebFlux
Ещё спрашивают так:
  • Что такое неблокирующий ввод-вывод?
Коротко

«Поток на запрос»: пока запрос ждёт базу или сеть, его поток простаивает. Неблокирующая модель: мало потоков на много соединений — ожидание не держит поток, он берёт другую работу.

  • Выигрыш при большом числе одновременных ожидающих запросов
  • Требует неблокирующего кода по всей цепочке
  • Виртуальные потоки дают похожий эффект с обычным кодом

А ещё В Spring — WebFlux на Netty

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

В классической модели поток занят всё время обработки, включая ожидание ответа базы или внешнего сервиса, поэтому число одновременных запросов упирается в число потоков, а каждый поток стоит памяти. Неблокирующая модель освобождает поток на время ожидания. Плата — стиль кода: логика распадается на цепочки операторов, отладка усложняется, а один случайно поставленный блокирующий вызов способен парализовать весь сервис. Виртуальные потоки предлагают третий путь — привычный последовательный код без удержания ресурса на время ожидания.

Что хотят услышать

  • Различие моделей.
  • Когда выгоден неблокирующий подход.

Частые ошибки

  • Выполнять блокирующие вызовы внутри реактивной цепочки.
  • Переходить на реактивный стек без измеренной причины.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Небольшое число потоков обслуживает много соединений: поток не простаивает в ожидании ответа, а переключается на другую работу
  • ✗На каждый запрос создаётся отдельный поток, но с меньшим стеком
  • ✗Запросы обрабатываются строго последовательно, по одному
  • ✗Обработка полностью переносится на клиента

Что спросят дальше

  • Что произойдёт при блокирующем вызове в event loop?
  • Как виртуальные потоки меняют этот выбор?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем