Introduzione ai Framework di Streaming

Framework di Streaming Un'Introduzione Completa

Comprensione di alcune delle caratteristiche chiave da considerare nella valutazione e nel confronto delle tecnologie di streaming.

Foto di Joao Branco su Unsplash

Introduzione

Man mano che le architetture dei dati diventano sempre più mature, lo streaming non viene più considerato un lusso ma una tecnologia con una vasta gamma di applicazioni in diversi settori. A causa di limitazioni tecniche e di risorse, il batch processing è sempre stato il metodo preferito per elaborare e distribuire applicazioni, sebbene con lo sviluppo dei micro-batch e dei framework di streaming nativo nei sistemi distribuiti basati su Apache, lo streaming ad alta scala è diventato molto più accessibile (Figura 1).

Alcune applicazioni di esempio per l’utilizzo di sistemi di streaming possono essere l’elaborazione: dei dati delle transazioni per individuare anomalie, dei dati meteorologici, dei dati IoT provenienti da posizioni remote, del tracciamento della geolocalizzazione, ecc.

Figura 1: Batch vs Streaming (Immagine dell'autore).

Elaborazione in Tempo Reale vs Micro-Batch

Esistono due tipi chiave di sistemi di elaborazione in streaming: micro-batch e in tempo reale:

  • Nell’elaborazione in streaming in tempo reale, ogni record viene elaborato non appena diventa disponibile. Ciò può quindi risultare in sistemi con una latenza molto bassa, pronti per utilizzare immediatamente i dati in arrivo (ad es. rilevando transazioni fraudolente nei sistemi finanziari).
  • Nei sistemi di elaborazione in micro-batch, i punti dati non vengono elaborati uno per uno, ma in blocchi piccoli e restituiti dopo intervalli di tempo specifici o una volta raggiunta una dimensione di archiviazione massima. Questo tipo di approccio favorisce quindi l’alto throughput rispetto alla bassa latenza. Infine, i sistemi di micro-batch possono essere particolarmente utili se si intende eseguire operazioni complesse come aggregate (ad es. min, max, mean), join, ecc… all’istante prima di restituire i risultati in un sistema di archiviazione. L’elaborazione a micro-batch può quindi essere considerata un ottimo compromesso tra lo streaming puro e il batch quando si eseguono ad esempio compiti di reporting orario (ad es. temperatura media, ecc.).