Подходит ли Node.js для создания большого веб-приложения с общим доступом к файлам?
Да.
Современный node.js имеет несколько способов обработки ресурсоемких задач в наши дни, так что совет, возможно, немного устарел. Совет состоит в том, что он запускает ваш основной Javascript в одном потоке и использует асинхронный ввод-вывод, чтобы позволить одному потоку очень эффективно обрабатывать множество запросов с использованием асинхронного ввода-вывода.
Но , если некоторые из ваших обработчиков запросов используют много циклов ЦП, то происходит отключение события l oop.
Но современный node.js имеет возможность:
Кластеризация с использованием встроенного модуля кластера , поэтому у вас есть несколько node.js процессов, принимающих запросы со сбалансированной нагрузкой, которые будут задействовать много процессоров.
Используйте Рабочие потоки , чтобы запускать отдельные потоки, в которых вы можете запускать задачи с интенсивным использованием ЦП, а не блокировать главное событие. L oop.
Создать несколько своего рода рабочая очередь, где вы можете использовать дополнительные процессы или рабочие потоки для перегрузки ЦП при работе в очереди. Я мог бы представить себе приложение для обработки изображений, которое делает это следующим образом.
В вашем случае приложение для обмена файлами, вероятно, даже не требует много ресурсов процессора, так как, скорее всего, основной лог c о том, кто может получить доступ к тому, что не требует интенсивной загрузки ЦП, а процесс обслуживания общих ресурсов полностью связан с вводом / выводом (что очень эффективно при node.js). Если, попав в разработку, вы где-то обнаружили узкое место с высокой загрузкой процессора, вы можете очень легко обойти его одним из вышеуказанных подходов.
И есть много способов горизонтального масштабирования node.js с кластеризацией на одном сервере или нескольких кластерах серверов. Если ваше приложение связано с вводом / выводом из-за всего общего содержимого, масштабирование, вероятно, в основном связано с пропускной способностью сети и масштабированием дискового ввода / вывода, а не с фактической логикой приложения c или процессором.