[Перевод] Пишем сервер, который не падает под нагрузкой
От переводчика: Это пятая статья из цикла о Node.js от команды Mozilla Identity, которая занимается проектом Persona. Предыдущие статьи: «Охотимся за утечками памяти в Node.js» «Нагружаем Node под завязку» «Храним сессии на клиенте, чтобы упростить масштабирование приложения» Производительность фронтэнда. Часть 1 — конкатенация, компрессия, кэширование Как написать приложение Node.js, которое будет продолжать работать даже под невозможной нагрузкой? В этой статье показана методика и библиотека node-toobusy, её воплощающая, суть которой наиболее кратко может быть передана этим фрагментом кода: var toobusy = require ('toobusy'); app.use (function (req, res, next) { if (toobusy ()) res.send (503, «I’m busy right now, sorry.»); else next (); }); В чём заключается проблема? Если ваше приложение выполняет важную задачу для людей, стоит потратить немного времени на раздумья над самыми катастрофичными сценариями. Это может быть катастрофа в хорошем смысле — когда ваш сайт попадает в фокус внимания социальных медиа, и вместо десяти тысяч посетителей за сутки к вам вдруг приходит миллион. Подготовившись заранее, вы можете создать сайт, который выдержит внезапный всплеск посещаемости, превышающий обычную нагрузку на порядки. Если же этими приготовлениями пренебречь, сайт ляжет именно тогда, когда вы меньше всего этого хотите, когда он у всех на виду. Это может быть и злонамеренный всплеск трафика, например от DoS-атаки. Первый шаг к борьбе с такими атаками — написание сервера, который не падает.Читать дальше →