|
|
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
всем привет, коллеги, у нас тут проект наклевывается на node.js. Начальство намекает, что надо бы овладеть. Я поигрался с ним немного, но что-то как-то "не то". Душа не лежит. Синтаксис мне просто караул, кругом анонимные вызовы. Как дебуговать его тоже еще не разобрался. Вроде бы MVC поддерживает, даже альтернатива jsp есть. Из баз данных тоже можно информацию читать (записывать не пытался). Утверждают, что типа основное преимущество nodejs в том, что он капец какой серьезный в отношении многозадачности / многопоточности. Вот контейнеры на tomcat "не тянут" такой нагрузки. Для решения этих задач в java world надо load balancing использовать и типа это тянет за собой "hardware" расходы. А на nodejs типа все легло на минимум железа делается. У меня опыту с ним никакого, поделитесь плиз. Так ли "хорош зверь как его малюют" ? спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 13:05 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Где-то тут ссылка на хабровскую статью про node.js проскакивала. kadet...контейнеры на tomcat "не тянут" такой нагрузки...этих задач в java world надо load balancing использовать и типа это тянет за собой "hardware" расходы... kadet...А на nodejs типа все легло на минимум железа делается... Ерунда это все. В современном мире есть только ДВЕ испытанные технологии: 1. Oracle - там есть скрытый параметр (поэтому о нем большинство не знает, а специалисты зарабатывают кучу бабла) fast=true. Пишеш говно систему, а когда заказчик жалуется, что все медленно, берешь у него кучу бабла и просто ставишь параметр fast=true 2. Сыр Хохланд. Как известно из рекламы, если съесть много этого сыра то и инопланетяне прилетают и никакое серверное железо покупать не нужно. а вообще, "все это фантастика" ( C ) реклама сыра Хохланд p.s. Если сыр Хохланд не помогает, то существуют испытанные временем препараты ЛСД и MDMA. Правда использование их в продакшене и при общении с заказчиком, это уже нарушение УК РФ. p.p.s. Java это худо бедно но язык рассчитанный на компилятор (пусть и в байт код) плюс с системой оптимизирующего компилятора в бинарный код (jit), Java Script скриптовый язык, в куче мест ( JSON, eval ) требующий интерпретации. Утверждение, что первое "тормоз", а второе "летает"....ну это нужно было в школе все уроки информатики пропускать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 13:20 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
На JavaScript НЕ программирую. Данная статья мне понравилась (хотя конечно, понятно, что подходить нужно критически и всю критику делить на 10) https://habrahabr.ru/post/129640/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 13:23 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
kadet, А какая СУБД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 13:25 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, nodejs - сервер написанный на с/с++, но использующий синтаксис (философию) javascript. В первом приближении (на простых "helo world") работает действительно быстро. Но я не могу его сравнить с более менее серьезным использованием. С моего имхо, например тот же MarcLogic "откатал" олимпиаду в лондоне на ура. Так на него и нагрузка была реально серьезная и load balancing он имеет встроеный, а тут какой-то node.js какие-то права "качает". Может быть для решения узко специализированных задач он и подойдет, но как-то для серьезного применения (имхо) как-то недозрел. я вот поэтому и хотел выяснить "who is who" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 13:31 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Valery Shiskinkadet, А какая СУБД? я мускл подключал. вот пример https://codeforgeek.com/2015/01/nodejs-mysql-tutorial/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 13:34 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
kadet...но как-то для серьезного применения (имхо) как-то недозрел... Возникает вопрос, что есть "серьезные применения" и какие критерии. AFAIK (насколько я знаю), большинство "серьезных применений" до сих пор сделаны на Cobol'е ))) и поднятые тут Вами вопросы, вообще никакого отношения к "серьезности" не имеют Мое IMHO: 1. Скриптовые языки, которые вообще никакой типизации на этапе компиляции не имею. Лично для меня - пошло нафиг. Я и от Java мучаюсь, что типизации хотя бы на уровне C/Pascal'а нет. 2. Скриптовые языки, где большая часть ошибок вылазит в момент исполнения - пошли нафиг. Я и от Java шизею, когда при запуске .JAR в СКОМПИЛИРОВАННОМ коде получаю ошибку "Compile error". Если compile error, нафига ты вообще .class файл генерируешь? 3. Скриптовые языки, где вся линковка в момент выполнения - пошли нафиг. Я и от Java шизею, когда легким движением руки (видел в одном "серьезном применении") можно слинковать .jar с ним же самим же (но пред. версии). Очень интересные иногда ошибки/дефекты на этапе компиляции случаются ))) /+ см. пункт 2/ и так далее.... Если нужны хвалебные отзывы... тогда наверное в форум JavaScript / HTML, там наверное смогут привести 100500 причин, почему нужен JavaScript, а все остальные языки г....но. В общем, при выборе технологий, хорошо бы расписать какие плюсы для команды/результата. На мой взгляд, программировать нужно на том что знаешь/умеешь/любишь или хочешь изучить (любишь). Все остальное - мазохизм. Т.ч. Ваш вопрос "проект наклевывается на node.js. Начальство намекает, что надо бы овладеть" это не столько для технического форума, сколько для флуда в подфоруме "Работа" и сайта http://natribu.org/ ))). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 13:46 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
kadetколлеги, у нас тут проект наклевывается на node.js. Начальство намекает, что надо бы овладеть. Я поигрался с ним немного, но что-то как-то "не то". Душа не лежит. Синтаксис мне просто караул, кругом анонимные вызовы. Как дебуговать его тоже еще не разобрался. Вроде бы MVC поддерживает, даже альтернатива jsp есть. Из баз данных тоже можно информацию читать (записывать не пытался). Утверждают, что типа основное преимущество nodejs в том, что он капец какой серьезный в отношении многозадачности / многопоточности. Вот контейнеры на tomcat "не тянут" такой нагрузки. Для решения этих задач в java world надо load balancing использовать и типа это тянет за собой "hardware" расходы. А на nodejs типа все легло на минимум железа делается. У меня опыту с ним никакого, поделитесь плиз. Так ли "хорош зверь как его малюют" ? Вот наиболее толковые мысли по вашему вопросу. https://rclayton.silvrback.com/speaking-intelligently-about-java-vs-node-performance - Tomcat не является адекватным вариантом для сравнения. Он, как минимум, обременен JEE требованиями. Логичнее сравнивать с Jetty без сервлетов, например. - Если вам и правда важна производительность, то вы в первую очередь будете думать об архитектуре и масштабируемости, а не о том что один сервер выдаст несчастные +10% к производительности по сравнению с другим. - "hardware расходы" это просто смешно. Несколько месяцев работы программиста это топовый высокопроизводительный сервер. Бюджет на разработку, поддержку и прочее, обычно, превышает бюджет на железо не только в разы, но и на порядки. Разве что если вашей системе нужен новый дата центр? - БольшАя часть вашего Java опыта и наработок идёт лесом. Вы будете наступать на стандартные грабли новой для вас платформы и героически их решать. Я бы выбрал Node.js только потому что это что-то новое и ещё не изученное. Нубы выбирают Node.js потому что он на JS, который они уже знают, а у Java такой высокий порог вхождения. Недальновидный бизнес выбирает Node.js потому что начитались этих глупостей про производительность, а опыта планирования процесса производства ПО не имеют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 13:48 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Ну и вообще в поиск. Все знаю, что после создания на данном форуме СУБД Стебелек, все остальные технологии нервно курят в стороне. Т.к. давно доказано, что СУБД Стебелек от десяти до сотни и более раз быстрее ЛЮБОЙ другой системы, в независимости какая она. Хоть СУБД Oracle, хоть node.js. Быстрее Стебелька нет ничего! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 13:48 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, ну есть еще один не маловажный критерий выбора языка: системы / библиотеки которые нужно использовать "заточены" под данный язык. Например AFAIK сейчас все проекты Mozilla на JavaScript, т.е. делать что-то для Mozilla / под Mozilla на других технологиях - технически можно, практически будет постоянная головная боль. Если нужно интегрироваться / поддерживать какую нибудь систему уже реализованную на node.js - вполне возможно, что переход на "родную технологию" единственный оправданный способ. IMHO & AFAIK 1) Насколько я понимаю, при всех плюсах/минусах и node.js и java __работающие__ технологии. Т.е. сделать работающий проект - и на той и на другой вполне можно. Главное, что бы танцором, то что обычно им мешает - не мешало ))) 2) Успешность проекта от выбора языка практически не зависит 3) "Производительность" от выбора языка практически не зависит. Ну или зависит не так уж, что бы очень сильно. Всегда можно "критические" части реализовать на Java / C / Assembler / в шестнадцатеричных кодах. Выбрать нужное ))) Было бы желание и потребность, оптимизировать всегда можно. Вопрос просто денег. 4) Что мешает плохим танцорам, всем известно ))) От выбора языка программирования, физиологические особенности строения тела не изменяться. Если мешает на java, то и на java script мешать будет ))) И наоборот. Сменой языка программирования это не лечится, только хирургическим способом (что дорого и возможно противозаконно) или фармакологический (что дешевле, но так же противозаконно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 14:01 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
kadet, Все зависит от задачи. Посмотрите, какие типы задач реализованы с помощью node. Мне не приходилось видеть, чтобы кто-то применял node при решении задач, где требуется серьезная работа с транзакциями и особенно с распределенными транзакциями. Да и с СУБД в node не все однозначно. MongoDB - это Вы будете встечать во всех учебниках и статьях. И это потому, что там есть API для выполнения "не блокирующих" операций. В MySql тоже вроде добавили такое API. Кстати, "не блокирующее" API в jee 7 сервлетах также реализовано. Года 3 назад мне пришлось работать с проектом на node. Больше всего убивало обилие библиотек и технологий и каждая со своим DSL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 14:16 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Я-бы взялся использовать Node.js поскольку это возможность взглянуть на разработку веб-сервисов и микро-сервисов с новой стороны без тяжелых фраймвороков. Привлекает также очень быстрый старт. По сути создание веб-слушателя занимает несколько строчек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 14:19 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
mayton, Это так. Но затем, по мере роста проекта вам понадобится require, backbone, knockout и еще, еще и еще. И программка в 1000 строк на java Вам покажется глотком свежего воздуха, по сравнению со 100 строками javascript, который без тщательно проработанных текстов есть набор огромного числа ошибок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 14:30 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
kadetnode.js странный вопрос на ветке по серверному ЯП. Это ведь альтернатива Java. Отсюда и вопрос тут странный imho ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 14:43 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
maytonЯ-бы взялся использовать Node.js поскольку это возможность взглянуть на разработку веб-сервисов и микро-сервисов с новой стороны без тяжелых фраймвороков. Привлекает также очень быстрый старт. По сути создание веб-слушателя занимает несколько строчек. Не очень понятно, что мешает такое же сделать на Java. Если в проекте нужно (а оно нужно?) массово делать микро-веб-сервисы, ну напиши свой интерфейс под такие сервисы и несколько системных классов, которые их будут в метаописания TomCat'а добавлять. И всех делов. На мой ламерский взгляд. Т.к., что значит "микро-сервисы" и нафига они нужны - я не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 14:45 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Valery Shiskinmayton, Это так. Но затем, по мере роста проекта вам понадобится require, backbone, knockout и еще, еще и еще. И программка в 1000 строк на java Вам покажется глотком свежего воздуха, по сравнению со 100 строками javascript, который без тщательно проработанных текстов есть набор огромного числа ошибок вот это вот высказывание - то что мне спинной мозг и подсказывает. Да, возможно nodejs позволяет что-то делать быстрее, но ВСЕ проекты имют тенденцию к усложнению. Это может в итоге привести к такой ж...пе, что легче работу поменять, чем с это дерьмо разгребать. Хуже всего, что заказчик не понимает этого и удивляется что со временем обслуживание проекта становится все дороже и дороже. @Blazkowicz авторВот наиболее толковые мысли по вашему вопросу. https://rclayton.silvrback.com/speaking-intelligently-about-java-vs-node-performance спасибо, действительно толковые мысли . Мною понятая разница между технологиями только в том 1. на какой технологии я специализируюсь 2. культура программирования (clean code) 3. смотри №1 спасибо Конечно, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 14:51 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Petro123kadetnode.js странный вопрос на ветке по серверному ЯП. Это ведь альтернатива Java. Отсюда и вопрос тут странный imho согласен с вами. но я из этого (java) мира и поэтому интересуюсь в первую очередь у "единоверцев" мне очень не хочется влазить в nodejs, просто потому, что одного языка знать недостаточно. Нужна техника, парадигма построения приложения. Она все-таки в определенной степени зависит от языка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 14:57 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
kadetnodejs в том, что он капец какой серьезный в отношении многозадачности / многопоточности. Вот контейнеры на tomcat "не тянут" такой нагрузки. Для решения этих задач в java world надо load balancing использовать и типа это тянет за собой "hardware" расходы. А на nodejs типа все легло на минимум железа делается. Нету многозадачности/многопоточности. Node.js - сервер приложений, написанных на JavaScript, а JavaScript не поддерживает многопоточность. Балансировка нагрузки не имеет отношения к Java или JavaScript, но она не поддерживается в Tomcat-е, поэтому при большом числе одновременных пользователей к нему добавляют внешний балансировщик нагрузки. Вряд ли Node.js снизит требования к оборудованию, т.к. производительность JavaScript ниже. Придётся изучать JavaScript и выбрать и изучить дополнительные библиотеки на JavaScript, которых развелось много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 15:11 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
kadet, Если Ваше начальство желает экзотики, то попробуйте убедить его использовать vert.x. И Вам будет интересно и в проблемы node не вляпаетесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 15:12 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Partisan M...Балансировка нагрузки не имеет отношения к Java или JavaScript, но она не поддерживается в Tomcat-е, поэтому при большом числе одновременных пользователей к нему добавляют внешний балансировщик нагрузки.... В мое время, было принято Tomcat всегда ставить за Apache. Т.ч. я так же как привык, сейчас и поступил. Вся цена в двух строчках: 1. sudo yum install httpd 2. + одна строчка в конфиге Tomcat'а Мне не кажется, что это вообще является проблемой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 15:19 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevНе очень понятно, что мешает такое же сделать на Java. Если в проекте нужно (а оно нужно?) массово делать микро-веб-сервисы, ну напиши свой интерфейс под такие сервисы и несколько системных классов, которые их будут в метаописания TomCat'а добавлять. И всех делов. В предлагаемом тобой подходе в случае возникновения OOM в Tomcat у нас падает процесс Java и в том числе все сервисы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 15:32 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevВ мое время, было принято Tomcat всегда ставить за Apache. Т.ч. я так же как привык, сейчас и поступил. Вся цена в двух строчках: 1. sudo yum install httpd 2. + одна строчка в конфиге Tomcat'а Щас вроде Apache заменяют на nginx. Для статичного контента и реверс-прокси. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 15:34 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
maytonВ предлагаемом тобой подходе в случае возникновения OOM в Tomcat у нас падает процесс Java и в том числе все сервисы. 1. Интересно, а если на сервере кто нибудь Reset нажмет, JavaScript спасет? 2. JavaScript чудесным образом лечит от говно-кода и отсутствия OOM ? 3. С проблемой единого heap'а в Java - полностью согласен. Один говно класс спокойно может положить всю JVM. Но так же, один говно-процесс, с таким же успехом может и весь Linux положить. При наличии OOM и ухода в глубокий своп, лично я на Amazon Linux даже законнекться через SSH не могу. Не зная JavaScript, 100% гарантирую, что я "легко" могу такой говно скрипт написать, что весь Linux будет колом ставить ))) Лень искать ссылку, но в старом фирме хорошо было сказано: "что один человек сделал, другой завсегда сломать сумеет" ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 15:40 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev3. С проблемой единого heap'а в Java - полностью согласен. Один говно класс спокойно может положить всю JVM. Но так же, один говно-процесс, с таким же успехом может и весь Linux положить. При наличии OOM и ухода в глубокий своп, лично я на Amazon Linux даже законнекться через SSH не могу. Точно так же одна говнофункция в нужном месте будет тормозить весь Node.js по той причине что запросы разгребаются в один поток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 15:47 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
mayton, А, если падает node? Легко написать код для node, который подвесит его. И надо постараться сделать тоже для Tomcat. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 15:48 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev1. Интересно, а если на сервере кто нибудь Reset нажмет, JavaScript спасет? Я не понимаю к чему такой сарказм? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 15:54 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
К тому, что OOM Java вырубит напрочь, как и Linux. Разумеется, никто с этим спорить не будет. AFAIK изолироваться по ошибкам памяти можно только: 1. Выносить вычисления из потоков в процессы. Тогда падает процесс, остальные продолжают работать. Но тогда, обычно, проигрываем в производительности. Но проблема не исчезает, а просто уходит на след. уровень операционной системы. Т.к. подвесить и весь Linux тоже можно. Может ли системный администратор грамотно настроить Linux, что бы процессы гарантированно не вешали ядро - думаю что да. 2. Какие-то средства на уровне языка / выполняющей среды. Позволяющие контролировать потоки по потреблению памяти. В Java к огромному сожалению, я такого не знаю. Почему не сделано - я не знаю, т.к. лично мне, этого явно не хватает. Более интересный вопрос, что может предложить JavaScript, что бы решить эту проблему. А вот эта тема не раскрыта. Если в JavaScript'е есть возможность отдельным функциям вешать лимит по потребляемой памяти - тогда да, но подозреваю, там такого нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 16:06 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
А вот действительно, почему бы в Java не добавить простой механизм: Для каждого потока считаем кол-во выделенной памяти в eden При minor GC, при очистки памяти, уменьшаем этот счетчик При переносе в Tenured, где-то храним Id исходного потока Должно достаточно легко делаться, т.к. и так в enen своя отдельная область для потоков нарезана. Т.е. подсчитываем память выделенную потоком в Old Gen Почему бы, не давать возможность задавать лимит на поток, для выделения в Old Gen? Если поток (+порожденные им потоки) лимит превысил - тупо прибиваем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 16:59 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev Для каждого потока считаем кол-во выделенной памяти в eden Ну оно сейчас так и сделано, вы правильно упомянули про TLAB Leonid KudryavtsevПри minor GC, при очистки памяти, уменьшаем этот счетчик Не понял. Зачем? В чем смысл счетчика? Дело в том, что потоку может быть нужно много памяти для инициализации, а потом все это грохается и дальше в steady режиме он потребляет мало. Да и мало ли других паттернов использования памяти. Поток может жрать в одну секунду гиг, а вторую - мег, что из этого следует? Leonid KudryavtsevПри переносе в Tenured, где-то храним Id исходного потока Зачем? Тут есть много нюансов, во-первых, в этом выделенном спейсе гарантировано будет мусор, когда вызывать major GC? Пусть хип пустой, но у этого потока почти все забито - на паркуа делать STW паузу в этом случае? Во-вторых, ну мало ли потоку нужен один большой объект а его область в тенюред фрагментирована и забита мелочью, по факту памяти хватает вроде бы, но в вашем кейсе потоку будет отказано? как-то не айс короче.. Leonid KudryavtsevДолжно достаточно легко делаться, т.к. и так в enen своя отдельная область для потоков нарезана. Т.е. подсчитываем память выделенную потоком в Old Gen Да нету никакого в этом смысла имхо, или я не уловил мысль. Leonid KudryavtsevПочему бы, не давать возможность задавать лимит на поток, для выделения в Old Gen? Если поток (+порожденные им потоки) лимит превысил - тупо прибиваем. Ну почему описано выше - много нюансов + неочевидный профит. Если же говорить о решении проблемы - то я ее не особо вижу. Если код ваш - то вы как девелопер должны нести отвественность за каждый поток, и в случае чего должны тюнить и фиксить. Если у вас какая-то инфрастурктура которая может принимать и исполнять какой-то левый код - то лучше всего запускать в отдельной JVM или виртуалке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 17:38 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevА вот действительно, почему бы в Java не добавить простой механизм: Для каждого потока считаем кол-во выделенной памяти в eden При minor GC, при очистки памяти, уменьшаем этот счетчик При переносе в Tenured, где-то храним Id исходного потока Должно достаточно легко делаться, т.к. и так в enen своя отдельная область для потоков нарезана. Т.е. подсчитываем память выделенную потоком в Old Gen Почему бы, не давать возможность задавать лимит на поток, для выделения в Old Gen? Если поток (+порожденные им потоки) лимит превысил - тупо прибиваем. Я думаю что создатели думали о таких механизмах и ... ничего не сделали потому что в самой постановке кроется масса противоречий. В Java в силу модели памяти нельзя точно сказать что объект а что есть ссылка на объект. Поэтому сама по себе процедура подсчета любой памяти выходит на этот вопрос. Память логическая и память физическая частично пересекаются и умножают сложность самого вопроса подсчета. Кстати само по себе прибивание потока не решает принципиально освобождение всех объектов. Скопированные - по прежнему остаются во владении других потоков. Чаще всего OOM возникает в силу ошибок в приложении. И эти ошибки надо исправлять а не отстреливать потоки. Такая архитектура будет слишком ненадежной и неочевидной. Мрут потоки. Почему - неясно. У меня были случаи OOM вследствие ошибок в чужих библиотеках и в юзкейсах стандартных. Например пытался прогрузить DOMDocument из XML ответа размером в несколько ГИГ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 17:52 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Это не средство программиста, а средство АДМИНИСТРАТОРА. Один сервер (WebLogic), одно JVM, много приложений, десяток программистов Один программист сделал ошибку/опечатку, банальный вечный цикл. Потребление памяти ушло в бесконечность. Одна опечатка - а погиб весь сервер. maytonЧаще всего OOM возникает в силу ошибок в приложении. И эти ошибки надо исправлять а не отстреливать потоки. Такая архитектура будет слишком ненадежной и неочевидной. Мрут потоки. Почему - неясно. IMHO I.1. СНАЧАЛА надо отстреливать потоки. Что бы ошибка НА РАСПРОСТРАНЯЛАСЬ дальше на весь сервер и не ломала то, что работает без ошибок. I.2. Потом исправлять ошибки. II. Как раз будет очевидно. Пришел HTTP запрос такой-то, был сброшен, т.к. превысил лимит по памяти - где ошибка, совершенно понятно, легко тестировать. Сейчас все хуже, сервер стоит колом но все вроде работает, где ошибка - фиг поймешь. При этом, отстрел потоков по timeout'у существует, если поток долго считает 2+2 - его сервер пристрелит. Просто дополнительно нужен отстрел по памяти. Проблема в App Server'ах. Разные приложения от разных программистов выполняются в одном адресном пространстве ((( Вроде даже существует изоляция кода друг от друга на уровне Class Loader'а, но для изоляции друг от друга на уровне Heap'а и OOM - нет ничего. Проблема не в том, что ошибочный код падает. Проблема в том, что вместе с ним может упасть и другой, полностью работоспособный код. P.S. Человек разрабатывал программы для электростанций. В поставки идет шкаф, где у каждого отдела СВОЙ физический компьютер (или даже несколько). И пофиг на то, что ресурсы используются на 1 %. Главное, что если будет сбой - то нет возможности перевалить ответственность на другого/другой отдел. Т.к. ошибки могут привести и к уголовно наказуемым последствиям. Существующая реализация приложений в app server'ах - полностью ублюдочный. В основном, за счет отсутствия хоть какой-то изоляции и классов и приложений по памяти и OOM. IMHO Но боюсь, в node.js ничуть не лучше. Если там есть какие-то крутые решения, буду рад о таком услышать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 18:11 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
забыл никДа нету никакого в этом смысла имхо, или я не уловил мысль. Попытка хоть какое-то осмысленное "лимита на память" для Web. К сожалению "лимит на память" вряд ли получится, но "лимит на выделение памяти" сделать можно. Как программист / администратор, я могу примерно сказать, какое потребление (в том числе и выделение) памяти у моего кода в "штатном" режиме. Если код переходит в "нештатный режим" (например попали в вечный цикл) - грохаем. Понятно, что для рабочего варианта нужно дорабатывать напильником. Все потоки разные, грести всех под одну гребенку - не есть айс, на Web-сервере - запросы разные, а выполняются в одном потоке (из пула), тоже грести всех под одну гребенку - не есть айс. Но хоть как-то задавать лимиты по памяти, жизненно необходимо. IMHO забыл никЕсли код ваш - то вы как девелопер должны нести отвественность за каждый поток, и в случае чего должны тюнить и фиксить. Дивелопер и "нести ответственность" ))) IMHO понятия не совместимые ))) + В фирме могут быть 100-ни дивелоперов забыл никлучше всего запускать в отдельной JVM или виртуалке. Не спорю. Сам сейчас так и делаю. Проект побит по модулям, каждый модуль на своей JVM, общаются через RMI. Перезапуск отдельного модуля на остальные не сказывается (подхватывается на лету). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 18:42 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
kadetинтересуюсь в первую очередь у "единоверцев" ))) LOL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 18:42 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Ввиду неимения представления о Node.is некоторые тут замусорили обсуждение не имеющими отношения к теме и несущественными рассуждениями об OOM Но догадался, откуда взялось представление о преимуществе Node.js в многопоточности-многозадачночти. Ввиду однопоточности Javascript для Node.js балансировка нагрузки важнее. Например, дополнительный модуль Cluster для неё создаёт подпроцессы, а они могут выполняться одновременно на многоядерном процессоре. То есть, это наверно не преимущество, а особенность. Дальнейшие сведения искать в Google по словам например full stack JavaScript, есть даже несколько книг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 21:16 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Насколько я понял, читая книжку по Node.js - главное преимущество - компактность кода при написании микросервисов. К слову если сравнивать с Jetty то примерно 20 строк NodeJS соответствуют где-то 100 строкам кода на Jetty с 1 сервлетом если брать в качестве задачи Hello-World service или Time-service. Дальше судить не берусь т.к. продуктивных задач еще не делал и буду рад каментам от тех кто уже имеет хоть какой-то боевой код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 22:42 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
kadetвсем привет, коллеги, у нас тут проект наклевывается на node.js. Начальство намекает, что надо бы овладеть. Я поигрался с ним немного, но что-то как-то "не то". Душа не лежит. Синтаксис мне просто караул, кругом анонимные вызовы. Как дебуговать его тоже еще не разобрался. Вроде бы MVC поддерживает, даже альтернатива jsp есть. Из баз данных тоже можно информацию читать (записывать не пытался). Утверждают, что типа основное преимущество nodejs в том, что он капец какой серьезный в отношении многозадачности / многопоточности. Вот контейнеры на tomcat "не тянут" такой нагрузки. Для решения этих задач в java world надо load balancing использовать и типа это тянет за собой "hardware" расходы. А на nodejs типа все легло на минимум железа делается. У меня опыту с ним никакого, поделитесь плиз. Так ли "хорош зверь как его малюют" ? спасибо https://www.techempower.com/benchmarks/ java не тормозит, ее нужно просто уметь готовить, а не использовать томкат и спринг мвц Если кому-то нужен перформанс от http сервера на джав, то обычно не используют tomcat/jetty/etc и всякие spring mvс (которые генерит кучу мусора на каждый реквест), а просто берут netty, который не отяжелен десятилетием легаси кода(хотя они там что-то переписывают потихрньку) и попытками добавить новых фич из спеки Servlet API. Если конечно вам лейтенси в 500 микросекунд в 99% и на 40к запросов в секунду не устраивает, то да - джава вам не поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 22:53 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
mayton, Берем vert.x и получаем те же 20 строк кода на Groovy, JavaScript и чуть больше на Java. Если знаете Java, то выбирайте vert.x. Если только JavaScript, то выбора нет и только node. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 22:55 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
schwa, Хотелось бы взглянуть на тех, кто для более или менее серьезного web приложения берет netty, а затем сообщает боссу, сколько времени понадобится на разработку и что будет, когда вы уволитесь с работы и придется кому-то это приложение поддерживать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 23:02 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
mayton, Прошу прощения, ответ предназначался для schw ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 23:03 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Valery Shiskinschwa, Хотелось бы взглянуть на тех, кто для более или менее серьезного web приложения берет netty, а затем сообщает боссу, сколько времени понадобится на разработку и что будет, когда вы уволитесь с работы и придется кому-то это приложение поддерживать. Смотря что понимать под серьезным - если большое (с кучей эндпоинтов ну или CRUD), то да. Смысла нет т.к. все равно все упрется в бд. Да и требования у таких приложений не очень строгие обычно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 23:12 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
kadet, Когда мне начинают расхваливать серверный жаваскрипт, у меня единственная реакция: WAT??! https://www.destroyallsoftware.com/talks/wat ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2016, 11:45 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Пока я вижу только один смысл. Фронт-кодеры внезапно получат возможность писать и деплоить серверный код. По части простоты и проиводительности. В книжке приводят синтетические Node.js тесты которые на некоторых типах ответов обгоняют nginx. Я думаю что это связано с хорошей оптимизацией взаимодействия с сетевым стеком. Что там будет если подключить в качестве источника ту-же MongoDb (которую много раз приводят в примерах) ХЗ. Надо смотреть реальные данные. Опять-же. Это только первое впечатление. Я не видил продуктивного кода на Node.js. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2016, 12:38 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
kadetУ меня опыту с ним никакого, поделитесь плиз. Так ли "хорош зверь как его малюют" ? спасибо Способ разрабатывать бэкенд на JS. Надо это- бери. Не надо- бери jetty и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2016, 15:49 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
У ноды своя ниша. И не мало крупных компаний ее используют. На сколько я знаю нода отлично чебя проявляет на задачах выдачи контента, то есть минимум расчетов достал с бд выдал. Мне лично JS нравится, как по мне он простой и лаконичный, большие монолитные приложения на нем писать противопоказано, только микросервисы, бд лучше использовать nosql. в js есть все для динамических entity. Многопоточно тоже есть. И - это пожалуй лучшая фулстек платформа, на которой с одинаковым успехом можно писать фронт, бэк и мобайл. Если говорить про ваш конкретный случай, то тут на первое место нужно поставить ваш интерес, если не интересно, то и на самой перспективной платформе работать не стоит, легче работу сменить, если уже загоняют в угол. Вот тут можно глянуть кто из крупных ИТ игроков использует nodejs https://strongloop.com/node-js/why-node/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 00:22 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Mad_HeadМне лично JS нравится\ То, о чем я раньше и говорил. Java & Java Script - это два совершенно разных языка. Технически, вряд ли кто будет спорить, что и то и то решение сейчас рабочее . Масса проектов и на одно и на другом Т.ч. самый важный критерий выбора - кому что нравится. Вот лично я, на скриптовых языках без типизации программировать отказываюсь. Лучше уж пойду бомжевать и попрошайничать, чем буду унижать себя программированием на этом отстое ))). А кто -то наоборот ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 00:56 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, А я не привязываюсь к типизации, я считаю, что статическая типизация дает весомые плюсы пока рука не набита читать код с динамической типизацией, я существенно лучше знаю java чем JS. Что выбрать зависит от задачи. Математические вычисления и не тривиальные расчеты куда удобнее делать на пайтоне чем нам джаве, в пайтоне код выглядит как математическая формула и -- это все благодоря удачному сочетанию динамической типизации и элеменотов функциональщины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 01:16 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
А примерно о том же, _работающих_ языков как грязи. Кому что выбрать - в 90% вопрос личного предпочтения. Будет ли проект успешный и будет ли код высокопроизводительным - на 90% зависит от прямых рук исполнителя и лишь на единицы процентов - от выбранного средства разработки. IMHO & AFAIK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 01:27 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
С точки зрения разработчика - действительно, пиши на чем удобнее. Но, это пока проект новый. Как только появляется саппорт и доработки, вот тогда становится понятно, правильно ли выбрана технология. В языках со статикой сложнее поломать большой многолетний проект. Неудивительно, что в энтерпрайзе используют махровые javaEE и c# (я про бекенд, конечно). Бизнесу плевать на моральное удовлетворение разработчика - ему надо, чтобы толпа новоприбывших джуниоров могла быстро поправить баги в продуктивном коде. Как это ни печально... Динамика хороша во write-only коде, если нужно быстро обсчитать что-то, или прототип накидать. Тут ей равных нет. Имхо, конечно, но много раз подтвержденное опытом. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 09:16 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevВот лично я, на скриптовых языках без типизации программировать отказываюсь. я вот тоже раньше так относился к JS, а потом тихой сапой пришлось осваивать для нового проекта. Так что фигня "глаза боятся, а руки делают" (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 10:09 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevПри переносе в Tenured, где-то храним Id исходного потока А зачем? Поток это не процесс. Его памятью могут пользоваться другие потоки. :) Собственно, а какой gc-root держит память jvm и так знает. Прибей его и память освободится, однако некоторые защищаются (гоняют вечный цикл с перехватчиком всех ошибок, включая предложение прибить тред). :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 10:42 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
am_sasaя вот тоже раньше так относился к JS, а потом тихой сапой пришлось осваивать для нового проекта. Так что фигня "глаза боятся, а руки делают" (с) Вопрос не в том что не хочется. А в том что написав проекты как на Java, так и на JS, что ты выберешь для следующего проекта и почему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 10:44 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, В принципе, да. Я бы делал на java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 10:50 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
А кто-нибудь знает на оперсорцые проекты на Node.js ? Я имею в виде не фреймворки а именно законченные решения которые имеют веб-интерфейс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 10:57 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevНу и вообще в поиск. Все знаю, что после создания на данном форуме СУБД Стебелек, все остальные технологии нервно курят в стороне. Т.к. давно доказано, что СУБД Стебелек от десяти до сотни и более раз быстрее ЛЮБОЙ другой системы, в независимости какая она. Хоть СУБД Oracle, хоть node.js. Быстрее Стебелька нет ничего! (с)КЭП ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 19:20 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
Ну наконец-то! Едрен батон а я уже думал ты совсем ушел в MongoDB! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 19:27 |
|
||
|
node.js vs java technologies
|
|||
|---|---|---|---|
|
#18+
По теме: Основное преимущество NodeJS - это один и тот же язык для клиента и для сервера. Это очень полезно при наличии большого количества клиентского яваскрипта, т.к. позволяет переиспользовать логику валидации, бизнес-логику и т.п. А основной недостаток - то, что это не JVM со всеми вытекающими в виде менее развитого инструментария и библиотек, что больно ударит по проекту, когда он начнет расти. Про перфоманс. Если речь не идет о 100 запрсах в секунду, то выбор HTTP сервера не так уж и важен, найдется немало других желающих скушать CPU и добавить задержки. Если вам не нужны суровые ентерпрайз технологии типа JNDI, то бросайте нафиг этот томкат и перебирайтесь на embedded Jetty. Он быстрее работает и, что тоже немаловажно, быстро стартует (за доли секунды). Если вам нужен реальный хайлоад (100+ запросов в секунду), то следует брать netty + netty-http. Это самое высокопроизводительное (и сложное в разработке) решение на JVM в настоящий момент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 22:00 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2123933]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
112ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 433ms |

| 0 / 0 |
