Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.11.2015, 15:15
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сверхпроизводительные приложения на node.js
С месяца на месяц запущу один проект (не опен сорц, на этот раз) и меня интересует то, как можно построить сверхпроизводительное приложение на ноде, не боящееся хабраэффекта и других небольших DDOS-подобных эффектов. С нодой знаком на очень базовом уровне, поэтому прошу помочь разобраться в вопросе.

Доставка статики
Из того, что я вычитал в интернете, статику лучше раздавать средствами ngnix, минуя node.js. Верно? У меня тут два вопроса.
Первый: при запросе к статике идет обращение к жесткому диску или SSD. Т. е. каждый запрос вызывает самую медленную операцию ввода-вывода. Можно ли после запуска сервера загрузить статику в оперативную память, избегая постоянного дергания жесткого диска? Если это невозможно (или очень сложно) сделать средствами ngnix, хочется узнать, какой вариант лучше:
а) Отдавать статику ngnix-ом (с чтением с жесткого диска)
б) Отдавать статику средствами nodejs, но предварительно загрузив содержимое статики в память.
Второй: в проекте при изменении данных (когда один из пользователей добавляет контент), меняется содержимое индексной страницы. Это будет происходить примерно раз в час. Есть ли смысл при изменении данных генерировать новый HTML файл, а не рисовать его при каждом обращении?

REST API
Планируется так же сделать небольшое API, использующее Express и Mongo. Обращение к БД тоже трудозатратное мероприятие. При перезагрузке сервера планирую выгрузить все данные (их не много) из БД в оперативную память (в обычную переменную), при добавлении данных писать в БД и обновлять переменную, а при обращении к данным не дергать БД, а отдавать стрингифицированный, отфильтрованный JSON из переменной. Есть ли смысл это делать?

Заренее прошу прощения за, возможно, неправильное употребление терминов.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #2 (permalink)  
Старый 01.11.2015, 15:51
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

FINoM,
Цитата:
Можно ли после запуска сервера загрузить статику в оперативную память, избегая постоянного дергания жесткого диска?
Да. А почему ты в этом сомневаешься?


Цитата:
Если это невозможно (или очень сложно) сделать средствами ngnix, хочется узнать, какой вариант лучше:
а) Отдавать статику ngnix-ом (с чтением с жесткого диска)
б) Отдавать статику средствами nodejs, но предварительно загрузив содержимое статики в память.
Хз, это надо тестить. Кто же знает, что у тебя там за нагрузка и данные.


Цитата:
Это будет происходить примерно раз в час. Есть ли смысл при изменении данных генерировать новый HTML файл, а не рисовать его при каждом обращении?
Думаю, да.
Ответить с цитированием
  #3 (permalink)  
Старый 01.11.2015, 16:03
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от Safort
Да. А почему ты в этом сомневаешься?
Я понимаю, что это сделать можно. Меня интересует вопрос подводных камней.
Сообщение от Safort
Хз, это надо тестить. Кто же знает, что у тебя там за нагрузка и данные.
Это касается статики, всю динамику, я, конечно, буду пилить на ноде.
Сообщение от Safort
Думаю, да.
Тут тоже возникает вопрос с подводными камнями. Вот, данные обновились, сервер генерирует новую статичную страницу. Происходит какой-нибудь форс-мажор (ошибка на сервере или хз, что), файл не успевает дозаписаться, страница сломана.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #4 (permalink)  
Старый 01.11.2015, 18:39
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Велосипедство детектед. Для статики возьми Amazon S3 и не парься, там всё уже за тебя настроили. Что качается кеширования БД - все современные СУБД и так это делают по дефолту, т.е. всё держат в памяти. А вообще, если твое приложение не масштабируется горизонтально (т.е. путём добавления новых серверов), то всё остальное не имеет смысла.
__________________
kobezzza
code monkey
Ответить с цитированием
  #5 (permalink)  
Старый 01.11.2015, 18:52
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от kobezzza
Что качается кеширования БД - все современные СУБД и так это делают по дефолту, т.е. всё держат в памяти.
Тем не менее, запрос к БД - это лишняя операция, которую можно избежать.
Сообщение от kobezzza
А вообще, если твое приложение не масштабируется горизонтально (т.е. путём добавления новых серверов), то всё остальное не имеет смысла.
Причем тут масштабирование? Я говорю о производительности на одном сервере.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JavaScript. Уровень 3в. Серверное программирование на Node.js maxy666 Node.JS 8 10.08.2014 00:36
Недопонимание философии Node.js Voronar AJAX и COMET 10 25.02.2013 14:00
Востребованность разработчиков на Node.js danik.js AJAX и COMET 7 08.12.2012 22:49
Разработчик Node.js в США (Сиэтл) Akvelon Работа 0 29.08.2012 10:47
Node.js Kolyaj Серверные языки и технологии 49 24.05.2010 22:29