Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

От SocialCalc к EtherCalc

Глава 2 из книги "Производительность приложений с открытым исходным кодом".

Оригинал: From SocialCalc to EtherCalc
Автор: Audrey Tang
Перевод: А.Панин

Портирование для работы с Node.js

Начальные этапы портирования прошли достаточно гладко благодаря тому, что и веб-сервер Feersum, и фреймворк Node.js основаны на одной и той же модели событий библиотеки libev, а также API компонента Pocket.io в значительной степени совпадает с API компонента Socket.io. Мы потратили всего лишь один вечер на создание кода эквивалентного по функциональности сервера, уложившись в 80 строк кода благодаря четкому API ZappaJS.

Начальное микротестирование показало, что портирование для работы с фреймворком Node.js стоило снижения максимальной пропускной способности сервера практически наполовину. При использовании стандартной для 2011 года системы на базе центрального процессора Core i5 оригинальный стек Feersum мог обрабатывать 5000 запросов в секунду, в то время, как сервер Express на основе фреймворка Node.js обрабатывал максимум 2800 запросов в секунду.

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

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

Отслеживание состояния электронной таблицы с помощью серверного программного обеспечения на основе фреймворка Node.js
Рисунок 2.4 - Отслеживание состояния электронной таблицы с помощью серверного программного обеспечения на основе фреймворка Node.js


Продолжение статьи: SocialCalc на стороне сервера.