Сверхпроизводительные приложения на node.js
С месяца на месяц запущу один проект (не опен сорц, на этот раз) и меня интересует то, как можно построить сверхпроизводительное приложение на ноде, не боящееся хабраэффекта и других небольших DDOS-подобных эффектов. С нодой знаком на очень базовом уровне, поэтому прошу помочь разобраться в вопросе.
Доставка статики Из того, что я вычитал в интернете, статику лучше раздавать средствами ngnix, минуя node.js. Верно? У меня тут два вопроса. Первый: при запросе к статике идет обращение к жесткому диску или SSD. Т. е. каждый запрос вызывает самую медленную операцию ввода-вывода. Можно ли после запуска сервера загрузить статику в оперативную память, избегая постоянного дергания жесткого диска? Если это невозможно (или очень сложно) сделать средствами ngnix, хочется узнать, какой вариант лучше: а) Отдавать статику ngnix-ом (с чтением с жесткого диска) б) Отдавать статику средствами nodejs, но предварительно загрузив содержимое статики в память. Второй: в проекте при изменении данных (когда один из пользователей добавляет контент), меняется содержимое индексной страницы. Это будет происходить примерно раз в час. Есть ли смысл при изменении данных генерировать новый HTML файл, а не рисовать его при каждом обращении? REST API Планируется так же сделать небольшое API, использующее Express и Mongo. Обращение к БД тоже трудозатратное мероприятие. При перезагрузке сервера планирую выгрузить все данные (их не много) из БД в оперативную память (в обычную переменную), при добавлении данных писать в БД и обновлять переменную, а при обращении к данным не дергать БД, а отдавать стрингифицированный, отфильтрованный JSON из переменной. Есть ли смысл это делать? Заренее прошу прощения за, возможно, неправильное употребление терминов. |
FINoM,
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Велосипедство детектед. Для статики возьми Amazon S3 и не парься, там всё уже за тебя настроили. Что качается кеширования БД - все современные СУБД и так это делают по дефолту, т.е. всё держат в памяти. А вообще, если твое приложение не масштабируется горизонтально (т.е. путём добавления новых серверов), то всё остальное не имеет смысла.
|
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 12:18. |