Caratteristiche dei sistemi distribuiti, architettura, tipi, obiettivi, applicazioni

1858
Basil Manning
Caratteristiche dei sistemi distribuiti, architettura, tipi, obiettivi, applicazioni

Il Sistemi distribuiti sono pezzi di software che servono a coordinare le azioni di diversi computer. Questo coordinamento si ottiene attraverso lo scambio di messaggi, cioè con pezzi di dati che trasmettono informazioni.

I sistemi distribuiti richiedono componenti concorrenti, una rete di comunicazione e un meccanismo di sincronizzazione. Consentono la condivisione di risorse, compreso il software, da parte dei sistemi connessi a una rete. Pertanto, il sistema si basa su una rete che collega i computer e gestisce l'instradamento dei messaggi..

aeb (sistemi distribuiti). b (sistema parallelo). Miym / CC BY-SA (https://creativecommons.org/licenses/by-sa/3.0)

Il calcolo distribuito è un'area dell'informatica responsabile dell'analisi dei sistemi distribuiti. Il programma per computer che gira su un sistema distribuito è chiamato programma distribuito.

In un contesto in cui possono esserci centinaia o migliaia di computer, che è una proporzione comune nelle grandi società Internet, è molto comune che ci siano guasti ai componenti, siano essi hardware, rete, dischi, ecc., E il sistema deve essere preparato per affrontarli in ogni momento.

Indice articolo

  • 1 Distribuzione dei dati
  • 2 Caratteristiche dei sistemi distribuiti
    • 2.1 Compatibilità
    • 2.2 Tolleranza ai guasti
    • 2.3 Middleware e API
  • 3 Architettura
    • 3.1 Architettura client-server
    • 3.2 Architettura peer-to-peer
    • 3.3 Architetture multilivello
    • 3.4 Architettura del gruppo di processori
  • 4 Tipi di sistemi distribuiti
    • 4.1 Cluster computing
    • 4.2 Elaborazione in rete
    • 4.3 Cloud computing
  • 5 Obiettivi
    • 5.1 Condivisione delle risorse
    • 5.2 Astrazione
    • 5.3 Apertura
    • 5.4 Interoperabilità e portabilità
    • 5.5 Scalabilità
  • 6 Applicazioni
    • 6.1 Macchina virtuale Erlang
    • 6.2 BitTorrent
  • 7 vantaggi
  • 8 Svantaggi
  • 9 Esempi di sistemi distribuiti
    • 9.1 StackPath
    • 9.2 Internet
  • 10 riferimenti

Distribuzione dei dati

La distribuzione è fondamentale per poter gestire cluster di dati di grandi dimensioni. Necessario per la scalabilità, che è il mezzo per mantenere prestazioni stabili quando i pool di dati crescono aggiungendo nuove risorse al sistema.

D'altra parte, la distribuzione presenta una serie di problemi tecnici che rendono importante considerare la progettazione e l'implementazione del calcolo e dell'archiviazione distribuiti. Un punto da tenere in considerazione è il rischio di possibili guasti.

Caratteristiche dei sistemi distribuiti

aeb (sistemi distribuiti). b (sistema parallelo). Miym / CC BY-SA (https://creativecommons.org/licenses/by-sa/3.0)

Compatibilità

I dispositivi possono funzionare con diversi sistemi operativi. Ciò non impedisce loro di offrire sempre gli stessi servizi agli utenti. Per questo motivo, tutti i dispositivi collegati sono compatibili tra loro..

Un altro aspetto fondamentale è il design del software, perché è anche compatibile con tutti i sistemi e gli utenti che si trovano su ogni computer..

Tolleranza ai guasti

Essendo un'unica rete con molti computer, se uno qualsiasi dei suoi componenti si guasta, gli altri possono continuare a svolgere pienamente la loro funzione, evitando rapidamente errori.

Per questo motivo, i sistemi distribuiti tendono a fornire molta fiducia quando si lavora con loro, perché è abbastanza raro che il sistema fallisca completamente, perché le attività non risiedono in un singolo dispositivo, ma in computer diversi.

Middleware e API

Processori differenti utilizzano middleware di distribuzione, aiutando a condividere risorse e capacità differenti per fornire agli utenti una rete coerente e integrata. Offre inoltre alle applicazioni una serie di servizi, come la sicurezza e il ripristino in caso di arresto anomalo.

Oggi si sente di più sulle interfacce di programmazione delle applicazioni (API), che funzionano come un gateway attraverso il quale le applicazioni possono comunicare. Le app non devono sapere nulla di altre app tranne la loro API.

Architettura

Architettura client-server

Un particolare computer chiamato server può eseguire determinate attività, chiamate servizi. Ad esempio, la fornitura di file in rete, la capacità di eseguire determinati comandi o di instradare i dati a una stampante. Il client è il computer che richiede i servizi.

Il computer noto principalmente per il servizio che fornisce può essere chiamato server di stampa, file server, ecc..

Architettura peer-to-peer

Si presume che ogni computer abbia capacità simili e che nessuna macchina sia dedicata a servire gli altri. Un esempio di ciò è un insieme di microcomputer in un piccolo ufficio.

La rete consente alle persone di accedere ai file degli altri e di inviare e-mail, ma nessun computer fornisce un insieme specifico di servizi.

Architetture multilivello

Per alcuni servizi può avere senso avere una connettività gerarchica. Per esempio:

  • Un server durante l'esecuzione delle sue attività può contattare un altro server di tipo diverso
  • L'architettura client-server è un'architettura a due livelli.

Architettura del gruppo di processori

Un sistema operativo potrebbe avviare automaticamente i processi su computer inattivi e persino migrare i processi su sistemi con un numero maggiore di cicli CPU disponibili. In altri casi, un utente può avviare o spostare manualmente i processi sui sistemi disponibili.

Tipi di sistemi distribuiti

Cluster computing

È un insieme di computer simili collegati tramite una rete locale ad alta velocità. Viene spesso utilizzato per la programmazione parallela, in cui un singolo programma ad alta intensità di calcolo viene eseguito in parallelo su più computer.

Ogni cluster è costituito da un insieme di nodi di calcolo che vengono monitorati e gestiti da uno o più nodi chiamati master..

Elaborazione di rete

È costituito da nodi con marcate differenze nell'hardware e nella tecnologia di rete. L'attuale tendenza ad avere una configurazione specifica dei nodi per determinati compiti ha portato a una maggiore diversità, che è la più comune nel network computing.

Cloud computing

È un insieme di risorse virtualizzate ospitate nel data center di un fornitore di servizi cloud. I clienti possono stabilire un'infrastruttura virtualizzata per sfruttare una varietà di servizi cloud.

All'utente sembra che stia noleggiando il proprio computer esclusivo. Tuttavia, è probabile che tu lo condivida con altri clienti. Lo stesso vale per l'archiviazione virtuale.

Queste risorse virtualizzate possono essere configurate dinamicamente, consentendo così la scalabilità. Se sono necessarie più risorse di elaborazione, il sistema può acquisirne di più.

obiettivi

Condividi risorse

Che si tratti di strutture di archiviazione, file di dati, servizi o reti, potresti voler condividere queste risorse tra le applicazioni, per una semplice economia.

È molto più economico disporre di una struttura di archiviazione condivisa tra più applicazioni piuttosto che acquistare e mantenere l'archiviazione per ciascuna di esse separatamente..

Astrazione

Per nascondere che i processi e le risorse sono distribuiti su più computer, possibilmente dispersi geograficamente. Cioè, i processi e le risorse sono astratti dall'utente.

Apertura

Fondamentalmente indica che un sistema distribuito è costruito con elementi che possono essere facilmente integrati con altri sistemi. Conformemente alle regole standardizzate, qualsiasi processo con quell'interfaccia può comunicare con un altro processo con la stessa interfaccia.

Interoperabilità e portabilità

Si riferisce a quando due sistemi di produttori diversi possono lavorare insieme. La portabilità determina la misura in cui un'applicazione realizzata per il sistema A può funzionare sul sistema B senza modifiche..

Scalabilità

È necessario quando c'è un aumento degli utenti che necessitano di più risorse. Un buon esempio è l'aumento del pubblico di Netflix ogni venerdì sera.

Significa aggiungere dinamicamente più risorse, come aumentare la capacità di rete consentendo più trasmissione video e ridurla una volta che il consumo si è normalizzato.

Applicazioni

Macchina virtuale Erlang

Il pacchetto software LYME è basato su Erlang e offre un'alternativa a LAMP. Shmuel Csaba Otto Traian / CC BY-SA (https://creativecommons.org/licenses/by-sa/3.0)

Erlang è un linguaggio funzionale con un'ottima semantica per la concorrenza, la distribuzione e la tolleranza agli errori. Una macchina virtuale Erlang gestisce la distribuzione di un'applicazione Erlang.

Questo modello funziona avendo molti processi isolati, tutti con la capacità di comunicare tra loro attraverso un sistema di trasmissione di messaggi integrato..

La macchina virtuale Erlang può connettersi ad altre macchine virtuali che si trovano in luoghi diversi. Questo sciame di macchine virtuali esegue una singola applicazione, gestendo i guasti di una macchina pianificandone l'esecuzione su un altro nodo..

Bittorrent

Operazione di rete BitTorrent. Mrjavi / CC BY-SA (https://creativecommons.org/licenses/by-sa/4.0)

È uno dei protocolli più utilizzati per il trasferimento di file di grandi dimensioni sul web. L'idea principale è quella di facilitare il trasferimento di file tra diversi peer sulla rete senza dover passare attraverso un server principale.

Utilizzando un client BitTorrent, puoi connetterti a più computer in tutto il mondo per scaricare un file. Un computer che funge da coordinatore aiuta a mostrare i nodi sulla rete che hanno il file desiderato.

BitTorrent ti consente di ospitare volontariamente file e caricarli per altri utenti che li desiderano. È così popolare perché è stato il primo del suo genere a offrire incentivi per contribuire alla rete..

Vantaggio

- È possibile aggiungere facilmente più nodi al sistema distribuito, ovvero ridimensionare secondo necessità.

- Tutti i nodi nel sistema distribuito sono collegati tra loro. Pertanto, ciascuno dei nodi può condividere facilmente i dati con gli altri nodi..

- Risorse come le stampanti possono essere condivise con più nodi invece di essere limitate a uno solo.

- Il fallimento di un nodo non porta al fallimento dell'intero sistema distribuito. Gli altri nodi possono ancora comunicare tra loro.

Svantaggi

- Alcuni messaggi e dati potrebbero andare persi sulla rete quando ci si sposta da un nodo a un altro.

- È difficile fornire una protezione adeguata nei sistemi distribuiti perché sia ​​i nodi che le connessioni devono essere protetti.

- Può verificarsi un sovraccarico di rete se tutti i nodi del sistema distribuito tentano di inviare dati contemporaneamente.

- Il database connesso a sistemi distribuiti è piuttosto complicato e poco maneggevole rispetto al sistema a singolo utente.

Esempi di sistemi distribuiti

I sistemi distribuiti possono essere utilizzati in un gran numero di casi, come i sistemi bancari elettronici, i giochi online multiplayer di massa e le reti di sensori..

StackPath

Utilizza un sistema distribuito particolarmente ampio per alimentare il suo servizio di rete di distribuzione dei contenuti. Ciascuno dei suoi punti di presenza (PoP) ha nodi, formando un sistema distribuito in tutto il mondo.

StackPath archivia il contenuto più recentemente e frequentemente richiesto nelle posizioni più vicine al sito che viene utilizzato.

Collegando i computer virtuali, oltre a sfruttare la velocità e l'agilità di un computing all'avanguardia, il sistema può gestire molto rapidamente migliaia di richieste simultanee.

Internet

È il più grande sistema distribuito al mondo. Ogni utente si sente come un unico sistema, anche se è composto da milioni di computer.

Attraverso il concetto di astrazione, non hai idea di dove siano archiviati i dati, di quanti server siano coinvolti o di come le informazioni arrivino al browser. Il browser dissolve la complessità di Internet.

Questo vale anche per applicazioni come la posta elettronica di Gmail o qualsiasi altra applicazione che può essere utilizzata. Ogni persona interagisce quotidianamente con le applicazioni distribuite.

Riferimenti

  1. Paul Krzyzanowski (2018). Sistemi distribuiti. Tratto da: cs.rutgers.edu.
  2. Catherine Paganini (2019). Primer: Sistemi distribuiti e Cloud Native Computing. Il nuovo stack. Tratto da: thenewstack.io.
  3. Università Internazionale di Valencia (2020). Sistemi distribuiti, caratteristiche e classificazione. Tratto da: universidadviu.com.
  4. David Meador (2018). Sistemi distribuiti. Punto tutorial. Tratto da: tutorialspoint.com.
  5. Robert Gibb (2019). Cos'è un sistema distribuito? Tratto da: blog.stackpath.com.
  6. Stanislav Kozlovski (2018). Un'introduzione approfondita ai sistemi distribuiti. Code Camp gratuito. Tratto da: freecodecamp.org.

Nessun utente ha ancora commentato questo articolo.