Abstract
Il lavoro di tesi, in collaborazione con LUNA S.r.l., documenta il backend di PETRA, piattaforma event-driven per l'acquisizione e l'analisi asincrona di flussi telemetrici multidimensionali ad alta frequenza (30-60 Hz). L'obiettivo è definire un'architettura veloce e scalabile su hardware on-premise limitato (4 core, 8 GB RAM). Per superare i limiti di accoppiamento e i blocchi da Garbage Collection di Java e Go, il sistema adotta un'architettura esagonale in Rust articolata su tre livelli: 1. Ingestion: Un SDK React/TypeScript scherma la rete; un proxy Pingora esegue l'autenticazione JWT e il tunneling dei blob binari direttamente su S3 (RustFS), mentre un API Gateway Axum riceve i soli metadati. 2. Brokerage: Un buffer in-memory su Valkey Streams distribuisce gli eventi at-least-once a Worker asincroni su runtime Tokio. 3. Analytics: I dati sono persistiti in formato Arrow/Parquet e interrogati tramite DuckLake (DuckDB embedded) e PostgreSQL per il catalogo, garantendo query OLAP sotto i 20 ms. Sono state risolte criticità distribuite chiave: la Data Explosion è mitigata dal layout colonnare Snappy (compressione 10:1) e da aggregazioni semantiche (riduzione del 67% dei record). La consistenza eventuale di S3 è gestita nel Reducer tramite Deferred Retry, mentre i messaggi bloccati per crash dei nodi sono recuperati da un Watchdog via XAUTOCLAIM. I tempi di build Docker sono ridotti da 30 a 2-5 minuti tramite cargo-chef e linker mold. I benchmark dimostrano un throughput del gateway di 28.400 req/s e una scalabilità lineare fino a 190 utenti concorrenti prima della saturazione, senza OOM o spike da GC. Il monitoraggio end-to-end è realizzato con OpenTelemetry, Prometheus, Grafana e Tempo.

Login