Storm - Sistema di messaggistica distribuito
Apache Storm elabora i dati in tempo reale e l'input proviene normalmente da un sistema di accodamento dei messaggi. Un sistema di messaggistica distribuito esterno fornirà l'input necessario per il calcolo in tempo reale. Spout leggerà i dati dal sistema di messaggistica e li convertirà in tuple e li immetterà in Apache Storm. Il fatto interessante è che Apache Storm utilizza internamente il proprio sistema di messaggistica distribuito per la comunicazione tra il suo nimbus e il supervisore.
Cos'è il sistema di messaggistica distribuita?
La messaggistica distribuita si basa sul concetto di accodamento dei messaggi affidabile. I messaggi vengono accodati in modo asincrono tra le applicazioni client e i sistemi di messaggistica. Un sistema di messaggistica distribuito offre i vantaggi di affidabilità, scalabilità e persistenza.
La maggior parte degli schemi di messaggistica segue il publish-subscribe modello (semplicemente Pub-Sub) dove vengono chiamati i mittenti dei messaggi publishers e vengono chiamati coloro che vogliono ricevere i messaggi subscribers.
Una volta che il messaggio è stato pubblicato dal mittente, gli abbonati possono ricevere il messaggio selezionato con l'aiuto di un'opzione di filtro. Di solito abbiamo due tipi di filtri, uno ètopic-based filtering e un altro lo è content-based filtering.
Si noti che il modello pub-sub può comunicare solo tramite messaggi. È un'architettura molto vagamente accoppiata; anche i mittenti non sanno chi sono i loro iscritti. Molti dei modelli di messaggio consentono al broker di messaggi di scambiare messaggi di pubblicazione per un accesso tempestivo da parte di molti abbonati. Un esempio di vita reale è Dish TV, che pubblica diversi canali come sport, film, musica, ecc. E chiunque può iscriversi al proprio set di canali e ottenerli ogni volta che i canali a cui si è iscritti sono disponibili.
La tabella seguente descrive alcuni dei più diffusi sistemi di messaggistica ad alto rendimento:
Sistema di messaggistica distribuito | Descrizione |
---|---|
Apache Kafka | Kafka è stato sviluppato presso LinkedIn Corporation e in seguito è diventato un sottoprogetto di Apache. Apache Kafka si basa su un modello di pubblicazione-sottoscrizione distribuito, persistente e abilitato al broker. Kafka è veloce, scalabile e altamente efficiente. |
RabbitMQ | RabbitMQ è una robusta applicazione di messaggistica distribuita open source. È facile da usare e funziona su tutte le piattaforme. |
JMS (Java Message Service) | JMS è un'API open source che supporta la creazione, la lettura e l'invio di messaggi da un'applicazione all'altra. Fornisce la consegna dei messaggi garantita e segue il modello di pubblicazione-sottoscrizione. |
ActiveMQ | Il sistema di messaggistica ActiveMQ è un'API open source di JMS. |
ZeroMQ | ZeroMQ è l'elaborazione di messaggi peer-peer senza broker. Fornisce modelli di messaggi push-pull, router-dealer. |
Gheppio | Kestrel è una coda di messaggi distribuita veloce, affidabile e semplice. |
Protocollo parsimonioso
Thrift è stato creato su Facebook per lo sviluppo di servizi cross-language e RPC (Remote Procedure Call). Successivamente, è diventato un progetto Apache open source. Apache Thrift è un fileInterface Definition Language e consente di definire nuovi tipi di dati e implementazione di servizi in aggiunta ai tipi di dati definiti in modo semplice.
Apache Thrift è anche un framework di comunicazione che supporta sistemi embedded, applicazioni mobili, applicazioni web e molti altri linguaggi di programmazione. Alcune delle caratteristiche chiave associate ad Apache Thrift sono la sua modularità, flessibilità e alte prestazioni. Inoltre, può eseguire streaming, messaggistica e RPC in applicazioni distribuite.
Storm utilizza ampiamente il protocollo Thrift per la comunicazione interna e la definizione dei dati. La topologia Storm è sempliceThrift Structs. Storm Nimbus che esegue la topologia in Apache Storm è un fileThrift service.