Реактивный против нереактивного времени ответа - PullRequest
0 голосов
/ 17 июня 2019

Для системы, достаточно мощной для обслуживания нескольких запросов (без использования потоков), будет ли разница, с точки зрения пользователей, с точки зрения времени отклика / скорости?

Кроме того, будет ли база данных единственной вещью, которая обычно блокирует поток, и, следовательно, нам нужен реактивный драйвер БД? Я имею в виду, если конечная точка покоя не выполняет вызовы в db, не будет различий, является ли конечная точка реактивной или нет?

1 Ответ

0 голосов
/ 20 июня 2019

Прежде всего, вам необходимо знать, что происходит при использовании проекта-реактора - клиента webflux.

Давайте предположим, что ваша конечная точка (call / demo) отвечает за выполнение 5 асинхронных вызовов в другие системы для возврата ответа от себя.

Пример времени ответа:

  • Сервис A: 5 мс
  • Служба B: 50 мс
  • Сервис C: 100 мс
  • Служба D: 250 мс
  • Сервис E: 400 мс

Типичный путь клиента без Weblux:

использовано 5 потоков, последний заблокирован на 400 мс.

Путь клиента Webflux:

Каждый вызов службам A, B, C, D, E потребляет один поток, выполняет вызов, возвращает поток, а когда приходит ответ, другой поток используется для обработки ответа.

Окончательный вывод: Если ваша система будет перегружена большим количеством запросов (пусть это будет n), в то же время вы заблокируете n потоков на 400 мс.

Попробуйте представить масштаб проблемы.

...