L'architettura nodeJS

L'architettura nodeJS

Node utilizza un modello Input/Output non bloccante ed orientato agli eventi.

Qual'è la differenza tra un modello bloccante e non bloccante?

Modello Bloccante (multi-thread bloccante)

  • Ad ogni input si attende che l'output sia pronto per essere servito.
  • In un architettura multi-thread il server istanzia per ogni richiesta in ingresso un thread, ed ogni thread può rimanere in attesa di elaborare l'output, utilizzando quindi una risorsa del server (anche se in attesa).
  • Quando ci sono molte richieste in ingresso, molti thread vengono stanziate, finchè le risorse hardware non sono più sufficienti per gestire le richieste. Queste richieste in esubero dovranno rimanere in attesa che si liberino dei thread, oppure bisogna potenziare l'hardware (aggiungendo quindi un costo).
  • Questo modello non utilizza le risorse in modo efficace e può avere problemi per quanto riguarda la scalabilità.

Riportandolo in un esempio: In un ristorante ci sono 5 clienti, il cameriere prende l'ordinazione, porta la comanda allo chef, attende che il piatto sia pronto e lo porta al cliente, poi passa al cliente successivo.

Modello Non Bloccante (single-thread non bloccante)

  • Ogni input viene messo in coda per l'elaborazione senza attendere che venga elaborato l'output per essere servito.
  • Le applicazioni node sono asincrone di default.
  • Il processo node è single-thread, non resta in attesa se l'output non è pronto, ma passa alla richiesta in ingresso successiva.
  • Ogni richiesta fatta dal browser viene considerato un evento, questo evento viene messo in una coda chiamata "Event Queue"
  • La coda degli eventi in Event Queue viene gestita dall'Event Loop che controlla la coda e passarlo al thread per passarlo per l'esecuzione (in modo asincrono).
  • In questo modo le risorse sono gestite in modo molto efficiente.

Riportandolo in un esempio: In un ristorante ci sono 5 clienti, il cameriere prende l'ordinazione, porta la comanda allo chef, passa al cliente successivo, poi quando viene chiamato dallo chef, porta il piatto al cliente. In questo modo il locale è molto più efficiente.

Un processo è una specifica istanza di un programma in esecuzione, ogni processo può creare dei sottoprocessi chiamati thread

Quali applicazioni sviluppare con node?

Grazie al suo modello I/O non bloccante e quindi efficiente, node si presta molto bene ad applicazioni ad intenso Input/Output, applicazioni veloci e scalabili, ed applicazioni enterprise

Scritto da Donato Pirolo

Ciao, sono Donato, frontend developer con una smisurata passione per la SEO. Creo strumenti ad hoc per aiutare aziende e professionisti ad essere cercati sul web e trovare clienti.

Potrebbero interessarti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Copyright © 2022
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram