Что важно знать
- Реактивный стек — мало потоков, неблокирующий ввод-вывод.
- Блокирующий вызов в реактивной цепочке останавливает event loop.
- С виртуальными потоками преимущества WebFlux для обычных сервисов уменьшились.
Реактивный стек — Reactor, неблокирующий ввод-вывод и когда он нужен.
Практика. Реализовать агрегирующий эндпоинт на WebFlux, опрашивающий три сервиса параллельно, и сравнить с MVC на виртуальных потоках.
Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.
«Поток на запрос»: пока запрос ждёт базу или сеть, его поток простаивает. Неблокирующая модель: мало потоков на много соединений — ожидание не держит поток, он берёт другую работу.
Полный разборНичего не произойдёт: Mono и Flux холодные — описывают намерение, а работа начинается при подписке. Не вернули Mono фреймворку и не подписались — вызова не будет.
Полный разборРеактивное программирование — работа с асинхронными потоками данных через неблокирующие операторы. Backpressure — потребитель сам запрашивает столько элементов, сколько готов обработать (request(n)), и быстрый источник его не захлёстывает.
Полный разборSpring MVC — сервлетная модель «поток на запрос», блокирующий код. WebFlux — неблокирующая модель на event loop (Netty) с Reactor: малое число потоков обслуживает много соединений, но весь путь обязан быть неблокирующим.
Полный разборПотоков event loop — по числу ядер. Синхронный JDBC-запрос блокирует такой поток, и все соединения на нём ждут: несколько медленных запросов — и сервис стоит.
Полный разборMono — асинхронный результат из 0 или 1 элемента, Flux — поток из 0..N элементов (библиотека Project Reactor). Это описание вычисления: ничего не происходит, пока кто-то не подпишется (в WebFlux подписывается фреймворк, когда вы возвращаете Mono из…
Полный разборRestClient (Spring 6.1) — современный синхронный клиент с fluent API, замена RestTemplate для блокирующих приложений. WebClient — неблокирующий клиент на Reactor, возвращает Mono и Flux; нужен в WebFlux и для параллельных вызовов. Обязательны таймауты…
Полный разборНеблокирующая модель и event loop, Reactive Streams и Reactor (Mono/Flux), backpressure, реактивный стек целиком, выбор MVC/WebFlux и цена сложности.
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.