2013-03-24 13 views
14

Sto cercando un'analogia che possa aiutarmi a capire la differenza tra il modo in cui un sever basato su thread gestisce le richieste HTTP e il modo in cui un server basato su eventi gestisce le richieste http. Diciamo che un server è un negozio in un edificio, la porta 80 è la porta principale del negozio e una richiesta http è un cliente che è appena entrato dalla porta principale. Cosa succede dopo? In che modo il negozio gestisce il cliente? In che modo il negozio gestisce diversi clienti e che differenza fa in termini di velocità con cui un cliente lascia il negozio?Qual è la differenza tra un server basato su thread e un server basato su eventi?

In breve, sto cercando una spiegazione di cose come "event loop" e "thread" e "blocking" e "non-blocking" in termini di analogia fisica, nel mondo reale.

risposta

21

Nell'analogia del server basata su thread, ogni cliente viene servito dal proprio dipendente del negozio. Quando il cliente lascia, il dipendente del negozio può aiutare un altro cliente. Il numero di dipendenti che possono essere aiutati simultaneamente è direttamente legato al numero di dipendenti del negozio.

Nell'analogia del server basata su eventi, più clienti potrebbero essere serviti da un singolo dipendente del negozio: chiamiamolo Bob. Bob delega vari passaggi che potrebbero richiedere un po 'di tempo (come "trovarmi l'elemento x nella stanza sul retro") ad altri dipendenti del negozio. Quando Bob chiede aiuto ad un aiutante, l'aiutante si precipita da qualche altra parte nel negozio e Bob può andare avanti per aiutare altri clienti mentre il cliente originale aspetta che l'aiutante torni da Bob. Quando l'helper torna, dopo aver terminato il proprio compito, aspetteranno che Bob raggiunga un buon punto di arresto con l'attuale cliente di Bob, quindi Bob potrà parlare nuovamente con l'aiutante e il cliente originale.

+0

Bob è la cosa che chiamano un ciclo di eventi? –

+0

Praticamente, anche se non esattamente. –

Problemi correlati