2016-03-29 11 views
0

Ich möchte einen Webparser mit node.js erstellen.Web Parser mit mehreren Threads

Ich weiß, die Verwendung von Multithreading wird nicht automatisch einen Leistungsvorteil erhalten, aber da dieser Parser mit dem Internet interagiert, gibt es die Verbindungsverzögerungen.

Wenn der Parser eine Website anfordert, dauert es mehrere hundert Millisekunden, wenn die CPU nicht mehr warten muss, bis die Anforderung abgeschlossen ist. Für einen einzelnen Thread würde dies bedeuten, dass er die meiste Zeit wartet.

Ich möchte Threading verwenden, um verfügbare CPU-Ressourcen besser zu verteilen.

Ich möchte mehrere Worker ausführen, die die Anforderungen zusammen mit einigen anderen Methoden ausführen.

Ich fand das Cluster-Modul könnte nützlich sein, aber ich bin mir nicht sicher, da die meisten Beispiele davon sprechen, es als Webserver zu verwenden.

Wie wird dies am besten mit node.js erreicht?

Antwort

1

Wie @Roman-Dibikhin beantwortet, überprüfen Sie das Async queue Modul.

Wenn Sie Ihren Code richtig erstellen - die Grenze wird Ihre Netzwerkbandbreite \ sql \ Festplatte viel vor dem einzelnen Kern sein.

Ich habe gerade ein Projekt, das Knoten für URL-Verschrottung verwenden. Das Limit ist nur die Internetbandbreite.

natürlich wenn Sie wollen, können Sie immer eine andere Instanz feuern.

+0

ist dieses Projekt Open Source? Was ist der beste Weg, mehrere Instanzen zu starten, anstatt sie manuell von der Konsole aus zu starten? Gibt es etwas, auf dem bereits X-Instanzen laufen, und wenn eines beendet wird, wird ein anderes automatisch gestartet? – maddo7

+0

Nicht Open Source, sorry. Der grundlegende Weg, mehrere Instanzen auszulösen, ist der 'Kind-Prozess'. Sie können die Anzahl der gleichzeitig ablaufenden asynchronen Warteschlangen verwalten, durch Versprechen oder irgendetwas anderes. Der beste Weg ist wirklich abhängig von Ihren Zielen und der Art, wie Sie Ihren Code schreiben. – yeya

+0

Danke, weißt du einen Weg, um Web-Anfragen mit Cookie-Unterstützung zu machen? Ist Curl der Weg zu gehen? – maddo7

1

Sie können Async NPM verwenden, um die gesamte Leistung eines Kerns zu verwenden, und dann mit einigen clustering solution skalieren, um alle Kerne zu verwenden.

Verwandte Themen