Node.js und CPU-intensive Anfragen

Habe ich begonnen zu basteln mit Node.js HTTP-server und wirklich wie das schreiben von server-side Javascript, aber etwas hält mich von ab zu verwenden Node.js für meine web-Anwendung.

Ich verstehe das ganze async-I/O-Konzept, aber ich bin etwas besorgt über die Grenzfälle, wo prozeduralen code ist sehr CPU-intensiv, wie Bildbearbeitung oder das Sortieren großer Datenmengen.

Wie ich es verstehe, wird der server sehr schnell für einfache web-Seite Anfragen, wie die Anzeige einer Liste der Benutzer oder Leser eines blog-post. Allerdings, wenn ich schreiben möchte sehr CPU-intensiven code (im admin-back-end zum Beispiel), die generiert Grafiken oder ändert, Tausende von Bildern, die Anfrage wird sehr langsam (ein paar Sekunden). Da dieser code ist nicht async, alle Anfragen an den server während dieser wenigen Sekunden wird blockiert, bis langsam meine Anfrage ist erledigt.

Ein Vorschlag war der Einsatz von Web-Arbeiter für CPU-intensive Aufgaben. Aber ich fürchte, web-Arbeitnehmer machen es schwer zu schreiben sauberen code, da es funktioniert, indem Sie eine separate JS-Datei. Was ist, wenn die CPU-intensive code befindet sich in einem Objekt Methode? Es Art von saugt, schreiben Sie eine JS-Datei, die für jede Methode, die ist CPU-intensiv.

Ein anderer Vorschlag war, um zu laichen einen Kind-Prozess, aber das macht den code noch weniger wartbar zu sein.

Irgendwelche Vorschläge, um diese zu überwinden (wahrgenommene) Hindernis? Wie du schreibst sauberen Objekt-orientierten code mit Node.js während Sie sicherstellen, dass CPU-Intensive Aufgaben ausgeführt werden, async?

Kommentare dem Thema
Olivier, fragte Sie die identische Frage, die ich im Sinn hatte (neue Knoten) und insbesondere in Bezug auf die Verarbeitung von Bildern. In Java kann ich verwenden Sie ein fester thread ExecutorService übergeben und alle die Größe Arbeitsplätze und warten auf Sie bis zum Ende von allen die Verbindung, in Knoten, ich habe nicht herausgefunden, wie shuffle off arbeiten, um ein externes Modul, das die Grenzen (sagen wir mal) die maximale Anzahl von gleichzeitigen Operationen zu 2 zu einem Zeitpunkt. Haben Sie einen eleganten Weg, dies zu tun? Kommentarautor: Riyad Kalla

InformationsquelleAutor der Frage Olivier Lalonde | 2010-08-16

Schreibe einen Kommentar