Использование Node.js для крупного проекта [закрыто]
Проблема с выбором NodeJS для крупного серверного приложения
Я задумываюсь, стоит ли использовать NodeJS в качестве платформы для создания крупного серверного приложения, которое будет обрабатывать много HTTP-транзакций и большое количество одновременных пользователей.
Согласно информации, которую я нашел, NodeJS не считается оптимальным инструментом для разработки больших проектов. Вот что мне удалось выяснить:
- NodeJS работает на JavaScript, который использует событийные циклы. Это не всегда эффективно при большом объеме операций.
- Несмотря на то, что NodeJS является неблокирующим, все запросы обрабатываются в одном потоке, что может привести к узкому месту при большом количестве обработанных запросов.
- NodeJS основан на собственном HTTP-сервере, что будет означать, что для дальнейшего обслуживания потребуется опытный системный администратор или разработчик, обладающий знаниями в этой области.
- Для NodeJS не так много хорошо протестированного и разнообразного программного обеспечения, которое могло бы помочь в создании масштабного приложения.
Может ли кто-то прояснить ситуацию? Действительно ли NodeJS так мощен, как говорят? Является ли он действительно подходящим выбором для разработки крупных серверных приложений, или есть другие технологии, которые могут лучше справиться с этой задачей?
3 ответ(ов)
Node.js действительно мощный инструмент в своем роде. Вот несколько дополнительных моментов:
- Вы можете запускать несколько экземпляров вашего приложения с балансировкой нагрузки для обработки большого количества запросов.
- Выбирайте Node.js для чтения 2000 файлов вместо вычисления 20-го простого числа.
- Используйте Node.js для интенсивного чтения/записи файлов или взаимодействия с портами.
- Очень полезно, когда вам нужно транслировать свой ответ нескольким клиентам одновременно.
- Не беспокойтесь о взаимных блокировках в Node.js, лучше обращайте внимание на то, как часто вы выполняете одни и те же операции.
- Самое важное: значения живут в движке V8 до тех пор, пока процесс не завершится. Будьте внимательны к количеству строк кода, которые вы собираетесь «направить» в Node.js.
Самое важное, на мой взгляд, это минимально использовать время процессора. Если ваше приложение требует интенсивного использования ЦП, это увеличит задержку в основном цикле обработки событий, что может привести к тому, что приложение не сможет обрабатывать другие запросы.
Насколько мне известно, именно высокая скорость и использование async/await делают наибольшую разницу в производительности.
Для тех, кто обладает умеренными навыками в JavaScript и особенно понимает REST, а также упомянутые аспекты, Node.js является одним из лучших решений для крупных корпоративных приложений.
Если я не прав, поправьте меня, но даже использование чистого Express (без фреймворков, построенных на его основе) вполне может быть достаточным, если команды согласуют определенные соглашения и стандарты для следования.
Использование async/await с циклом forEach
Как получить полный объект в console.log() Node.js, а не '[Object]'?
Обнаружена ошибка: Невозможное нарушение: Неверный тип элемента: ожидался строковый тип (для встроенных компонентов) или класс/функция, но получен объект
Как остановить Babel от трансформации 'this' в 'undefined' и добавления "use strict"
Использование IndexRoute в react-router v4 с React