Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 05.10.2014, 20:13
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Сообщение от petya
Я спрашиваю, какое отношение имеет та ахинея, которую ты несешь к сабжу?
Для того что бы объяснить что то нужно что бы индивидум хотя бы отдаленно понимал о чем идет речь иначе складывается ощущение что я пытаюсь объяснить основы геометрии мокаке сидящей на дереве
Ответить с цитированием
  #22 (permalink)  
Старый 05.10.2014, 20:18
Аспирант
Посмотреть профиль Найти все сообщения от petya
 
Регистрация: 02.09.2014
Сообщений: 77

MallSerg,
Я понимаю о чем ты говоришь, у взрослых дядек это называется Ъ-параллелизм vs конкурентность. Кэп нам подсказывает, что один процессор не может в реальном времени производить одновременно несколько вычислений, мы это можем имитировать, епт, дальше что?
Ответить с цитированием
  #23 (permalink)  
Старый 05.10.2014, 20:48
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Дальше идет механизм блокировок IO и прочие
Факт в том что операции ввода вывода блокируют выполнение потока т.е. само приложение останавливает свою работу пока операция ввода вывода не вернет результат при чем не важно что это за операция чтения файла с диска или запрос к базе данных или де передача управления драйверу который рисует картинку на экране
Ответить с цитированием
  #24 (permalink)  
Старый 05.10.2014, 20:54
Аспирант
Посмотреть профиль Найти все сообщения от petya
 
Регистрация: 02.09.2014
Сообщений: 77

MallSerg,
Я упомянул в своем стартовом посте об асинхронности, но асинхроность означает лишь то, что не блокируется основной луп, далее, эти запросы обрабатывается в порядке очереди. А клиенту интересно не только отправить запрос, но и получить ответ на него. Если какой-то из запросов обрабатывается, скажем, 10 секунд, все остальные будут ждать (чего, к слову, не происходит в многопоточных средах).
Ответить с цитированием
  #25 (permalink)  
Старый 05.10.2014, 21:04
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

petya, стандартный сценарий:

два пользователя пришли на сервер за данными, нода послал запрос в БД и если для второго пользователя данные пришли раньше, то он их раньше и получит.

Но верно замечено, что если пользователю нужно посчитать число P до какой то невероятной точности, то он просто залочит поток и остановит очередь, вывод: не использовать ноду где нужны сложные вычисления или разбивать их на части и делать постепенно.

Следует заметить, что некоторое подобие потоков можно сделать на основе генераторов, но все таки, если нужны сложные операции с числами или еще чего, то нода плохой вариант.

Т.е. ноду хорошо использовать как прокси: проверил права доступа, сходил в базу, отдал данные или результат шаблона с данными, а большинство типичных веб-проектов в эту схему как раз и входят.
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 05.10.2014 в 21:09.
Ответить с цитированием
  #26 (permalink)  
Старый 06.10.2014, 02:06
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Сообщение от petya
процессор не может в реальном времени производить одновременно несколько вычислений
Единственная здравая мысль не совсем корректная но в целом сойдет

Многопоточность это абстракция которая скрывает от пользователя тот факт что по сути выполняется один поток команд в который вносятся дополнительные команды(прерывания) и создаются виртуальные потоки создается впечатление что это разные независимые потоки хотя в реальности это не так называется это вытесняющей многозадачностью

Последний раз редактировалось MallSerg, 06.10.2014 в 02:13.
Ответить с цитированием
  #27 (permalink)  
Старый 06.10.2014, 02:31
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Асинхронное программирование это такой подход который позволяет избегать блокировок выполнения программы связанных с внешними вызовами т.е. придерживаясь определенных правил можно заметно обычно в разы ускорить восполнение программы.

но у этого подхода также есть множество минусов =(.
Ответить с цитированием
  #28 (permalink)  
Старый 06.10.2014, 03:11
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Сообщение от petya
Ходят слухи, что node, благодаря своей асинхронности, идеально подходит для высоконагруженных серверов. Но ведь асинхронность означает только то, что сервер без задержек принимает запросы. JS однопоточен, соответственно,отдает он их в порядке очереди, и, если в очереди дофига запросов, то последний клиент поседеет, пока дождется ответа. Это, по-сути, еще хуже, чем в многопоточной модели, там хоть, все клиенты на равных правах находятся. А тут получается, что один запрос вешает всю очередь. Тут надо бы что-то получше придумать, не?
по-сути, это означает что сервер не будет простаивать даже при 10 000 одновременных запросов не тратя свои ресурсы на создание 10 000 потоков выделение под них памяти и т.д. в нем не будет 10 000 ждущих ответа от бд или файловой системы.

Асинхронность это не панацея это просто набор правил которые призваны защитить от излишних блокировок выполнения программы так же такой подход позволяет заметно экономить ресурсы системы.

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

Программы/скрипты которые избегают блокировок очень отзывчивы и как правило не заблокированны.

Все это элементарно проверяется простыми тестами.
Ответить с цитированием
  #29 (permalink)  
Старый 06.10.2014, 06:28
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
Т.е. ноду хорошо использовать как прокси: проверил права
доступа, сходил в базу, отдал данные или результат шаблона с данными, а большинство типичных веб-проектов в эту схему как раз и входят.
..или для игрового сервера. Я вот MUD-движок на нем пишу.

petya
, тебе уже сказали, и не раз, но я на всякий случай повторю, больше для других, кто тему читать будет - нода умеет держать одновременно кучу коннектов, может ждать ответа от базы для одного и одновременно что-то делать для другого, но, разумеется, вычисления проводить в обработчике запроса не надо - это заблочит всех.

Последний раз редактировалось Erolast, 06.10.2014 в 06:40.
Ответить с цитированием
  #30 (permalink)  
Старый 07.10.2014, 11:48
Аспирант
Посмотреть профиль Найти все сообщения от petya
 
Регистрация: 02.09.2014
Сообщений: 77

Сообщение от MallSerg
здравая мысль
здравая мысль в том, что я попросил тебя объяснить, каким образом связана конкурентность с сабжем. Какая разница, имеем ли мы настоящий параллелизм, или конкурентность в контексте рассматриваемого вопроса. Ответа я так и не услышал.

Последний раз редактировалось petya, 07.10.2014 в 13:38.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Подходит ли Javascript для решения следующей задачи? alikol Оффтопик 4 24.10.2010 22:40
подходит ли javascript для создания ресурса похожего на fotki.yandex.ru wiedii Общие вопросы Javascript 1 07.03.2010 12:01
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31