Che cos'รจ il protocollo AMQP (Advanced Message Queuing Protocol)?

27 Marzo 2024

Il protocollo AMQP (Advanced Message Queuing Protocol) รจ un protocollo a livello di applicazione standard aperto per i messaggi orientati middleware, con particolare attenzione all'accodamento dei messaggi, al routing (punto a punto e pubblicazione e sottoscrizione), all'affidabilitร  e alla sicurezza.

A differenza dei sistemi di messaggistica proprietari, AMQP รจ un protocollo aperto e standardizzato che consente l'interoperabilitร  tra sistemi e applicazioni. Consente alle applicazioni di comunicare e scambiarsi messaggi in modo affidabile e scalabile, indipendentemente dalla piattaforma, dall'architettura o dal linguaggio sottostante. Questa capacitร  lo rende uno strumento essenziale per costruire sistemi distribuiti complessi o integrare ambienti eterogenei.

AMQP opera su un'architettura basata su broker, in cui il broker di messaggistica funge da intermediario che riceve messaggi dai produttori (invio applicazioni) e instrada questi messaggi ai consumatori appropriati (la ricezione delle applicazioni). Questo modello disaccoppia produttore e consumatore, consentendo loro di operare in modo indipendente.

Il protocollo definisce un insieme di componenti come code di messaggi, scambi e collegamenti che aiutano nel flexinstradamento e consegna dei messaggi. Inoltre, AMQP specifica sia il comportamento di intermediario di messaggistica e il protocollo di messaggistica stesso, garantendo una consegna affidabile dei messaggi attraverso funzionalitร  come il riconoscimento dei messaggi, code durevoli e la persistenza dei messaggi.

Una breve storia dell'AMQP

AMQP รจ nato dall'esigenza di un protocollo standardizzato, aperto e interoperabile per il middleware di messaggistica. Il suo sviluppo รจ iniziato nel 2003, quando John O'Hara della JPMorgan Chase di Londra ha riconosciuto i limiti e i costi dell'utilizzo di sistemi di messaggistica proprietari per l'integrazione delle applicazioni. L'obiettivo era creare un protocollo per facilitare la comunicazione orientata ai messaggi tra diverse piattaforme e tecnologie, riducendo la dipendenza da fornitori specifici e sistemi proprietari. La prima versione ufficiale di AMQP, AMQP 0-9-1, รจ stata rilasciata nel 2006.

Il rilascio di AMQP 1.0 nell'ottobre 2011 ha segnato una pietra miliare significativa. AMQP 1.0 ha introdotto importanti modifiche, rendendo il protocollo ancora piรน potente flexflessibile e interoperabile definendo un protocollo binario a livello di cavo indipendente dal linguaggio che puรฒ essere implementato su qualsiasi piattaforma. Questa versione di AMQP ha ricevuto un ampio sostegno da parte del settore ed รจ stata ratificata come standard internazionale dall'Organizzazione internazionale per la standardizzazione (ISO) e dalla Commissione elettrotecnica internazionale (IEC) nel 2014 come ISO/IEC 19464.

Da allora, AMQP รจ stato adottato a livello globale per varie applicazioni, che vanno dai servizi finanziari ai servizi finanziari IoT (Internet of Things) ed cloud informatica.

Come funziona l'AMQP?

AMQP (Advanced Message Queuing Protocol) opera attraverso un framework meticolosamente progettato che orchestra il flusso di messaggi tra produttori e consumatori in modo affidabile, sicuro ed efficiente.

Fondamentalmente, il protocollo utilizza un'architettura basata su broker che funge da intermediario, gestendo i percorsi di comunicazione all'interno del sistema di messaggistica. I produttori inviano messaggi al broker, specificando non solo il contenuto ma anche gli aspetti critici metadati, come le chiavi di instradamento e le prioritร  dei messaggi. Questo broker si assume quindi la responsabilitร  di elaborare questi messaggi, determinandone le destinazioni appropriate in base alla logica di instradamento stabilita.

L'instradamento dei messaggi all'interno di AMQP รจ facilitato dagli scambi, che classificano i messaggi e li indirizzano alle code corrette in base a regole predefinite e al tipo di scambio utilizzato. Questa configurazione consente una varietร  di modelli di messaggistica, dalla semplice messaggistica punto a punto a modelli di pubblicazione-sottoscrizione piรน complessi. Le code archiviano temporaneamente i messaggi, garantendo che siano conservati in modo sicuro finchรฉ un consumatore non รจ pronto a elaborarli. Dopo aver ricevuto un messaggio, i consumatori possono confermarne l'elaborazione, segnalando al broker di rimuovere il messaggio dalla coda, mantenendo cosรฌ l'integritร  e l'ordine della consegna del messaggio.

Questa sofisticata interazione tra i componenti di AMQP garantisce che i messaggi non solo vengano consegnati in modo efficiente ma anche con un elevato grado di affidabilitร  e sicurezza. Il protocollo supporta funzionalitร  avanzate come il riconoscimento dei messaggi, le transazioni e la messaggistica duratura, essenziali per le applicazioni che richiedono la consegna garantita dei messaggi e la capacitร  di ripristino in caso di errori di sistema. Inoltre, i meccanismi di sicurezza di AMQP, incluso SASL per autenticazione e TLS per crittografare i dati in transito.

Componenti AMQP

AMQP facilita la messaggistica complessa attraverso una serie di componenti principali che interagiscono in modo strutturato. Questi componenti sono fondamentali per l'architettura AMQP, poichรฉ le consentono di supportare un'ampia varietร  di modelli di messaggistica. Ecco un elenco e una spiegazione di questi componenti chiave:

  • Broker. Il broker funge da intermediario tra i produttori di messaggi (mittenti) e i consumatori (destinatari). รˆ responsabile di ricevere messaggi dai produttori, instradarli in modo appropriato e consegnarli ai consumatori previsti. Il broker garantisce che i messaggi vengano archiviati, gestiti e inoltrati in modo efficiente, fornendo affidabilitร  e scalabilitร  al sistema di messaggistica.
  • Produttore. Il produttore, noto anche come editore, รจ un'applicazione o un servizio che invia messaggi. I produttori creano messaggi e li inviano a uno scambio all'interno del broker, spesso senza conoscere i consumatori specifici che riceveranno i messaggi. Ciรฒ disaccoppia le parti di invio e di ricezione del sistema, migliorando flexbilitร  e scalabilitร .
  • Consumatore. Un consumatore รจ un'applicazione o un servizio che riceve messaggi. I consumatori si iscrivono a una coda all'interno del broker ed elaborano i messaggi non appena arrivano. I consumatori possono riconoscere i messaggi una volta elaborati, il che informa il broker che il messaggio puรฒ essere rimosso in sicurezza dalla coda.
  • Exchange. Gli scambi sono entitร  AMQP in cui i produttori inviano messaggi. Uno scambio riceve e instrada i messaggi a una o piรน code in base alla chiave di instradamento del messaggio, al tipo di scambio e ai collegamenti. Gli scambi disaccoppiano i produttori dalle code, consentendo una logica di instradamento piรน complessa. Esistono diversi tipi di scambi, tra cui:
    • Scambio diretto. Instrada i messaggi alle code in base a una chiave di routing corrispondente.
    • Scambio di fan-out. Trasmette messaggi a tutte le code legate senza considerare le chiavi di routing.
    • Scambio di argomenti. Instrada i messaggi alle code in base alle corrispondenze con caratteri jolly tra la chiave di routing e il modello di routing specificato nell'associazione.
    • Scambio di intestazioni. Instrada i messaggi in base ai valori di intestazione corrispondenti anzichรฉ alle chiavi di instradamento.
  • Fare la fila. Una coda รจ un buffer che memorizza i messaggi finchรฉ non possono essere elaborati in modo sicuro da un consumatore. Le code garantiscono che i messaggi vengano consegnati ai consumatori in ordine "primo arrivato, primo servito", sebbene sia possibile impostare le prioritร . I consumatori si iscrivono alle code per ricevere messaggi.
  • Rilegatura. I vincoli sono regole che collegano le code agli scambi. Un'associazione puรฒ includere una chiave o un modello di instradamento che determina il modo in cui i messaggi devono essere instradati dallo scambio alla coda. I collegamenti determinano la relazione tra scambi e code, controllando il modo in cui i messaggi vengono filtrati e instradati all'interno del broker.
  • Chiave di instradamento. Una chiave di instradamento รจ un'etichetta o un identificatore che i produttori allegano ai messaggi quando vengono inviati a uno scambio. Il valore della chiave di instradamento viene utilizzato dallo scambio, insieme alle configurazioni di collegamento, per determinare quali code dovrebbero ricevere il messaggio.
  • Messaggio. Il messaggio sono i dati trasportati tra il produttore e il consumatore. รˆ costituito da un payload (i dati effettivi da trasmettere) e da intestazioni o proprietร  (metadati sul messaggio, come tipo, prioritร  e modalitร  di consegna).
  • Canale. Un canale รจ una connessione virtuale all'interno di una connessione di rete fisica. I canali aiutano a multiplexare la connessione di rete tra il client AMQP (produttore/consumatore) e il broker per una comunicazione piรน efficiente.
  • Host virtuale (vHost). Un host virtuale fornisce un modo per separare le applicazioni utilizzando lo stesso broker AMQP. Ogni host virtuale puรฒ avere il proprio set indipendente di scambi, code e collegamenti.

Casi d'uso AMQP

AMQP รจ un protocollo di messaggistica versatile che supporta un'ampia gamma di casi d'uso in vari settori e applicazioni. Il suo robusto set di funzionalitร , tra cui accodamento dei messaggi, routing, affidabilitร  e sicurezza, lo rende adatto a sistemi complessi, distribuiti e scalabili. Ecco alcuni casi d'uso chiave per AMQP:

  • Integrazione delle applicazioni aziendali. AMQP consente applicazioni, sistemi e banche dati comunicare e scambiare dati in modo affidabile e sicuro. Ciรฒ รจ particolarmente utile in ambienti eterogenei in cui le applicazioni sono realizzate su piattaforme e tecnologie diverse che devono lavorare insieme senza problemi.
  • Sistemi disaccoppiati. In architetture di microservizi o quando si implementano architetture orientate ai servizi (SOA), AMQP consente ai servizi di comunicare senza essere strettamente collegati tra loro. Questo disaccoppiamento migliora la scalabilitร  e la resilienza del sistema, poichรฉ i servizi possono essere sviluppati, distribuiti e scalati in modo indipendente.
  • Elaborazione dei dati in tempo reale. AMQP viene utilizzato negli scenari che richiedono dati in tempo reale elaborazione, come l'analisi dello streaming, in cui i dati devono essere raccolti, elaborati e analizzati immediatamente. Il protocollo garantisce la consegna affidabile dei messaggi, anche durante guasti di rete o ritardi di elaborazione.
  • Bilancio del carico. AMQP puรฒ distribuire attivitร  o carichi di lavoro tra piรน processi o servizi di lavoro, aiutando a bilanciare il carico e migliorare lโ€™efficienza complessiva e la reattivitร  del sistema. Questa funzionalitร  รจ particolarmente utile in cloud ambienti informatici e di elaborazione distribuiti con carichi di lavoro imprevedibili.
  • Comunicazione asincrona. AMQP supporta modelli di comunicazione asincroni, consentendo alle applicazioni di inviare e ricevere messaggi senza bloccare le operazioni. Questo tipo di comunicazione รจ fondamentale per le applicazioni che richiedono un throughput elevato e una bassa latenza, poichรฉ consente loro di rimanere reattive durante l'attesa dei messaggi.
  • Internet delle cose (IoT). Nelle applicazioni IoT, AMQP viene utilizzato per raccogliere dati da vari sensori e dispositivi e trasmetterli a sistemi di elaborazione o cloud Servizi. La sua capacitร  di operare su reti limitate e la sua messaggistica sicura e affidabile lo rendono una scelta eccellente per gli scenari IoT.
  • Servizi finanziari. AMQP รจ utilizzato nel settore finanziario per l'elaborazione delle transazioni, i sistemi di trading in tempo reale e l'elaborazione dei pagamenti. La sua affidabilitร  e il supporto per la messaggistica transazionale garantiscono l'integritร  e la coerenza delle transazioni finanziarie.
  • Notifiche e avvisi. AMQP puรฒ essere utilizzato per implementare sistemi di notifica, in cui avvisi, notifiche o e-mail vengono inviati a utenti o sistemi in risposta a eventi o condizioni specifici. La sua messaggistica affidabile garantisce che le notifiche vengano consegnate anche se il destinatario รจ temporaneamente non disponibile.
  • Assistenza sanitaria. Nel settore sanitario, AMQP consente una comunicazione sicura e affidabile tra diversi sistemi, come le cartelle cliniche, la fatturazione e le apparecchiature diagnostiche. Garantisce che i dati sensibili siano trasmessi in modo sicuro e trattati nel rispetto delle normative.

AMQP contro MQTT

AMQP e MQTT (Message Queuing Telemetry Transport) sono entrambi protocolli progettati per middleware orientato ai messaggi, ma hanno scopi diversi e sono ottimizzati per casi d'uso diversi.

AMQP รจ un protocollo piรน ricco di funzionalitร , che fornisce un'ampia gamma di funzionalitร  di messaggistica, tra cui accodamento dei messaggi, routing, gestione delle transazioni e sicurezza. Il suo modello รจ intrinsecamente piรน complesso e flexflessibile, offrendo robustezza per i sistemi che necessitano di un controllo preciso sui comportamenti di messaggistica e sulle integrazioni su diverse piattaforme.

Dโ€™altra parte, MQTT รจ progettato per essere semplice e leggero. Questo protocollo segue uno schema di pubblicazione-sottoscrizione, eccellendo in scenari che richiedono pacchetti di dati minimi e una distribuzione efficiente dei messaggi a piรน consumatori. MQTT รจ caratterizzato dal basso consumo energetico e dalla facilitร  di implementazione su dispositivi con capacitร  di elaborazione limitate, che lo rendono ideale per la messaggistica in tempo reale negli ecosistemi IoT.

Ecco una panoramica di questi confronti:

Punto di confrontoAMQPMQTT
Obiettivo di progettazioneProgettato per modelli di messaggistica complessi e integrazione aziendale.Progettato per la messaggistica leggera, principalmente negli scenari IoT.
Overhead del protocolloSuperiore grazie a un set di funzionalitร  piรน completo.Inferiore, ottimizzato per un utilizzo minimo della larghezza di banda.
Modello di messaggisticaSupporta modelli punto a punto e pubblicazione-sottoscrizione, insieme a routing avanzato, transazioni e accodamento di messaggi.Utilizza principalmente un modello di pubblicazione-sottoscrizione, con minore attenzione al routing dei messaggi.
Quality of Service (QoS)Fornisce vari livelli di garanzia di recapito dei messaggi, incluso il recapito al massimo una volta, almeno una volta e esattamente una volta.Offre tre livelli di QoS: 0 (al massimo una volta), 1 (almeno una volta) e 2 (esattamente una volta).
Casi d'usoIdeale per l'integrazione di applicazioni aziendali, processi aziendali complessi e situazioni che richiedono la consegna affidabile dei messaggi e il supporto delle transazioni.Ideale per connettere dispositivi IoT, soprattutto in ambienti con larghezza di banda e potenza limitate.
Flexabilitร  e complessitร Piรน complesso a causa di un'ampia gamma di funzionalitร , che richiedono maggiori conoscenze per un'implementazione efficace.Piรน semplice e diretto, facilitando l'implementazione in ambienti limitati.
SicurezzaFornisce funzionalitร  di sicurezza complete, tra cui autenticazione e crittografia.Supporta meccanismi di sicurezza di base ma spesso fa affidamento sulla sicurezza di rete sottostante.
Interoperabilitร Progettato per consentire l'interoperabilitร  tra diversi sistemi e fornitori, rendendolo adatto ad ambienti aziendali con diverse tecnologie.Focalizzato sull'interoperabilitร  nel contesto dei dispositivi e delle piattaforme IoT.

Anastasia
Spasojevic
Anastazija รจ una scrittrice di contenuti esperta con conoscenza e passione per cloud informatica, informatica e sicurezza online. A phoenixNAP, si concentra sulla risposta a domande scottanti su come garantire la robustezza e la sicurezza dei dati per tutti i partecipanti al panorama digitale.