Задать вопрос

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 ?)
Если не докажу ему, то будем делать на Ноде, недостатки очевидны, спецов мало, случись что с теми, кто напишет это, будет ппц, кто всю эту лапшу колбечную ( да знаю, там промисы уже и асинки, но тоже не сахар) будет поддерживать...
Спасибо
  • Вопрос задан
  • 3072 просмотра
Подписаться 11 Средний 24 комментария
Решения вопроса 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, но это на порядки более куцее решение, чем говорят о нем.
Асинхронный код для нано сервисов может быть и не плох, исключительно за счет скорости имплементации, но на лонг ране - это домоклов меч. Банально, у вас в одном из промисов происходит исключение, как вы определите что не так? Только догадки, так как это произойдет в следующем тике, а там основная часть стектрейса уже потеряна. Я уже молчу про кровь из глаз при покрытии асинхронного кода тестами.
Ответ написан
Ваш ответ на вопрос

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

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