GNU/Linux >> Znalost Linux >  >> Linux

Linux – Jak Node.js / Cluster Module předává nová spojení z hlavního/nadřazeného procesu do podřízených procesů?

Jak přesně to funguje pod kapotou / na úrovni OS (především v implementacích Unix / z pohledu API pro sockety)?

Dokumentace modulu clusteru říká:

„hlavní proces naslouchá na portu, přijímá nová připojení a rozděluje je mezi pracovníky způsobem „round-robin“

Znamená to, že hlavní proces sám zpracovává / volá accept() u příchozích připojení a poté předá vrácený deskriptor soketu předem rozvětvenému podřízenému procesu prostřednictvím nějakého mechanismu IPC (sockety unixové domény?), kde je pravděpodobně registrován u místního ( k tomuto procesu) mechanismus multiplexování (např. instance epoll)?

Snažím se lépe porozumět vnitřnímu fungování Node.js, ale na této úrovni nemohu najít spoustu definitivních informací. Jakákoli pomoc je velmi oceňována.

Díky

Přijatá odpověď:

Viz child.send() v modulu nodejs child_process. Stručně řečeno:

child.send('socket', socket);

Kde 'socket' je speciální název zprávy a odešlete odkaz na objekt soketu nodejs. Nodejs pak zpracovává věci pod kryty v modulu child_process pro odeslání skutečného ovladače soketu OS do podřízeného procesu a poté k němu na druhém konci věcí připojí nový objekt soketu nodejs.

A zde je odkaz na článek na téma:Odeslání soketu do rozvětveného procesu v Node.JS.


Linux
  1. Jak funguje životní cyklus procesu Linux – nadřazený, podřízený a iniciační proces

  2. Jak vypočítat využití CPU procesu pomocí PID v Linuxu z C?

  3. Jak interně funguje copy_from_user z jádra Linuxu?

  1. Jak vypočítat využití CPU procesu a všech jeho podřízených procesů v Linuxu?

  2. Jak získat podřízený proces z rodičovského procesu

  3. Jak mohu odeslat zprávu na můj socket.io websocket z příkazového řádku v linuxu?

  1. Jak získat rodičovské PID daného procesu v GNU/Linuxu z příkazového řádku?

  2. Jak systemd řeší smrt dítěte řízeného procesu?

  3. Jak Linux rozlišuje vlákna od podřízených procesů?