|
Модераторы: LSD, AntonSaburov |
|
gelo86 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 388 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
Объясните, почему лучше использовать spring 5 reactive web.Допустим мой Tomcat имеет 100 thread'ов. Если одновременно приходит 100 request'ов, то 101 будет ждать, пока освободиться какой нибудь thread. Допустим у меня простой CRUD REST api. Блокировка будет на JDBC, но так как sql довольно тривиальный, то он покрутиться за несколько миллисекунд. Если я же использую reactive подход, то thread'ы будут освобождаться не при обработки запроса, а уже по середине на jdbc запросе, но при этом будет запущен другой thread для дальнейшей обработки запроса. Итого я буду иметь 100 thread'ов tomcat'а и 100 других thread'ов. Создание и management thread'ов тоже стоит ресурсов. Окупается ли дополнительная затрата времени на создание thread'ов?
|
|||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15709 Регистрация: 24.3.2004 Репутация: 5 Всего: 537 |
Ну на самом деле 100 тредов, это весьма серьезная нагрузка на сервер. Но проблема в другом, если на каждый запрос выделять отдельный тред, то по мере роста нагрузки сервер захлебнется. Пусть у тебя мощный сервер и 100 тредов он тянет, на 200 начнет затыкаться, а на 300 умрет.
1. Каждый тред потребляет память и немало. 2. Переключение контекста требует времени и не мало. Эффективно распаралелить 100 тредов уже непросто, а 300 невозможно. В реактивном подходе количество потоков фиксированно, и сервер может эффективно ими управлять. Т.е. мы получаем от сервера максимальную производительность на которую способно железо (ну понятно, что там надо еще правильно подобрать количество тредов, убедится что база не узкое место и т.д.). -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
gelo86 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 388 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
Логично бы было использовать MongoDD вместо PostgreSQL для проекта похожего на avito.ru? Как понимаю, mongo driver является async, что очень вписывается в reactive spring?
|
|||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15709 Регистрация: 24.3.2004 Репутация: 5 Всего: 537 |
Не работал с MongoDB, но синхронный вызов запросов не самая большая проблема. По крайней мере пока у тебя таких систем не много. Если вся работа только и состоит в работе с такими системами, то тогда да - нужно асинхронное АПИ. Вообще в работе с базой, IO или другим внешним ресурсом хорошо бы иметь отдельный пул обработчиков, размер которого подобрать экспериментально так чтобы получить максимальную производительность и при этом не положить базу. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |