Articles

Che cos’è un sistema distribuito?

Posted on

Definizione

Un sistema distribuito, noto anche come calcolo distribuito, è un sistema con più componenti situati su macchine diverse che comunicano e coordinano le azioni in modo da apparire come un unico sistema coerente all’utente finale.

Panoramica

Le macchine che fanno parte di un sistema distribuito possono essere computer, server fisici, macchine virtuali, container, o qualsiasi altro nodo che può connettersi alla rete, avere memoria locale, e comunicare passando messaggi.

Ci sono due modi generali in cui i sistemi distribuiti funzionano:

  1. Ogni macchina lavora verso un obiettivo comune e l’utente finale vede i risultati come una unità coesa.
  2. Ogni macchina ha il suo utente finale e il sistema distribuito facilita la condivisione delle risorse o dei servizi di comunicazione.

Anche se i sistemi distribuiti possono a volte essere oscuri, di solito hanno tre caratteristiche principali: tutti i componenti girano simultaneamente, non c’è un orologio globale, e tutti i componenti falliscono indipendentemente l’uno dall’altro.

Benefici e sfide dei sistemi distribuiti

Ci sono tre ragioni per cui i team generalmente decidono di implementare sistemi distribuiti:

  • Scalabilità orizzontale – Poiché il calcolo avviene indipendentemente su ogni nodo, è facile e generalmente poco costoso aggiungere altri nodi e funzionalità se necessario.
  • Affidabilità – La maggior parte dei sistemi distribuiti sono tolleranti ai guasti poiché possono essere composti da centinaia di nodi che lavorano insieme. Il sistema generalmente non sperimenta alcuna interruzione se una singola macchina fallisce.
  • Prestazioni – I sistemi distribuiti sono estremamente efficienti perché i carichi di lavoro possono essere suddivisi e inviati a più macchine.

Tuttavia, i sistemi distribuiti non sono privi di sfide. I complessi processi di progettazione architettonica, costruzione e debug che sono necessari per creare un sistema distribuito efficace possono essere travolgenti.

Tre altre sfide che si possono incontrare includono:

  • Schedulazione-Un sistema distribuito deve decidere quali lavori devono essere eseguiti, quando devono essere eseguiti e dove devono essere eseguiti. Gli schedulatori alla fine hanno dei limiti, che portano a un hardware sottoutilizzato e a tempi di esecuzione imprevedibili.
  • Latenza – Più il vostro sistema è distribuito, più latenza si può verificare nelle comunicazioni. Questo spesso porta i team a fare compromessi tra disponibilità, coerenza e latenza.
  • Osservabilità: raccogliere, elaborare, presentare e monitorare le metriche di utilizzo dell’hardware per grandi cluster è una sfida significativa.

Come funziona un sistema distribuito

Le architetture hardware e software sono utilizzate per mantenere un sistema distribuito. Tutto deve essere interconnesso: le CPU attraverso la rete e i processi attraverso il sistema di comunicazione.

Tipi di sistemi distribuiti

I sistemi distribuiti generalmente rientrano in uno dei quattro diversi modelli di architettura di base:

  1. Client-server-I client contattano il server per i dati, poi li formattano e li mostrano all’utente finale. L’utente finale può anche fare un cambiamento dal lato client e commetterlo di nuovo al server per renderlo permanente.
  2. Three-tier-Informazioni sul client sono memorizzate in un livello intermedio piuttosto che sul client per semplificare la distribuzione dell’applicazione. Questo modello di architettura è più comune per le applicazioni web.
  3. n-tier-Generalmente usato quando un’applicazione o un server ha bisogno di inoltrare richieste ad altri servizi aziendali sulla rete.
  4. Peer-to-peer-Non ci sono macchine aggiuntive usate per fornire servizi o gestire risorse. Le responsabilità sono distribuite uniformemente tra le macchine del sistema, note come peer, che possono servire sia come client che come server.

Esempio di sistema distribuito

I sistemi distribuiti hanno infiniti casi d’uso, alcuni dei quali sono sistemi bancari elettronici, giochi online multiplayer di massa e reti di sensori.

StackPath utilizza un sistema distribuito particolarmente grande per alimentare il suo servizio di content delivery network. Ogni nostro punto di presenza (PoP) ha dei nodi che formano un sistema distribuito mondiale. E per fornire una consegna di contenuti di alto livello, StackPath memorizza i contenuti più recenti e più frequentemente richiesti nelle posizioni edge più vicine al luogo in cui vengono utilizzati.

Sistemi distribuiti all’edge

Con i servizi di calcolo edge di StackPath, le macchine virtuali e i container, gli utenti possono creare i propri sistemi distribuiti. Interconnettendo le VM e i container, e sfruttando la velocità e l’agilità dell’edge computing, il sistema può gestire migliaia di richieste simultanee alla velocità della luce.

Key Takeaways

  • I sistemi distribuiti possono essere composti da qualsiasi macchina capace di connettersi a una rete, avere memoria locale e comunicare passando messaggi.
  • Distribuendo le richieste e i carichi di lavoro, i sistemi distribuiti possono supportare molte più richieste e lavori di calcolo di un sistema singolo standard.
  • È possibile creare il proprio sistema distribuito veloce come un fulmine interconnettendo i container di edge computing e le macchine virtuali di StackPath.

Lascia un commento

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