Caratteristiche di un sistema Publish-Subscribe in informatica

Caratteristiche di un sistema Publish-Subscribe in informatica

Un sistema Publish-Subscribe è essenzialmente costituito da un insieme di client che scambiano eventi tra di loro in modo asincrono comportandosi, secondo il caso, da produttori o consumatori di informazione. Un’entità logica, chiamata event notification service (ENS), agisce come mezzo di interconnessione, garantendo il disaccoppiamento tra i publisher ed i subscriber.

Caratteristiche di un sistema Publish-Subscribe in informatica

Un evento è costituito da dati strutturati solitamente secondo uno schema nome-valore. Per riprendere l’esempio precedentemente visto, un possibile evento nel sistema di monitoring delle quotazioni azionarie potrebbe essere [titolo “ACME INC”, valore=125.50].
Un evento può essere visto come un punto all’interno di uno spazio n-dimensionale: se infatti immaginiamo che ciascuno degli n attributi definiti negli eventi rappresenti una coordinata in uno spazio fittizio, un singolo evento definisce un valore specifico per ogni coordinata, identificando quindi un punto nello spazio. Questo spazio fittizio è chiamato event-space ed è una caratteristica di ogni applicazione basata sull’uso del paradigma Publish-Subscribe.

Ogni subscriber dichiara a quali eventi è interessato tramite l’invio all’ENS di sottoscrizioni. Ogni sottoscrizione contiene un insieme di regole che l’ENS userà per filtrare gli eventi pubblicati e notificare quindi al subscriber solo quelli di suo effettivo interesse.
All’interno dell’event-space una sottoscrizione è rappresentabile come un sottospazio definito dai singoli filtri che la compongono. In questo modo l’interesse di una sottoscrizione verso un evento può essere facilmente verificato controllando l’intersezione nell’event-space tra la sottoscrizione e l’evento (questa operazione è detta matching dell’evento con la sottoscrizione).
L’inserimento di nuove sottoscrizioni o l’eliminazione di sottoscrizioni esistenti avviene tramite l’uso delle primitive subscribe() ed unsubscribe() sull’API (Application Programming Interface) esposta dell’ENS.
I publisher inseriscono eventi nel sistema tramite la primitiva notify() sull’API dell’ENS; questi provvederà quindi a notificare l’evento ai subscriber interessati tramite l’uso della stessa primitiva sull’API di ogni singolo subscriber.

L’ENS è un’entità che funge quindi da mediatore tra tutti i publisher e tutti i subscriber mascherando l’infrastruttura che permette la comunicazione tra essi. Questa entità è un astrazione la cui implementazione varia in modo significativo da sistema a sistema. Nei primi esempi di sistemi Publish-Subscribe l’ENS era realizzato in modo centralizzato con un programma in funzione su un singolo server a cui facevano riferimento tutti i publisher e tutti i subscriber. In seguito ci si è resi conto che un’implementazione centralizzata non poteva in alcun modo porre rimedio ai problemi di scalabilità propri delle architetture client/server, e si è quindi passati ad implementazioni distribuite. In queste ultime l’ENS è composto da un insieme di processi indipendenti, chiamati broker, e posti su host distinti che interagiscono per portare a compimento tutte le operazioni richieste.
In ogni caso, il tipo di implementazione usato per l’ENS è un fattore che rimane completamente trasparente, sia ai publisher che ai subscriber, i quali interagiscono con esso esclusivamente tramite l’API che esso espone.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *