2017-01-27 6 views
0

Ich habe in erster Linie in anderen Programmiersprachen programmiert, aber ich habe eine Webapp in Benutzer NodeJS gemacht und bin auf einige Dinge gestoßen, die ich nicht ganz gehört werden kann.Was sind Arbeiter in NodeJS

ich https://nodejs.org/api/cluster.html#cluster_how_it_works bezeichnet

ich, dass dies erklärt gefunden, na ja, wie NodeJS mit einer großen Anzahl von Anfragen trotz Knoten Single-Threaded ist nur zu bewältigen. Was mich jedoch verwirrt, ist, wenn ein Hafen unter "vielen Arbeitern" geteilt wird.

Nun, wenn Knoten nicht Multithread ist, was genau sind diese Arbeiter. In Java zum Beispiel können Sie Multithread-Anwendungen mit Completable Futures zum Beispiel haben. Diese führen dazu, dass verschiedene Threads Verantwortung übernehmen.

Aber was ist ein Arbeiter in Knoten, wenn nicht ein Thread?

Antwort

1

Knoten kann problemlos 10.000 gleichzeitige Verbindungen in einem einzigen Thread behandeln (siehe this answer für Details). Für einige Dinge, die blockieren, verwendet es einen Thread-Pool, aber das ist für Sie transparent. Ihr JavaScript verwendet in jedem Prozess eine Singlethread-Ereignisschleife.

Denken Sie daran, dass nginx, ein Webserver, der für Geschwindigkeit bekannt ist, auch single-threaded ist. Redis, eine Datenbank, die für Geschwindigkeit bekannt ist, ist auch single-threaded. Multi-Threading eignet sich gut für CPU-gebundene Tasks (wenn Sie einen Thread pro CPU verwenden), aber für E/A-gebundene Tasks, für die normalerweise Node verwendet wird, funktionieren Singlethread-Ereignisschleifen besser.

Nun, um Ihre Frage zu beantworten - im Kontext von Clustern, über die die Website, die Sie verlinkt haben, spricht, ist ein Worker ein einziger Prozess. Jeder dieser Prozesse hat immer noch eine single-threaded Ereignisschleife, aber viele dieser Prozesse können zur gleichen Zeit ausgeführt werden.

Sehen Sie diese Antworten für weitere Informationen:

+0

Ihnen sehr danken. Große Antwort und Ressourcen! –

Verwandte Themen