Zacząłem majstrować przy serwerze HTTP Node.js i naprawdę lubię pisać Javascript po stronie serwera, ale coś powstrzymuje mnie od rozpoczęcia używania Node.js do mojej aplikacji internetowej.
Rozumiem całą koncepcję asynchronicznych operacji we / wy, ale jestem nieco zaniepokojony przypadkowymi przypadkami, w których kod proceduralny wymaga dużej mocy obliczeniowej, np. Manipulowanie obrazem lub sortowanie dużych zestawów danych.
Jak rozumiem, serwer będzie bardzo szybki w przypadku prostych żądań stron internetowych, takich jak przeglądanie listy użytkowników lub przeglądanie postów na blogu. Jeśli jednak chcę napisać kod bardzo obciążający procesor (na przykład w panelu administracyjnym), który generuje grafikę lub zmienia rozmiar tysięcy obrazów, żądanie będzie bardzo wolne (kilka sekund). Ponieważ ten kod nie jest asynchroniczny, wszystkie żądania przychodzące do serwera w ciągu tych kilku sekund będą blokowane, dopóki moje wolne żądanie nie zostanie wykonane.
Jedną z sugestii było użycie Web Workers do zadań intensywnie wykorzystujących procesor. Obawiam się jednak, że pracownicy sieci utrudnią napisanie czystego kodu, ponieważ działa on poprzez dołączenie osobnego pliku JS. Co się stanie, jeśli kod intensywny procesora znajduje się w metodzie obiektu? To trochę wkurza, aby napisać plik JS dla każdej metody wymagającej dużej mocy obliczeniowej.
Inną sugestią było odrodzenie procesu potomnego, ale czyni to kod jeszcze trudniejszym do utrzymania.
Jakieś sugestie, jak pokonać tę (postrzeganą) przeszkodę? Jak piszesz czysty obiektowy kod za pomocą Node.js, upewniając się, że duże zadania procesora są wykonywane asynchronicznie?