nodeJS Быстрый веб-сервер на javascript движке V8

9Фев/112

Node.js под большим трафиком

Топик с "числом Бумбурума", хоть и привёл к моему бану на Хабре, позволил на несколько часов подставить реальный сайт на Express под большой трафик. Результат интересный: сайт один раз упал, выдав ошибку открытия файла, но после перезапуска node работал нормально. Трафик за пару часов составил около 27000 просмотров, с очень быстрым ростом (выход топика на главную). К сожалению трафик по из Google Analytics получить похоже нельзя, было бы более наглядно.

1Фев/110

Новый спайдер на основе htmlparser + soupselect

На досуге набросал новый спайдер для очередного микропроекта. В этот раз я решил не использовать jsdom (как в нескольких предыдущих), а остановиться на связке htmlparser + soupselect. Страница сначала отдаётся парсеру, а поиск по полученному DOM делается с помощью SoupSelect.

Метки записи: , , Читать полностью
28Дек/100

Сервер разработки на основе Gitosis

Если Вы пользовались Joyent или Heroku, Вам должен быть знаком способ которым они делают связку хостинга и git: Вы делаете git push нужной ветки и сервер запускает этот код. Я решил сделать то же самое на своём маленьком сервере.

Основные требования к серверу были такими:

  • Использование git. Я конечно знаю SVN и CVS, но git для меня гораздо удобнее.
  • Автоматический рестарт Ноды с нужным скриптом при git push
  • Авторизация по открытому ключу, чтобы не вводить логины-пароли, и чтобы никто кроме меня не мог делать push на мой сервер
  • Возможность выполнять скрипты после получения кода но до перезапуска Node - например, чтобы вызывать JSLint
5Окт/105

Хостинг Node.js на Joyent

Ещё полгода назад хостинг на Node.js был чем то из области фантастики. Если Вы хотели пользоваться Node, лучшее что Вам могли предложить — виртуальный сервер с возможностью установки софта. Теперь же Node-хостинг набирает обороты. Вовсю идёт бета-тестирование платформы Heroku, что то готовят товарищи из Elusive Hippo (правда последнее время там что то неспокойно). Теперь же вслед за Heroku о создании Node-хостинга объявил Joyent.

Как и в случае Heroku, хостинг этот пока экспериментальный и доступ к нему ограничен. Чтобы создать сервер на платформе Joyent надо ввести специальный код купона, который можно получить сделав запрос к RESTful API. Ещё одно важное отличие от Heroku: Вам предоставляется полноценный сервер, и node-приложение доступно из Интернета напрямую, а значит - там работают вебсокеты и сервисы на портах отличных от стандартного.

17Авг/102

Хранилища данных в Node.js: Redis

Последний раз я серьёзно заинтересовался Redis после посещения DevConf 2010 — там был очень интересный доклад о возможностях и применении этой системы. Теперь, когда API Ноды несколько устаканилось и коннекторы пришли в более-менее стабильный вид, можно поэкспериментировать и с Redis, помимо прочих хранилищ :)

Метки записи: , Читать полностью
21Июн/101

Использование нескольких ядер/процессоров в Node.js: порождаем воркеры

Рабочие на фабрике в КитаеОдно из слабых мест Node.js — однопоточное выполнение кода. С этой проблемой можно бороться по разному: например, ставя load balancer'ы и запуская несколько экземпляров сервера. Но с версией 0.1.98 появился и новый способ: передача файлового дескриптора.

Метки записи: , Читать полностью
15Июн/1014

Socket.IO и Node.js: пробное использование

Я давно хотел попробовать поиграться с библиотекой Socket.IO. Она предоставляет API, которое позволяет клиенту и серверу общаться, используя различные технологии:

  • WebSocket
  • Adobe Flash Socket
  • ActiveX HTMLFile (IE)
  • Server-Sent Events (Opera)
  • XHR с multipart encoding
  • XHR с long-polling

Причём технология выбирается совершенно прозрачно и для клиента, и для сервера. Если браузер поддерживает WebSockets, будут использоваться именно они. Для других браузеров будет обеспечен fallback до флешовых сокетов, а если и этих нет — до обычного XHR с long polling. Плюс над всем этим великолепием сделан удобный API для клиента и сервер для Node.js (впрочем, думаю сервер тут можно реализовать на любом языке).

11Июн/103

Хранилища данных в Node.js: MySQL через DBSlayer

Хотя Node отлично справляется с большим количеством одновременных запросов и висящих соединений, для больших сервисов иногда имеет смысл не переписывать всё на Node, а перенести на неё только критичные части кода: в частности, все связанное с Comet и асинхронной доставкой контента. Сегодня я покопаюсь в DBSlayer и псмотрю как можно ускорить с помощью Node обычный сайт на Drupal.

DBSlayer был создан в недрах New York Times как средство абстракции и балансирования нагрузки на БД. Подробнее можно почитать на сайте NYTimes. DBSlayer предоставляет API на основе JSON. Т.к. нативного драйвера для MySQL нет, для доступа к MySQL-серверам из Node используется именно этот сервер.

2Июн/101

Хранилища данных в Node.js: Riak

Логотип Riak

Если Вы следите за записями о Node.js в Твиттере или блогах, Вам наверняка случалось слышать о связке Node.js + Riak. Я тоже недавно узнал об этом хранилище, и мне стало интересно, что оно из себя представляет и чем выделяется в ряду остальных.

Если коротко, Riak — распределённое key-value хранилище с eventual consistency (изменения рано или поздно распространяются по всему кластеру) и запросами на основе map/reduce.

25Май/101

Использование mapReduce в MongoDB

Battle City HiScore

Ещё одна полезная штука в MongoDB — возможность делать агрегатные запросы с помощью MapReduce. Но в отличии от CouchDB, здесь map-reduce используется только когда это явно необходимо. Сейчас я попробую воспользоваться этой фичей.

Все дальнейшие действия будут проводиться в консоли. Любой консольной команде можно найти соответствие в коннекторе Node.js.

Метки записи: Читать полностью