Новости IT, хостинга
  Android, Apple, Facebook, Google, Linux, Microsoft, Samsung, Twitter, Интернет, Россия, браузеры, обновление ПО, онлайн-сервисы, операционные системы, планшеты, рынок ИТ, сделки, смартфоны, социальные сети, уязвимости  
  новостей: 10337
  комментариев: 3049

Выпуск серверной JavaScript-платформы Node.js 0.10


Вышел стабильный релиз Node.js 0.10, платформы для выполнения высокопроизводительных сетевых приложений на языке JavaScript. Платформа может быть использована как для серверного сопровождения работы Web-приложений, так и для создания обычных клиентских и серверных сетевых программ. Для расширения функциональности приложений для Node.js подготовлена большая коллекция модулей, в которой можно найти модули с реализацией серверов и клиентов HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, модули для интеграции с различными web-фреймворками, обработчики WebSocket и Ajax, коннекторы к СУБД (MySQL, PostgreSQL, SQLite, MongoDB), шаблонизаторы, CSS-движки, реализации криптоалгоритмов и систем авторизации (OAuth), XML-парсеры.

Для обеспечения обработки большого числа параллельных запросов Node.js задействует асинхронную модель запуска кода, основанную на обработке событий в неблокирующем режиме и определении callback-обработчиков. В качестве способов мультиплексирования соединений поддерживаются такие методы, как epoll, kqueue, /dev/poll и select. Для мультиплексирования соединений используется библиотека libuv, которая является надстройкой над libev в системах Unix и над IOCP в Windows. Для создания пула потоков (thread pool) задействована библиотека libeio, для выполнения DNS-запросов в неблокирующем режиме интегрирован c-ares. Все системные вызовы, вызывающие блокирование, выполняются внутри пула потоков и затем, как и обработчики сигналов, передают результат своей работы обратно через неименованный канал (pipe). Выполнение JavaScript-кода обеспечивается через задействование разработанного компанией Google движка V8.

По своей сути Node.js похож на фреймворки Perl AnyEvent, Ruby Event Machine и Python Twisted, но цикл обработки событий (event loop) в Node.js скрыт от разработчика и напоминает обработку событий в web-приложении, работающем в браузере. При написании приложений для node.js необходимо учитывать специфику событийно-ориентированного программирования, например, вместо выполнения "var result = db.query("select..");" с ожиданием завершения работы и последующей обработкой результатов, в Node.js использует принцип асинхронного выполнения, т.е. код трансформируется в "db.query("select..", function (result) {обработка результата});", при котором управление мгновенно перейдёт к дальнейшему коду, а результат запроса будет обработан по мере поступления данных. Ни одна функция в Node.js не должна напрямую выполнять операции ввода/вывода - для получения данных с диска, от другого процесса или из сети требуется установка callback-обработчика.

Наиболее заметные новшества, добавленные в Node.js 0.10:
Новая реализация API для работы с потоками ввода/вывода - Streams2, устраняющая некоторые ранее проявляющиеся проблемы, такие как невозможность прочитать только фиксированное число байт, оставив остальную часть потока для дальнейшей обработки. Кроме того, новая система позволила перевести все потоки в ядре Node.js на использование единого набора легко расширяемых классов, а также упростила создание потоковых интерфейсов в пользовательских приложениях. Новое API Streams2 также доступно в виде модуля readable-stream для прошлых выпусков Node.js, при этом 37 модулей в репозитории уже используют данный API;
Модуль domain, позволяющий связать несколько разных операций ввода/вывода и выполнить их обработку в виде единой группы, зафиксирован в плане функциональности и переведён из разряда экспериментальных в категорию нестабильных, а в будущем будет позиционирован как стандартный способ обработки ошибок в Node.js;
Проведена большая работа по оптимизации производительности, что отразилось в заметном ускорении выполнении тестов, по сравнению с веткой 0.8. Некоторые тесты, особенно связанные с вводом/выводом и шифрованием, в новой версии выполняются быстрее в разы;
Изменен способ обработки функции process.nextTick(), которая теперь не привязана к циклу обработки событий и не зависит от операций ввода/вывода. Новая реализация process.nextTick() отличается соблюдением точности callback-вызова, вне зависимости от интенсивности ввода/вывода;
Переработана работа сборщика мусора, активация которого стала более предсказуемой. Если ранее сборщик мусора пытался планировать запуск чистки с оглядкой на состояние памяти и простой системы, из-за чего было невозможно предсказать, когда он активируется и как долго будет выполняться, особенно на нагруженных системах, то в новой версии логика вызова сборщика мусора ложится целиком на JavaScript-движок V8, который достаточно продвинут в плане самостоятельной организации чистки мусора. В результате, отзывчивость система стала более постоянной и предсказуемой.

Следующим этапом развития Node.js станет выпуск 0.12, в котором будет сделан акцент на улучшении реализации поддержки HTTP и, возможно, в качестве базовой реализации TLS будет возвращён модуль tlsnappy. После этого начнётся подготовка знакового релиза 1.0, который ознаменует собой определённую завершённость базовой функциональности, стабилизацию API и переход к более жёстким критериям обеспечения обратной совместимости.


Источник: opennet.ru

  13 марта 2013 523
Версия для печати

← предыдущая новость следующая новость →

Мой комментарий
Ваше имя*:
Email:
Комментарий*:
Зарегистрироваться автоматически: Вы будете зарегистрированы на сайте автоматически при добавлении комментария. Обязательно заполните поле Email для этого.
Сумма чисел 8 и 19*:            


Хостеры (2435)
HostDB (35)
Софт (2640)
Железо (993)
Интернет (1435)
Статистика и аналитика (3324)


Лучшие новости

Самые читаемые новости

Отправить сообщение администратору

Сумма чисел 24 и 3*:


Яндекс цитирования
сообщить о неточности