Verzeihen Sie meine Ignoranz, ich lerne derzeit, wie man Node aus einem PHP-Hintergrund, wo ich wirklich keine Interaktion mit Apache oder Server-Management hatte. Ich benutze Heroku, um meine Node-Projekte zu hosten, die direkt aus der Cloud9-IDE stammen.Node.js Child Prozesse auf Heroku mit einzelnen Dyno
Von dem, was ich gelesen habe, ist ein Heroku-Dyno ein einzelner Web-Prozess, der Kauf zusätzlicher Dynos ermöglicht es Ihnen, mit mehr eingehenden Verkehr umzugehen, weil Sie durch die Erhöhung von Dynos die Menge der Anfragen erhöhen können mit zu jeder Zeit.
Ich weiß, dass der Knoten ein single-threaded-System ist, das Anfragen einzeln behandelt, so dass Sie untergeordnete Prozesse für alles erstellen können, das einige Zeit dauern kann (wie Datenbankanforderungen, Verarbeitung von Dateien usw.).
Was passiert also in Heroku, wenn ich einen Child-Prozess mit einem einzelnen Prüfpunkt spawne? Braucht das keinen anderen Dyno, um daran zu arbeiten? Sicher, wenn Node einen einzigen Prozess ausführt und ich nur einen Prozess in meinem einzelnen Dyno verfügbar habe, müssen zusätzliche Prozesse auch von diesem Prozess gehandhabt werden?
Oder habe ich das alles falsch?
Sie sollten keine separaten Knotenprozesse starten müssen, um Datenbankanforderungen und Dateiverarbeitung asynchron auszuführen. Dies ist nicht der Vorteil von nodejs. Wenn Sie eine nicht-deterministische Anzahl von Worker-Threads/-Prozessen erzeugen, verwenden Sie NodeJS absolut falsch. Und mit dieser Antwort glaube ich, dass Sie in der Lage sein sollten, Ihre eigene Frage zu beantworten. Wenn Sie mehr Details wünschen, lassen Sie es mich wissen! – ChrisCM
Danke für Ihre Antwort, Chris. Ich habe mich vielleicht nicht richtig erklärt - meine Kenntnisse über Node reichen im Moment nicht zu weit außerhalb des Node Beginner Buches, in dem ein Beispiel 'var exec = require (" child_process "). Exec;' verwendet und verwendet später die "exec" -Funktion bei der Durchführung einer teuren Shell-Operation, um nicht blockierenden Code zu demonstrieren. So wie ich es verstehe, wird in diesem Beispiel die Shell-Operation auf einen anderen Prozess verschoben, so dass der Hauptprozess weiterhin neue Anforderungen annehmen kann und später einen Rückruf erhält, um die Antwort der ersten Anfrage anzuzeigen. – mibbler
Ich habe meine Kommentare als Antwort eingereicht. – ChrisCM