Я начал мастерить с Node.js HTTP-сервером и очень люблю писать на стороне сервера Javascript, но что-то мешает мне начать использовать Node.js для моего веб-приложения.
Я понимаю всю концепцию асинхронного ввода-вывода, но меня несколько беспокоит крайность случаев, когда процедурный код очень интенсивно работает с процессором, например манипулирование изображениями или сортировка больших наборов данных.
Как я понимаю, сервер будет очень быстрым для простых запросов веб-страниц, таких как просмотр списка пользователей или просмотр сообщения в блоге. Однако, если я хочу написать очень интенсивный код ЦП (например, в конце админа), который генерирует графику или изменяет размеры тысяч изображений, запрос будет очень медленным (несколько секунд). Поскольку этот код не является асинхронным, все запросы, поступающие на сервер в течение этих нескольких секунд, будут заблокированы до тех пор, пока мой медленный запрос не будет выполнен.
Одно из предложений заключалось в том, чтобы использовать Web Workers для задач с интенсивным использованием ЦП. Тем не менее, я боюсь, что веб-работникам будет сложно писать чистый код, так как он работает, включая отдельный JS файл. Что делать, если интенсивный код процессора находится в методе объекта? Это отстой, чтобы написать JS файл для каждого метода, который интенсивно работает в ЦП.
Другое предложение состояло в том, чтобы создать дочерний процесс, но это делает код еще менее удобным.
Любые предложения по преодолению этого (воспринимаемого) препятствия? Как вы пишете чистый объектно-ориентированный код с помощью Node.js, при этом убедитесь, что тяжелые задачи ЦП выполнены async?