Как Реактивное программирование с использованием WebFlux обрабатывает зависимые внешние вызовы API - PullRequest
0 голосов
/ 02 ноября 2018

Я новичок в реактивном программировании, и я хотел бы знать одну вещь: предположим, у нас есть API, который вызывает 3 других API внутри. В котором результат первого API подается на второй, а выход второго API подается на третий. Разве это не сводится к нормальному выполнению на основе одного потока. Если да, то почему мы должны использовать реактивное программирование в таком сценарии.

1 Ответ

0 голосов
/ 02 ноября 2018

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

Но в случае блокирующего API ввода-вывода при его обработке действительно будет использоваться поток для всей операции, даже когда сервер ожидает ответа от удаленного API. Сотни обращений к вашему API будут означать сотни потоков и связанных с ними ресурсов, часто ничего не садясь в ожидании удаленных ресурсов.

Если вместо этого вы используете реактивный API, ваш сервер будет использовать меньше потоков и не будет продолжать использовать ресурсы в ожидании этих удаленных ответов.

Таким образом, не улучшая скорость этого варианта использования, он улучшит масштабируемость вашего сервиса и потребит меньше ресурсов (память и процессор).

...