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