Registrare e analizzare eventi con Microsoft Azure Event Hub e Stream Analytic

Sono passati molti anni da quando internet era per pochi e connetteva poche macchine sparse nel mondo. Ormai, infatti, soprattutto con la diffusione degli smartphone, i dispositivi connessi sono milioni: consumano servizi, memorizzano e scaricano informazioni. Questa tendenza è in continua crescita e nel prossimo futuro, grazie anche agli Internet of Thing (IoT), miliardi di dispositivi saranno connessi alla rete. Molti di questi dispositivi sono oggetti che mandano continuamente informazioni, come sensori, o addirittura delle automobili, e a questi si aggiungono le informazioni tracciate dai siti web o dalle app.

Tutte queste informazioni stanno mettendo a dura prova i tradizioni sistemi di memorizzazione, analisi e reportistica, tanto da dover creare strumenti specifici che siano in grado di soddisfare i requisiti attuali e futuri. Il cloud computing ovviamente segue e cerca di soddisfare queste esigenze; non manca quindi la risposta di Microsoft attraverso la sua piattaforma Azure. Lo fa fornendo due strumenti, non strettamente legati tra loro, ma che offrono il massimo se sfruttati assieme. Il primo è Event Hub, il quale permette di memorizzare milioni di eventi, mentre il secondo è Stream Analytic, il quale permette di processare eventi e di produrre delle informazioni al fine di produrre dei report.

In questo articolo affrontiamo quindi entrambi i servizi, partendo da come si configurano e si utilizzano da .NET anche se, come per tutti i servizi Azure, possono essere sfruttati da molteplici linguaggi e piattaforme.

Azure Event Hub

Lo scopo di Event Hub è piuttosto semplice: memorizzare eventi. Fornisce quindi un endpoint REST, consumabile di conseguenza da qualsiasi dispositivo, dove mandare l'evento. Quello che può sembrare un banale compito, però, può diventare un punto dolente nel momento in cui gli eventi sono migliaia, o milioni. Lo diventa dal punto di vista dello storage, che deve memorizzare e gestire queste informazioni, e lo diventa anche dal punto di vista del traffico e delle operazioni contemporanee che deve supportare. Event Hub si concentra su questo e ci garantisce prestazioni eccellenti e predicibili. Come per tutti i servizi Azure, è tutto completamente gestito e ci viene richiesto solo di dimensionare la capacità di ingresso del nostro hub.

Per iniziare facciamo sempre riferimento al portale di Azure, in particolare nella sezione Service Bus. E' necessario quindi avere un namespace e crearlo se non lo abbiamo già a disposizione. Con esso possiamo trovare altri servizi, come Relay, Queue, Topic e Subscription. Quest'ultimi, insieme a Storage Queue, possono essere considerati simili a Event Hub e potrebbero essere utilizzati per memorizzare eventi, ma Event Hub dispone di meno funzionalità che lo rendono più veloce e più adatto a questo lavoro. Procediamo quindi alla creazione di un hub, dove ci viene chiesto il nome e il namespace a cui associarlo.

Se abbiamo optato per la creazione personalizzata, ci viene proposta una seconda schermata dove possiamo configurare il partizionamento e i giorni di retention. Quest'ultimo, normalmente impostato su un giorno e incrementabile fino a 7 nella modalità standard, definisce quanti giorni gli eventi restano memorizzati. Può sembrare un limite, ma questo garantisce prestazioni. Inoltre, difficilmente tutti questi eventi vengono memorizzati per sempre, perché non danno valore aggiunto. Acquisiscono valore quando vengono processati e aggregati per produrre un altro tipo di dato. L'Event Hub permette quindi agli eventi di transitare temporaneamente in attesa del processamento.

Il partizionamento è un altro dei fattori importanti. Ogni partizione garantisce la sequenza degli eventi, di conseguenza più partizioni garantiscono più prestazioni e possibilità di scalare. I messaggi entrano in una partizione piuttosto che in un'altra, attraverso la proprietà PartitionKey che l'evento può possedere. Se omesso gli eventi vengono memorizzati tra le partizioni attraverso il meccanismo di round robin, se specificato, invece, permette agli eventi con la stessa chiave di finire nella stessa partizione. La chiave può essere l'id dell'utente, l'id del dispositivo e in generale un criterio che ci permetta di tenere in sequenza, e quindi aggregati, gli eventi appartenenti allo stesso gruppo logico.

Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

Registrare e analizzare eventi con Microsoft Azure Event Hub e Stream Analytic 1010 1
| Condividi su: Twitter, Facebook, LinkedIn, Google+

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti