Dal punto di vista logico, la computazione parallela e distribuita è svolta da diversi componenti, ognuno dei quali è responsabile di processare un semplice task specifico. Uno stream in input allo Storm Cluster è raccolto e gestito da un componente chiamato SPOUT. Storm considera gli streams come infinite sequenze di tuple. Secondo Storm le tuple sono liste
ordinate di oggetti, l'ordine è quello di arrivo delle informazioni. Uno SPOUT, legge lo stream in ingresso e incapsula i dati in tuple.
All'estrema sinistra della figura proposta è stato inserito il simbolo che i progettisti di Storm utilizzano per rappresentare uno SPOUT. Le tuple vengono passate ad uno o più componenti chiamati BOLT, che processa opportunamente queste tuple.
A sua volta, un BOLT può distribuire il risultato dell'elaborazione all'esterno dello Storm Cluster (quindi ad un sistema di terze parti) oppure passarli ad un altro BOLT che effettuerà altre operazioni sui dati già elaborati.
Il fulmine è il simbolo che i progettisti di Storm utilizzano per rappresentare un BOLT. L'insieme di tutti i componenti e delle connessioni è chiamato TOPOLOGY.
Nella figura proposta in precedenza è stata fornita la rappresentazione di un TOPOLOGY costituito da uno SPOUT e da BOLTS.
Chiariamo i concetti descritti con un esempio pratico, supponiamo quindi di essere di fronte ad un problema di streaming word count, cioè contare le occorrenze delle parole all'interno di uno stream continuo, e di voler aggiornare e presentare i risultati in real-time. Con Storm, sarà possibile progettare un TOPOLOGY che contenga:
- uno SPOUT che emetta continuamente frasi (o le legga da una risorsa esterna e le inoltri);
- un BOLT che prenda in ingresso il testo delle frasi e ne estrapoli le parole;
- un BOLT che effettui il conteggio delle occorrenze e restituisca il risultato.