Библиотека сайта 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 на стороне сервера.
Рисунок 2.4 - Отслеживание состояния электронной таблицы с помощью серверного программного обеспечения на основе фреймворка Node.js
Продолжение статьи: SocialCalc на стороне сервера.