Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 25.02.2010, 23:53
Интересующийся
Отправить личное сообщение для Hivext Technologies Посмотреть профиль Найти все сообщения от Hivext Technologies
 
Регистрация: 20.12.2009
Сообщений: 15

Kolyaj,

Если это будет целесообразно, то можно предоставить возможность асинхронного исполнения скриптов на nodeJS. Всегда хорошо когда есть выбор.
Ответить с цитированием
  #42 (permalink)  
Старый 26.02.2010, 08:57
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Ну а смысл опять же, если все ваши библиотеки синхронные?
Ответить с цитированием
  #43 (permalink)  
Старый 26.02.2010, 10:59
Интересующийся
Отправить личное сообщение для Hivext Technologies Посмотреть профиль Найти все сообщения от Hivext Technologies
 
Регистрация: 20.12.2009
Сообщений: 15

Kolyaj,

Как раз библиотеки (веб сервисы) у нас существуют отдельно от всех языков программирования. Потому что одна из целей которая ставилась перед архитектурой - не зависимость веб сервиса от какого то языка программирования (ЯП). В итоге вышло следующее, любой модуль (скрипт, приложение) создаваемый разработчиком в рамках платформы становится доступен из поддерживаемых ЯП, причем модуль можно будет исполнять как синхронно так и асинхронно.

Мы делали для эксперимента асинхронность в java. У нас создавался отдельный поток на обработку веб сервиса и обработку callback функции. При этом можно обращаться к глобальным переменным определенным вне кода исполняемого потока. Поток отрабатывает параллельно при наличии двух и более процессоров.

Вот как это было сделано в java

uploader.Upload(appid, uid, file, new Callback() {
     @Override
      public void fire(Response response) {
            if (response.getResult() == Response.OK) {}
      }
});


Или можно сделать синхронный вызов

Response response = uploader.Upload(appid, uid, file);
if (response.getResult() == Response.OK) {}

Последний раз редактировалось Hivext Technologies, 26.02.2010 в 11:11.
Ответить с цитированием
  #44 (permalink)  
Старый 26.02.2010, 11:05
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Hivext Technologies,
не разговаривайте со мной Я не ваша целевая аудитория, поэтому только придираюсь.
Ответить с цитированием
  #45 (permalink)  
Старый 26.02.2010, 11:28
Интересующийся
Отправить личное сообщение для Hivext Technologies Посмотреть профиль Найти все сообщения от Hivext Technologies
 
Регистрация: 20.12.2009
Сообщений: 15

Да, я уже понял что нужно все переводить на другой язык...
Ответить с цитированием
  #46 (permalink)  
Старый 25.04.2010, 23:26
Интересующийся
Отправить личное сообщение для Ruslan Посмотреть профиль Найти все сообщения от Ruslan
 
Регистрация: 23.12.2009
Сообщений: 21

Асинхронность в Node.js в итоге дает порождение все тех же потоков что и при синхронной обработке параллельных запросов в обычной реализации сервера. никакого волшебства.
Ответить с цитированием
  #47 (permalink)  
Старый 26.04.2010, 11:49
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Ruslan
Асинхронность в Node.js в итоге дает порождение все тех же потоков
Не тех же, нет проблем с доступом к общим переменным.
Ответить с цитированием
  #48 (permalink)  
Старый 24.05.2010, 19:30
Аватар для kurokikaze
Новичок на форуме
Отправить личное сообщение для kurokikaze Посмотреть профиль Найти все сообщения от kurokikaze
 
Регистрация: 15.01.2010
Сообщений: 9

Там совсем не "те же" потоки. Именно поэтому Node работает так быстро.
Ответить с цитированием
  #49 (permalink)  
Старый 24.05.2010, 19:46
Интересующийся
Отправить личное сообщение для Ruslan Посмотреть профиль Найти все сообщения от Ruslan
 
Регистрация: 23.12.2009
Сообщений: 21

если можно детальней на счет потоков, оч. интересно
Ответить с цитированием
  #50 (permalink)  
Старый 24.05.2010, 22:29
Аватар для kurokikaze
Новичок на форуме
Отправить личное сообщение для kurokikaze Посмотреть профиль Найти все сообщения от kurokikaze
 
Регистрация: 15.01.2010
Сообщений: 9

Сообщение от Ruslan Посмотреть сообщение
если можно детальней на счет потоков, оч. интересно
В "обычной" реализации (полагаю, имеется в виду Апач) при поступлении запроса порождается тред (поток), который этот запрос обрабатывает. ОС быстро-быстро переключается между этими потоками (ну и распределяет их между ядрами процессора), поэтому запросы обрабатываются более-менее одновременно.

А вот в Node всё происходит немного по другому. Там для обработки множества запросов используется всего один тред и Event Loop. В Node есть пул событий, ждущих обработки. Это входящие соединения, ответы от серверов, прочитанные с диска фрагменты файлов и т.п. Обработчики этих событий выполняются по очереди одним потоком сервера (одним контекстом движка V8). При этом не тратится время на переключение туда-сюда между кучей тредов.

Один из главных принципов Node — обработчики должны возвращать управление как можно скорее. Если обработчик события должен например прочитать файл, он не сидит и не ждёт пока с жёсткого диска приедут нужные ему байты (как делал бы тред в PHP). Он начинает чтение файла и оставляет обработчик, который будет иметь дело с данными - и сразу же возвращает управление в event loop.
Ответить с цитированием
Ответ



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

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