2010-05-19 30 views
26

Sul mio team al lavoro, usiamo molto la tecnologia IBM MQ per le comunicazioni cross-application. Ho visto ultimamente su Hacker News e in altri luoghi su altre tecnologie MQ come RabbitMQ. Ho una comprensione di base di cosa si tratta (un'area comunemente controllata per inserire e ricevere messaggi), ma cosa voglio sapere in che cosa è esattamente utile? Come faccio a sapere dove voglio usarlo e quando? Perché non limitarsi a forme più rudimentali di messaggeria di interprocessi?Che cos'è un MQ e perché voglio usarlo?

risposta

40

Tutte le spiegazioni finora sono accurate e precise, ma potrebbe mancare qualcosa: uno dei principali vantaggi dell'accodamento dei messaggi: la resilienza.

Immagina: devi comunicare con due o tre altri sistemi. Un approccio comune in questi giorni saranno i servizi web, che vanno bene se hai bisogno di una risposta subito.

Tuttavia: i servizi Web possono essere disattivati ​​e non disponibili - cosa fai allora?Mettere il tuo messaggio in una coda di messaggi (che ha anche un componente sulla tua macchina/server) in genere funzionerà in questo scenario - il tuo messaggio non viene consegnato e quindi elaborato in questo momento - ma lo farà in seguito, quando l'altro parte del servizio ritorna online.

Quindi, in molti casi, l'uso di code di messaggi per connettere sistemi disparati è un modo più affidabile e più affidabile di inviare messaggi avanti e indietro. Non funziona bene per tutto (se si desidera conoscere il prezzo corrente dell' per MSFT, mettere la richiesta in coda potrebbe non essere la migliore delle idee) - ma in molti casi, come mettere un ordine nel vostro coda dei messaggi del fornitore, funziona molto bene e può aiutare ad alleviare alcuni dei problemi di affidabilità con altre tecnologie.

+0

Caso d'uso molto interessante, ha molto senso per me. Grazie! – daveslab

+1

Quindi cosa fai se il server MQ non funziona? Non è più resiliente di un servizio web, vero? –

+1

@RobHolmes: in genere, è ancora possibile * accodare * alla coda locale - verrà trasmesso al server di coda quando viene eseguito il backup - e ** sì **, ** È ** più resiliente di un Web tipico servizio ..... –

2

MQ sta semplicemente per Message Queue.

Si utilizzerà uno quando è necessario inviare in modo affidabile un messaggio tra processi/multipiattaforma/cross-application che non dipende dal tempo.

La coda messaggi riceve il messaggio, lo inserisce nella coda corretta e attende che l'applicazione recuperi il messaggio quando è pronto.

6

I sistemi di messaggi in coda dovrebbero fornire diversi bonus. Tra i più importanti ci sono il monitoraggio e il comportamento transazionale.

La progettazione transazionale è importante se si desidera essere immuni ai guasti, ad esempio un'interruzione di corrente. Immagina di voler notificare un sistema bancario di prelievo di denaro da ATM, e deve essere fatto esattamente una volta per ogni richiesta, indipendentemente dal fatto che i server abbiano temporaneamente fallito nel mezzo. I sistemi MQ consentono di coordinare le transazioni su più database, MQ e altri sistemi.

Inutile dire che tali sistemi sono molto lenti rispetto ai pipe denominati, al TCP o ad altri strumenti non transazionali. Se sono richieste prestazioni elevate, non si consente che i messaggi vengano scritti su disco. Al contrario, complicherà il tuo design - per ottenere una comunicazione AND affidabile e veloce, che spinge il progettista in trucchi davvero non banali.

sistemi MQ normalmente consentono agli utenti di guardare i contenuti della coda, scrivere plugin, queus chiaro, ecc

+0

Buona risposta, grazie per il vostro contributo! – daveslab

11

MQ è sinonimo di coda di messaggistica.

È un livello di astrazione che consente a più processi (probabilmente su macchine diverse) di comunicare tramite vari modelli (ad es., Punto a punto, pubblicazione subscribe, ecc.). A seconda dell'implementazione, può essere configurato per cose come affidabilità garantita, segnalazione di errori, sicurezza, scoperta, prestazioni, ecc.

Si può fare tutto questo manualmente con le prese, ma è molto difficile.

Ad esempio: si supponga di voler elaborare i processi, ma uno di essi può morire nel mezzo e successivamente riconnettersi. Come faresti a garantire che i messaggi temporanei non venissero persi? Le soluzioni MQ possono farlo per te.

0

Le code di messaggi costituiscono la base per molti dei modelli descritti nel classico manuale "Modelli di integrazione aziendale" e website.

0

riferimento: i servizi Web possono essere disattivati ​​e non disponibili - cosa fai allora? Come estensione a quello; cosa succede se la tua rete locale e il tuo pc locale sono bassi? Mentre aspetti che il sistema ripristini i sistemi dipendenti dipendenti altrove, in attesa che i dati abbiano bisogno di vedere un flusso di dati alternativo. Altrimenti, potrebbe non essere una risposta "in tempo reale" abbastanza buona per i requisiti di IOT (Internet of Things) di oggi e molto presto.

se si desidera una vera memoria parallela e non volatile di vari flussi FIFO (almeno in alcuni punti lungo la catena del segnale) utilizzare una memoria FPGA e FRAM. FRAM funziona a velocità di clock e i dispositivi FPGA possono essere riprogrammati al volo aggiungendo e portando via comunque molti flussi di dati paralleli indipendenti necessari (entro limiti stabiliti ovviamente).

Problemi correlati