Vai al contenuto principale

Che cos'è uno Swarm?

Uno Swarm rappresenta un insieme dinamico di nodi che costituiscono un ecosistema di archiviazione distinto. I dati vengono frammentati, distribuiti e replicati all'interno di uno Swarm in base a configurazioni prestabilite.

L'architettura di ogni Swarm dimostra una notevole adattabilità, che varia da topologie piatte semplici a disposizioni complesse e multi-livello in più sedi. Questa versatilità aumenta significativamente la resilienza dei dati, l'efficienza della distribuzione e la robustezza dell'infrastruttura, anche in scenari limitati a pochi siti o data center.

Swarm overview

Panoramica dello Swarm

Uno Swarm è composto da Nexus, Nodi e Agenti, organizzati in Ring e raggruppati in Classi di ridondanza. Le prossime sezioni illustreranno in dettaglio ciascuno di questi componenti.

Nexus

Un Nexus è un sottoinsieme di nodi all'interno di uno Swarm, analogo alle “Availability Zone”, caratterizzati da una stretta relazione. Questa struttura consente di identificare nodi geograficamente vicini, come quelli situati nella stessa regione o che condividono una correlazione statistica significativa nelle probabilità di downtime o nelle prestazioni hardware.

Nel contesto delle installazioni di livello aziendale, un Nexus occupa tipicamente una posizione centrale all'interno dello stesso data center. Questo posizionamento strategico facilita una maggiore efficienza operativa e garantisce una gestione della rete più solida e coesa.

Un Nexus contiene una serie dinamica e potenzialmente vasta di nodi. Il numero di questi nodi non è fisso, ma è destinato a crescere nel tempo. La flessibilità e la scalabilità intrinseche dell'architettura Nexus la rendono una soluzione ideale per le esigenze di rete e i progressi tecnologici in continua evoluzione.

Nexus

Classe di ridondanza

Una Classe di ridondanza è una policy di protezione dei dati configurabile che definisce i livelli di distribuzione e tolleranza agli errori in uno sciame, definiti da una quintupla unica di parametri. Questi parametri sono stati progettati specificamente per ottimizzare la resilienza della rete e l'integrità dei dati nei sistemi distribuiti utilizzando il modello di correzione degli errori Reed-Solomon.

  • Ridondanza geografica: Definita dalle variabili geo_n e geo_k, la loro somma determina il numero totale di Nexus coinvolti nello Swarm. Qui geo_n rappresenta il numero di Nexus necessari per ricostruire i dati originali, mentre geo_k indica i Nexus aggiuntivi che forniscono ridondanza e fault tolerance. Questo garantisce una copertura robusta e un recupero efficace dei dati, riducendo al minimo il rischio di perdita di dati in ambienti di rete complessi.
  • Ridondanza locale: Definita dalle variabili local_n e local_k, la loro somma indica il numero totale di nodi all'interno di ciascun Nexus. Local_n è il numero di nodi essenziali per le operazioni sui dati e local_k aggiunge ridondanza, migliorando la resilienza di ciascun Nexus contro eventuali guasti ai nodi. A questo livello, l'algoritmo di correzione degli errori, Reed-Solomon, consente un recupero efficiente sfruttando la velocità della rete locale e la vicinanza degli agenti, garantendo l'integrità dei dati anche quando alcuni nodi si guastano.
  • Gruppo di affinità (AAG): Rappresentato dal parametro aag, definisce il numero massimo di nodi che possono risiedere sulla stessa macchina fisica. È fondamentale evitare l'eccessiva dipendenza da una singola macchina e ridurre il rischio di malfunzionamenti simultanei. In combinazione con l'algoritmo Reed-Solomon, si garantisce che i dati non solo siano distribuiti tra i nodi, ma anche tra macchine fisicamente separate, migliorando ulteriormente la robustezza della rete.

L'integrazione di questi parametri nella struttura Reed-Solomon fornisce un approccio completo alla ridondanza dei dati e alla correzione degli errori. Bilanciando il numero totale di Nexus e di nodi (n + k) con le esigenze di ridondanza (k) e regolando la distribuzione dei nodi attraverso il parametro aag, si salvaguarda dalla perdita e dalla corruzione dei dati. Ciò garantisce un'elevata disponibilità, affidabilità e resilienza dei dati nei sistemi distribuiti.

nota

L'overhead in spazio introdotto dalla classe di ridondanza è chiamato ratio ed è equivalente a ngeo+kgeongeo×nlocal+klocalnlocal\frac{n_{geo} + k_{geo}}{n_{geo}} \times \frac{n_{local} + k_{local}}{n_{local}}.

Redundancy Class

Ring

Un Ring è un insieme di agenti all'interno di uno Swarm, organizzati per garantire in modo collaborativo la disponibilità, l'integrità e la resilienza dei dati contro i guasti o i tempi di inattività.

I Ring operano sotto la governance di una specifica classe di ridondanza, che ne detta le regole operative, come la distribuzione dei dati, la replica e la tolleranza ai guasti. All'interno della stessa classe di ridondanza possono esistere più Ring, ognuno dei quali funge da unità indipendente nel fornire spazio di archiviazione.

Questa modularità consente la scalabilità: quando è necessario dello spazio aggiuntivo per una classe di ridondanza, è possibile creare nuovi Ring, assegnando i nodi necessari e allineandoli con le politiche di ridondanza di quella classe. Strutturando i nodi in Ring, il sistema bilancia l'efficienza dello storage, la tolleranza ai guasti e la flessibilità operativa.

nota

Un agente può fare parte di più Ring. All'interno di ciascun Ring, i nodi sono identificati in modo univoco da un numero sequenziale, che facilita le operazioni di reperimento e recupero dei dati.

Nodo

I nodi sono gli elementi costitutivi dello Swarm e influenzano direttamente la disponibilità, la resilienza e le prestazioni del servizio. Può essere fisico, come un server, o virtuale, come una macchina virtuale. Ogni nodo ospita un agent leggero e containerizzato che facilita la gestione all'interno del sistema, contribuendo alla sua capacità complessiva e partecipando alle operazioni di archiviazione e comunicazione dei dati.