Java ( с либами ) против Node.js, что выбрать для вебсервиса?

Добрый день,
Раньше филосовски относился к тому, как сторонники Ноды рвут глотки, что мол через год все пересядут с джавы на нее, ибо она неблокирующая, пока для меня самого не встал вопрос ребром. Суть:
Инвестор хочет замостырить веб-сервис по расчету грузоперевозок ( вбиваешь 2 города, параметры груза, жмешь кнопку, ждешь, глядишь результат), при этом в расчетах юзаются вебсервисы сторонних контор ( и потом их предложения в результатах есть)
При этом какая то редиска насикала ему в уши, что Нода асинхронна ( и картинку показал, ту самую, где запрос в ней выполняется 10 наносек)
Короче, надо ему доказать, что Java ( не голая естественно, а соотв либами) не хуже, а лучше ( + многопоточность из коробки)
Подскажите, если возьму Nginx + Apache + Spring 5 + REST + AKKA ( или Vert.X) + NIO , то на всем этом же можно сделать асинхронную обработку? Собственно Spring 5, AKKA ( или Vert.X), NIO - это и есть все неблокирующее. Это точно заменит Node.js?
( и доп вопрос: в Spring 5 случаем не встроен уже NIO ?)
Если не докажу ему, то будем делать на Ноде, недостатки очевидны, спецов мало, случись что с теми, кто напишет это, будет ппц, кто всю эту лапшу колбечную ( да знаю, там промисы уже и асинки, но тоже не сахар) будет поддерживать...
Спасибо
  • Вопрос задан
  • 3069 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
В Spring 5 есть WebFlux, который работает поверх Netty. А Netty это такой замечательный асинхронный фреймворк, про который один из инженеров Netflix'а писал, что у них один инстанс держит в среднем 20 000 одновременных соединений, пропуская через себя 40 Гбит/с трафика. На хабре ещё была статейка про написанную на Netty систему управления IoT-устройствами, которая обрабатывает 980 000 соединений с секунду, работая при этом на двух DO'шных VPS'ах за 20 и 40 баксов в месяц.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@mr_jumper
А зачем ему эта асинхронность? Я быначал с требований к системе. Ведь асинхронность можно реализовать разными способами. Например, очередью и обратным вызовом. Маштибороваться легко будет. Все должно идти от бизнес задачи. Тогда не получиться - сделали асинхронность ради асинхронности.
Ответ написан
Foror
@Foror
Графоман
Покажите ему вот это https://www.techempower.com/benchmarks/#section=da... - еще там табы пощелкайте и по моему всё сразу становится ясно.

>Nginx + Apache + Spring 5 + REST + AKKA ( или Vert.X) + NIO
Nginx + Apache выкиньте. Используйте Undertow или Jetty
Ответ написан
Комментировать
index0h
@index0h
PHP, Golang. https://github.com/index0h
Крутость асинхронности - это, к сожалению маркетинг. Нода однопоточная, асинхронность - это так, чисто разделение вашего пользовательского кода и операций ввода/вывода. Да, есть форки, но это все равно отдельные процессы без общей памяти, да в es9 есть shared memory, но это на порядки более куцее решение, чем говорят о нем.
Асинхронный код для нано сервисов может быть и не плох, исключительно за счет скорости имплементации, но на лонг ране - это домоклов меч. Банально, у вас в одном из промисов происходит исключение, как вы определите что не так? Только догадки, так как это произойдет в следующем тике, а там основная часть стектрейса уже потеряна. Я уже молчу про кровь из глаз при покрытии асинхронного кода тестами.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
11 мая 2024, в 06:09
30000 руб./за проект
11 мая 2024, в 00:19
1000 руб./за проект
10 мая 2024, в 23:51
30000 руб./за проект