Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> spring 5 reactive 
:(
    Опции темы
gelo86
Дата 23.7.2017, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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'ов?
PM MAIL   Вверх
LSD
Дата 24.7.2017, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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.
PM MAIL WWW   Вверх
gelo86
Дата 21.8.2017, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 388
Регистрация: 26.10.2007

Репутация: нет
Всего: нет



Логично бы было использовать MongoDD вместо PostgreSQL для проекта похожего на  avito.ru? Как понимаю, mongo driver является async, что очень вписывается в reactive spring?
PM MAIL   Вверх
LSD
Дата 23.8.2017, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15709
Регистрация: 24.3.2004

Репутация: 5
Всего: 537



Цитата(gelo86 @  21.8.2017,  15:20 Найти цитируемый пост)
Логично бы было использовать MongoDD вместо PostgreSQL для проекта похожего на  avito.ru? Как понимаю, mongo driver является async, что очень вписывается в reactive spring?

Не работал с 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.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1021 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.