Разница между циклом событий и потоком для модели запроса - PullRequest
0 голосов
/ 27 сентября 2019

Согласно моим исследованиям, я обнаружил, что в модели потока на запрос каждый приходящий запрос порождает новый поток.Допустим, у меня было 100 запросов, у меня было бы 100 потоков, работающих одновременно.Переходя к модели с циклическим событием (аналогично весеннему webflux), у нас есть основной поток, который прослушивает запросы и делегирует задачи другим потокам.Теперь предположим, что у нас есть 100 запросов на модель с зацикленным событием.Здесь основной поток будет свободен для прослушивания, но он также будет иметь потоки, которые будут ожидать ответа от БД или сети, точно так же, как поток на модель запроса.Как это делает модель с зацикливанием событий более масштабируемой?

1 Ответ

0 голосов
/ 27 сентября 2019

Ключевым отличием Tomcat с Servlet API <3.1 от серверов, использующих Netty с Spring WebFlux, является способ обработки ввода-вывода и запросов: блокирующий или неблокирующий. <br> Spring WebFlux одобряетВторой подход:

Часть ответа заключается в необходимости неблокирующего веб-стека для обработки параллелизма с небольшим количеством потоков и масштабирования с меньшим количеством аппаратных ресурсов.

Итак, суммируя, что с помощью Spring WebFlux API будет создано гораздо меньше потоков для столько же, сколько клиентских http-запросов, потому что поток не выделен для одного клиентского http-запроса в этой модели.
Отсутствие блокировкиПодход означает, что: независимо от времени обработки запроса, поток, который обрабатывает, не будет блокировать приложение и заставит поток долго ждать, но обработает другой запрос в течение этого времени.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...