Sistemi Distribuiti Reti di Calcolatori a.a. 2003/2004 Prof. Roberto Baldoni Ing. Sara Tucci Piergiovanni Ing Alessia Milani Una definizione  Un sistema distribuito è costituito da un insieme di computers spazialmente separati dove sono dislocati componenti hardware e software che comunicano e coordinano tra loro le loro azioni attraverso scambio di messaggi Obiettivo primario: Condivisione dati/risorse  Condivisione dei dati come in database distribuiti. In questo modo più organizzazioni possono condividere i propri dati.  Problemi: esempio sincronizzazione e coordinamento Conseguenze nei sistemi distribuiti le precedenti tecniche devono essere implementate tenendo presente: Concorrenza spaziale oltre che temporale 2. No clock globale 3. Guasti indipendenti 1. Esempi di sistemi distribuito Ma anche..... Extranets Overlay Networks Grid Ubiquitous Computing Caratteristiche..e Sfide Eterogeneità  Openess  Sicurezza  Scalabilità  Gestione dei guasti  Concorrenza  Trasparenza  Eterogeneità      Networks Hardware Operating Systems Programming Languages Implementations from different Developers Soluzioni  Middleware  Mobile code and Virtual Machine Openess      Caratteristica di un sistema di essere esteso e reimplementato Condizione necessaria documentazione e specifica delle interfacce software chiave dei componenti di un sistema ...ma questo è solo il punto di partenza Il numero a volte elevatissimo (a volte ordine di decine di migliaia) di sviluppatori di software indipendenti rende lo sviluppo di una piattaforma distribuita un lavoro molto complesso e difficile da gestire Esempi:   RFC per internet JBoss per le piattaforme J2EE Sicurezza  Confidenzialità (protezione contro l’intercettazione di dati da parte di individui non autorizzati)  Integrity (protezione contro l’alterazione di dati)  Availability (protezione contro l’interferenza nell’accesso ad una risorsa) Scalabilità  Un sistema è scalabile se rimane operativo con adeguate prestazioni anche se il numero di risorse e di utenti aumenta sensibilmente Computers connected to the internet Date 1979, Dec. 1989, July 1999, July Web servers Computers 188 0 130,000 56,218,000 0 5,560,866 Scalabilità (ii) Il progetto di un sistema scalabile presenta quattro principali problemi:  Estendibilità del sistema   Controllare le perdite di prestazioni    Usare algoritmi che non richiedono di dialogare con tutto il set di user di un sistema distribuito Usare algoritmi che non richiedono di accedere all’intero set di dati Prevenire che finiscano le risorse software del sistema   Aggiungere server al volo Indirizzi IP Evitare i colli di bottiglia nel sistema  Centralizzato vs distributed DNS Gestione dei Guasti  Scoperta dei guasti   Mascheramento dei guasti   Esempio: intrusion tolerant system Recupero da guasti   Esempio: Ritrasmissione sui canali Tolleranza ai guasti   Esempio: Checksum per scoprire pacchetti corrotti Esempio: completamento di long running computation Ridondanza  Esempio: DNS Concorrenza  Accesso multiplo a risorse condivise     Se clienti accedono metodi di read e write di una variabile condivisa Che valori ritornano le read? Coordinamento Sincronizzazione Trasparenza         Accesso: permette di accedere a risorse locali e remote con le stesse modalità Locazione: permettere di accedere alle risorse senza conoscerne la locazione Concorrenza: permette ad un insieme di processi di operare concorrentemente su risorse condivise senza interferire tra loro Guasti: permette il mascheramento dei guasti in modo che gli utenti possano completare le operazioni richieste anche se occorrono guasti hw e/o sw Mobilità: permette di spostare risorse senza influenzare le operazioni utente Prestazioni: permette di riconfigurare il sistema al variare del carico Scalabilità: permette al sistema e alle applicazioni di espandersi in modo scalabile senza modificare la struttura del sistema e degli algoritmi applicativi Le prestazioni di una soluzione basata su sistema distribuito non sempre migliorano rispetto ad una basata su sistema centralizzato. Il middleware, necessario per fornire servizi che sfruttano le caratteristiche di un sistema distribuito, in generale può diminuire le prestazioni Stratificazione hw e sw Modelli di interazione client/server peer-to-peer Modelli di interazione   La scelta del modello di interazione impatta su scalabilità, disponibilità, costo, sicurezza, prestazioni Es. client/server con servizio replicato: Affidabilità, Scalabilità Prestazioni: la replicazione impone un lavoro extra per: mantenere la consistenza delle repliche, gestione dei guasti Web proxy server Web server Client Proxy server Client Web server Web applets a) client request res ults in the dow nloading of applet c ode Client Applet code Web s erv er b) client interac ts w ith the applet Client Applet Web s erv er Thin clients and compute servers Compute server Network computer or PC Thin Client network Application Process Spontaneous networking in a hotel Music service gateway Alarm service Internet Hotel wireless network Discovery service Camera TV/PC Laptop PDA Guests devices Real-time ordering of events s end X receiv e 1 m1 2 Y receiv e 4 s end 3 m2 receiv e Phy sical time receiv e s end Z receiv e receiv e m3 A t1 t2 m1 m2 receiv e receiv e receiv e t3 Processes and channels process p process q send m receiv e Communic ation c hannel Outgoing mess age buffer Incoming mes sage buffer Middleware: problemi da affrontare  Eterogeneità: OS, velocità dei clock, rappresentazione dei dati, memoria, architettura hw  Asincronia locale: anche se i clock fossero gli stessi, il carico (diverso per ogni nodo), le diverse configurazioni di OS, e gli interrupt creano schedulazioni diverse dei processi in esecuzione (nondeterminismo)  Mancanza di conoscenza globale: la conoscenza si propaga attraverso messaggi i cui tempi di propagazione sono MOLTO più lenti degli eventi interni.  Asincronia di rete: i tempi di propagazione dei messaggi potrebbero essere impredicibili.   Guasti di nodi e/o parti di rete Sicurezza: nei sistemi centralizzati non si espone informazione al mondo esterno attraverso comunicazioni.  Mancanza di un ordinamento globale degli eventi CIO’ LIMITA L’INSIEME dei problemi computazionalmente risolvibili (algoritmi deterministici) su alcuni SISTEMI DISTRIBUITI