Yahoo Pulsar è ora open source

La soluzione Yahoo si occupa di gestire su larga scala le comunicazioni tra varie applicazioni, presentandosi come un'alternativa ad Apache Kafka

Architettura di un cluster Pulsar - fonte Yahoo

Un cluster Pulsar. In ogni istanza possono essere presenti diversi cluster, anche separati geograficamente – Fonte blog Yahoo

Negli ultimi tempi si è assistito all’open sourcing di un crescente numero di progetti (abbiamo parlato recentemente dell’algoritmo di compressione Facebook ma possiamo citare anche PoweShell). L’ultimo contributo arriva direttamente da Yahoo che ha pubblicato i codici sorgente di Pulsar, un sistema di pub-sub (publish and subscribe) messagging. Il blog ufficiale della compagnia spiega in maniera dettagliata cosa sia esattamente un pub-sub system e come operi: in sintensi si tratta di un sistema di messaggistica grazie al quale più applicazioni possono comunicare tra loro.

Lo sviluppo di Pulsar venne avviato per soddisfare le esigenze di Yahoo, in cerca di un soluzione che fosse in grado di garantire scalabilità e basse latenze (nell’ordine dei 5 millisecondi):“quando abbiamo iniziato lo sviluppo, non siamo stati in grado di trovare alcuna alternativa di messagistica open source che potesse assicurare scalabilità, prestazioni e funzionalità richieste da Yahoo per fornire un servizio di messagging hosted ed il supporto a milioni di topic”.

Il deploy della prima istanza Pulsar, si legge nel blog, è stato effettuato nel secondo trimestre del 2015; da allora note applicazioni come Mail, Sports, Finance, Gemini Ads e Sherpa si appoggiano al sistema il cui utilizzo è aumentato esponenzialmente fino a raggiungere le seguenti cifre:

  • oltre 100 miliardi di messaggi pubblicati ogni giorno;
  • più di 1.4 milioni di topic;
  • tempo di latenza media di pubblicazione tra i servizi inferiori ai 5ms;
  • presente a livello globale in oltre 10 data center.

Architettura interna ed obiettivi futuri

In Pulsar  sono presenti due categorie, quella dei publisher (chi invia un messaggio) e quella dei subscribers (chi riceve il messaggio); i messaggi non sono tuttavia programmati per essere inviati ad uno specifico destinatario ma bensi suddivisi in classi e pubblicati senza che sia indicato alcun subscriber di riferimento. Ciascun cluster  si caratterizza per la presenza dei seguenti elementi:

  • una serie di broker. Il compito del broker è quello di distribuire le richieste degli admin ed i topic (di solito migliaia) che gli sono assegnati. I messaggi arrivano direttamente dai writer, sono successivamente affidati al durable storage ed infine passati ai reader.
  • Apache BookKeeper. Un progetto open source alla base del durable storage Pulsar.
  • Managed Ledger. “[…] rappresenta lo storage layer di un singolo topic. E’ l’astrazione di un flusso di messaggi con un singolo writer e reader multipli”.
  • ZooKeeper. Progetto open source, è un servizio che si occupa di coordinare applicazioni distribuite. Ogni cluster dispone di un ZooKeeper ensemble (un determinato numero di server che consente l’esecuzione del servizio). E’ presente anche Global ZooKeeper ensemble che si occupa di provisioning e della coerenza dei dati di configurazione a livello globale.
  • Load balancer. “E’ un servizio distribuito eseguito dai broker [che si occupa di ripartire equamente il traffico tra i broker disponibili]”

Con l’arrivo di Pulsar nell’ecosistema open source, Yahoo spera di accelerare i tempi di sviluppo del progetto e di implementare una serie di migliorie come la velocizzazione dei trasferimenti dei topic tra broker (da 10 secondi ad 1 secondo) e l’abbassamento dei tempi di latenza delle pubblicazioni. Alcuni siti specializzati, a fronte di quanto mostrato, si sono riferiti al progetto come una possibile alternativa ad Apache Kafka.

 

 

Facci sapere cosa ne pensi!

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