Il calcolo distribuito utilizza numerose risorse informatiche in luoghi operativi diversi per un unico scopo di calcolo.
I sistemi di calcolo distribuito permettono di realizzare grandi cose. Pensaci la prossima volta che giochi a un gioco multiplayer online di massa (MMO). Per gestire efficacemente un MMO, è necessario che interi sistemi si uniscano e lavorino in stretta collaborazione per offrire un'esperienza online senza interruzioni, condivisa simultaneamente da migliaia di giocatori in un ambiente in tempo reale.
Il calcolo distribuito aiuta i fornitori a gestire questo tipo di sincronizzazione coordinata e la potenza di elaborazione del computer verso un obiettivo comune.
E questo è solo un esempio delle tante e ampie applicazioni dei servizi di calcolo distribuito attualmente in uso, tra cui la creazione di grafica 3D vivida per animazioni video, l'addestramento delle reti neurali che imitano la funzionalità del cervello umano e la risoluzione di equazioni estremamente complesse legate alla chimica e alla fisica.
In genere, il modello di calcolo distribuito si occupa dei compiti e dei workload più intensivi e delle sfide computazionali più impegnative, motivo per cui richiede l'uso di più componenti e della memoria condivisa.
Il calcolo distribuito riunisce più computer, server e reti per svolgere attività informatiche di dimensioni e scopi molto diversi. Nei piccoli sistemi informatici distribuiti con componenti vicini l'uno all'altro, questi componenti possono essere collegati tramite una rete locale (LAN).
Nei sistemi distribuiti più grandi, i cui componenti sono separati geograficamente, i componenti sono collegati tramite reti WAN (wide area network). I componenti di un sistema distribuito condividono le informazioni attraverso il tipo di rete utilizzato. L'esempio più noto di sistema distribuito è Internet. L'esempio più controverso di sistema distribuito negli ultimi tempi è forse la criptovaluta.
Da un punto di vista computazionale, in termini di numero di componenti tipicamente coinvolti, anche le forme più elementari di calcolo distribuito contengono solitamente tre componenti di base:
Tuttavia, non esistono regole fisse che limitino cosa costituisca una circostanza di calcolo distribuito o quanti componenti software siano necessari per renderne possibile il funzionamento. Potrebbero esserci solo pochi componenti che operano all'interno di quella catena (o rete), oppure l'istanza potrebbe incorporarne molti di più.
Questo è uno dei grandi vantaggi dell'utilizzo di un sistema di calcolo distribuito, ovvero che il sistema può essere ampliato con l'aggiunta di altre macchine. L'altro vantaggio significativo è la maggiore ridondanza, quindi se un computer della rete si guasta per qualsiasi motivo, il funzionamento del sistema procede senza problemi, nonostante quel punto di errore.
Questo concetto di ridondanza aggiuntiva va di pari passo con l'enfasi sulla tolleranza ai guasti. La tolleranza ai guasti è un processo correttivo che consente a un sistema operativo di rispondere e correggere un errore nel software o nell'hardware mentre il sistema continua a funzionare. La tolleranza ai guasti è stata utilizzata come misura generale del proseguimento della redditività aziendale nonostante a un guasto serio.
I sistemi di calcolo distribuito non sono quindi vincolati da limiti sul numero di componenti, né è necessario che tali componenti siano fisicamente posizionati l'uno vicino all'altro e collegati da reti locali. Grazie alle funzionalità ampliate delle reti geografiche, i computer di un sistema informatico distribuito possono essere separati da continenti, pur mantenendo la loro operabilità.
L'obiettivo dei sistemi di calcolo distribuiti è quello di far funzionare quella rete di calcolo distribuito, indipendentemente dalla dimensione e dalla posizione dei suoi componenti, come se fosse un singolo computer. Questo coordinamento viene realizzato attraverso un elaborato sistema di passaggio di messaggi tra i vari componenti.
I protocolli di comunicazione regolano lo scambio di messaggi avanti e indietro e creano una forma di relazione esistente tra questi componenti. Questa relazione è nota come “accoppiamento”, in genere espresso in due forme:
Il calcolo distribuito si occupa anche degli effetti positivi e negativi della concorrenza, ovvero l'esecuzione simultanea di più sequenze di istruzioni operative. La principale, tra le sue qualità positive, consiste nel fatto che la concorrenza supporta il calcolo parallelo di più thread di processo. (Il calcolo parallelo non deve essere confuso con l'elaborazione parallela, che è un processo in base al quale le attività di runtime vengono suddivise in attività più piccole).
Gli aspetti negativi associati alla concorrenza spesso includono una maggiore latenza e persino colli di bottiglia in cui il traffico quasi si interrompe a causa del sovraccarico del sistema informatico distribuito, con un numero eccessivo di richieste di componenti.
La concorrenza è diversa dal concetto di multithreading, che consente a un programma di rimanere in esecuzione mentre altre attività vengono eseguite in background. La concorrenza rappresenta un maggiore dispendio di risorse, poiché più thread vengono eseguiti contemporaneamente e accedono simultaneamente a risorse condivise.
Alcuni workload sono enormi e superiori a quelli che la maggior parte dei singoli sistemi può gestire. Il calcolo distribuito condivide tali workload tra più attrezzature, così che i lavori di grandi dimensioni possano essere affrontati in modo efficace.
Il calcolo distribuito funziona in base al concetto di asset condivisi e supporta la condivisione di risorse come dati, software e hardware tra i vari componenti all'interno di quell'istanza di calcolo distribuito.
Il traffico online di molte organizzazioni è soggetto a cambiamenti rapidi e drammatici, magari a causa di notizie riportate o di altri fattori. Il calcolo distribuito offre la flessibilità di cui le aziende necessitano per resistere a questi picchi.
Il calcolo distribuito aumenta i livelli delle prestazioni suddividendo i lavori di elaborazione di grandi dimensioni in compiti di calcolo più piccoli, condivisi da numerosi computer. Questo si traduce in una quantità cumulativa di velocità di elaborazione e in un maggiore storage complessivo.
Sebbene sia vero che il calcolo distribuito, con i suoi molteplici sistemi, presenti costi iniziali maggiori rispetto ai sistemi di elaborazione centralizzati, nel tempo tali costi si riducono in media a causa dell'efficienza dei costi ottenuta attraverso una latenza inferiore e tempi di risposta più rapidi, rendendo in ultima analisi il calcolo distribuito più conveniente rispetto ai sistemi centralizzati.
I tipi di calcolo distribuito sono classificati in base all'architettura di calcolo distribuito che ciascuno utilizza.
I sistemi client-server utilizzano un'architettura client-server che consente loro di essere utilizzati con più sistemi. Nei sistemi client-server, un client indirizza l'input al server sotto forma di richiesta. Questa comunicazione comporta in genere un comando che richiede l'esecuzione di una particolare attività o una richiesta di ulteriori risorse di elaborazione. Il server lavora quindi per eseguire tale attività o per allocare le risorse richieste. Una volta completato, il server risponde al client con un messaggio relativo all'azione intrapresa.
Mentre i sistemi centralizzati utilizzano l'architettura client-server, un sistema peer si basa sull'architettura peer (spesso chiamata architettura peer-to-peer). I sistemi peer utilizzano nodi, che possono effettivamente funzionare come client o server, identificando le esigenze ed emettendo richieste o lavorando per soddisfare tali esigenze e riferire sulle operazioni. Come suggerisce il nome, non c'è gerarchia nei sistemi peer, quindi i programmi che operano in sistemi peer-to-peer possono comunicare liberamente tra loro e trasferire dati tramite reti peer.
Il middleware può essere considerato come un tipo di "intermediario" che opera tra due applicazioni distinte, vale a dire che il middleware è esso stesso un'applicazione che risiede tra due applicazioni e fornisce servizi a entrambe. Il middleware ha anche un aspetto interpretativo. Funge da traduttore tra varie app di interoperabilità che vengono eseguite su sistemi diversi e consente a tali app di scambiare liberamente i dati.
I sistemi a tre livelli sono così chiamati a causa del numero di livelli utilizzati per rappresentare la funzionalità di un programma. A differenza della tipica architettura client-server in cui i dati vengono inseriti all'interno del sistema client, il sistema a tre livelli mantiene invece i dati memorizzati nel livello intermedio, chiamato livello dei dati. Il livello dell'applicazione circonda il livello dei dati su uno dei suoi lati, mentre il livello di presentazione circonda il livello dei dati sull'altro lato. I sistemi a tre livelli sono comunemente utilizzati in varie applicazioni web.
A volte denominati sistemi distribuiti a più livelli, i sistemi N-tier hanno una capacità illimitata di funzioni di rete, che indirizzano ad altre app per l'elaborazione. L'architettura dei sistemi N-tier è come quella dei sistemi a tre livelli. I sistemi N-tier sono spesso utilizzati come architettura di base per numerosi servizi web e sistemi di dati.
Il calcolo distribuito consente l'uso di diversi paradigmi di programmazione (che possono essere pensati come stili di programmazione):
L'online banking dimostra la bravura del calcolo distribuito operando in più luoghi contemporaneamente, spesso con diverse sedi bancarie incaricate di ospitare uno dei server alla base delle principali offerte di servizi (come il servizio clienti, la sicurezza e l'elaborazione delle transazioni). Tutto avviene in modo istantaneo e senza interruzioni, proprio come si aspettano i clienti della banca.
Sia l'intelligenza artificiale (AI) che il machine learning (ML) stanno rivoluzionando molti campi tecnologici, ma in nessun settore i loro effetti sono più pronunciati in questo momento che in quello informatico stesso. Entrambe le tecnologie in rapida evoluzione fanno largo uso del calcolo distribuito. Gli algoritmi alla base di AI e ML necessitano di grandi volumi di dati per addestrare i propri modelli e il calcolo distribuito fornisce la potenza di elaborazione necessaria.
Il calcolo distribuito è attualmente utilizzato nei settori dell'energia e dell'ambiente. Per quanto riguarda l'energia, il calcolo distribuito sta aiutando la tecnologia delle reti intelligenti a regolare l'uso e ottimizzare i consumi energetici. Le reti intelligenti utilizzano il calcolo distribuito anche per raccogliere dati ambientali da diversi dispositivi di input, come sensori e contatori intelligenti.
I lavoratori in aree specifiche della finanza stanno già utilizzando sistemi informatici distribuiti. Prendiamo la gestione del rischio, in cui gli istituti finanziari necessitano di vasti regni di dati per eseguire enormi calcoli e informare meglio il processo decisionale sulla valutazione delle probabilità e del rischio. Il calcolo distribuito garantisce che i carichi computazionali siano condivisi in modo uniforme tra più sistemi.
Il calcolo distribuito ha aiutato numerose discipline scientifiche e ha contribuito ad alcuni dei risultati più importanti della scienza. Gli esempi includono il Large Hadron Collider, l'acceleratore di particelle più potente del mondo. Gli esperimenti alla base dipendono da un'estrema quantità di raccolta e analisi dei dati, che richiedono l'uso del calcolo distribuito. Allo stesso modo, il calcolo distribuito ha supportato il Progetto genoma umano, finalizzato a mappare le sequenze del DNA umano. Il calcolo distribuito svolge anche un ruolo essenziale nel forecasting e nella modellazione climatica.
IBM Cloud Infrastructure Center è una piattaforma software compatibile con OpenStack per gestire l'infrastruttura di cloud privati su IBM zSystems e IBM LinuxONE.
Scopri i server, lo storage e il software progettati per l'hybrid cloud e la strategia AI della tua azienda.
Trova la soluzione di infrastruttura cloud adatta alle esigenze della tua azienda e scala le risorse on-demand.