170 похожих чатов

Как связано использование nio и thread per request?

22 ответов

32 просмотра

Не совсем поняла вопрос, в чем смысл использовать thread per request, если используешь nio(epoll, в частности). Кажется, весь смысл асинхронных серверов чтоб не плодить дорогие потоки.

Анастасия
Не совсем поняла вопрос, в чем смысл использовать ...

Если заблочить поток томката ещё не страшно, а если заблочить поток нетти будет очень плохо

Владислав Хакин
Если заблочить поток томката ещё не страшно, а есл...

Ну это понятно, так как он создает поток на запрос, но где тогда асинхронность?

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶
Не создаёт. Потоки берутся из пула

Ну так это не то. То, что потоки берутся из пула никак не решает проблемы, которые решает нетти, та же 10к problem.

Анастасия
Ну так это не то. То, что потоки берутся из пула н...

Какую именно проблему вы пытаетесь решить? Если вы заблокировали все рабочие потоки в томкате, то вы так же заблокируете потоки и с нетти

Арег-Coder Автор вопроса
Анастасия
Не совсем поняла вопрос, в чем смысл использовать ...

Использование nio коннектора использует все тот же пул тредов для вызова твоих контроллеров и также блочит если ты не future отдаешь

Арег Coder
Использование nio коннектора использует все тот же...

Понятно, что он использует пул, но ведь не с той же целью, что и томкат, worker group’ы и все такое, а томкат использует новый поток на каждый запрос, где нетти должен просто проходить по иветам, в теории даже в одном потоке может обрабатывать. И мой вопрос не про то, умеет ли томкат работать с future, а в том, может ли он работать без модели thread per request, а так как это сделано в нетти, допустим для того, чтобы решить 10k problem.

Анастасия
Понятно, что он использует пул, но ведь не с той ж...

Мне кажется, вы не понимаете, как оно работает и просто повторяете "умные слова"

Анастасия
Понятно, что он использует пул, но ведь не с той ж...

Мое мнение не умеет, чтобы сделать completablefuture в тот метод он заходит тредом из своего пула. Да конечно, ваша completableFuture может быть запущена в каком-нибудь event loop, но все же сам факт, что томкат не имеет собственного event loopа

Анастасия
Вот я примерно так и представляла себе.

Ваше представление абсолютно верно. Можно сделать один воркер тред и сделать так чтобы у вас тред в контролере сразу запускал фьючу. (Но любой фильтр и прочая фигня из сервлет апи, может разрушить этот уютный мирок)

Арег-Coder Автор вопроса
Aleksander Melnichnikov
Мое мнение не умеет, чтобы сделать completablefutu...

Об этом и речь, если все неблокирующе отдается в future то будет гуд

Анастасия
Вот я примерно так и представляла себе.

netty - nio (selector, channel) tomcat, jetty - io + async servlet Вот так можете запомнить, этих знаний достаточно

Aleksander Melnichnikov
Мое мнение не умеет, чтобы сделать completablefutu...

Чем acceptor'ы в томкате хуже? Точно так же принимают входящие соединения, кладут их в очередь, откуда их берут воркеры

Арег-Coder Автор вопроса
Aleksander Melnichnikov
Ваше представление абсолютно верно. Можно сделать ...

В фильтрах обычно нет блокинг кода, но если я правильно помню и там можно прикрутить асинхронно через жопное апи

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶
Чем acceptor'ы в томкате хуже? Точно так же приним...

Почитала, звучит как классический Nio, а спринг по-дефолту использует это режим? Ну и полагаю, что если в этом режиме заблокировать поток, то будет та же беда, что и в нетти

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶
Чем acceptor'ы в томкате хуже? Точно так же приним...

Да вы правы. Посмотрел с какого-то момента оно действительно стало так же. Async i/o и backpressure support.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта