Schema del reattore - Reactor pattern

Il modello di progettazione del reattore è un modello di gestione degli eventi per la gestione delle richieste di servizio consegnate contemporaneamente a un gestore di servizi da uno o più input. Il gestore del servizio quindi demultiplex le richieste in arrivo e le invia in modo sincrono ai gestori delle richieste associati.

Struttura

Risorse
Qualsiasi risorsa in grado di fornire input o consumare output dal sistema.
Demultiplexer ad eventi sincroni
Utilizza un ciclo di eventi per bloccare tutte le risorse. Il demultiplexer invia la risorsa al dispatcher quando è possibile avviare un'operazione sincrona su una risorsa senza bloccarla ( Esempio: una chiamata sincrona a read() si bloccherà se non ci sono dati da leggere. Il demultiplexer usa select() sulla risorsa, che si blocca fino al la risorsa è disponibile per la lettura. In questo caso, una chiamata sincrona a read() non verrà bloccata e il demultiplatore può inviare la risorsa al dispatcher.)
Dispatcher
Gestisce la registrazione e l'annullamento della registrazione dei gestori delle richieste. Invia le risorse dal demultiplexer al gestore delle richieste associato.
Gestore richieste
Un gestore di richieste definito dall'applicazione e la relativa risorsa associata.

Proprietà

Tutti i sistemi di reattori sono a thread singolo per definizione, ma possono esistere in un ambiente multithread .

Benefici

Il modello del reattore separa completamente il codice specifico dell'applicazione dall'implementazione del reattore, il che significa che i componenti dell'applicazione possono essere suddivisi in parti modulari e riutilizzabili.

Limitazioni

Il modello del reattore può essere più difficile da eseguire il debug di un modello procedurale a causa del flusso di controllo invertito. Inoltre, chiamando solo i gestori delle richieste in modo sincrono, il pattern del reattore limita la massima concorrenza, specialmente su hardware multiprocessing simmetrico . La scalabilità del pattern del reattore è limitata non solo chiamando i gestori di richiesta in modo sincrono, ma anche dal demultiplexer.

Guarda anche

Riferimenti

link esterno