Corso di Web Services A A. 2010 2011 Domenico Rosaci 2. Sistemi Distribuiti Progresso tecnologico dei Computer • 1945-1985: Computer ingombranti e costosi. Ogni computer operava indipendentemente dagli altri • Metà anni 80: sviluppo di microprocessori potenti a 8, 16, 32, 64 bit: capacità di calcolo di un mainframe ma costi molto più bassi • Si passa da macchine da 10 milioni di dollari che eseguivano 1 istruzione/sec a macchine da 1000 dollari che eseguono 1 miliardo di istruzioni al secondo. • Guadagno prezzo/prestazioni: 1013! D. Rosaci Sistemi Distribuiti 2 Sviluppo delle Reti di Calcolatori • Invenzione delle reti di computer ad alta velocità • Reti Locali (LAN): connettono centinaia di macchine in un edificio con velocità da 100 milioni a 10 miliardi di bit/sec • Reti Geografiche (WAN): milioni di macchine connesse in tutto il mondo, con velocità da 64Kbs a gigabit/sec D. Rosaci Sistemi Distribuiti 3 Risultato • Facilità di mettere insieme sistemi di calcolo composti da un gran numero di computer connessi da reti ad alta velocità • Questi sistemi sono chiamati Sistemi Distribuiti, diversamente dai precedenti Sistemi Centralizzati, che avevano un singolo processore e alcune periferiche D. Rosaci Sistemi Distribuiti 4 Definizione di Sistema Distribuito • Collezione di computer indipendenti che appare ai propri utenti come un singolo sistema coerente • Le componenti di un SD sono quindi computer autonomi • Gli utenti di un SD pensano di aver a che fare con un unico sistema • Ne segue che le componenti di un SD devono collaborare tra loro • Come realizzare la collaborazione? Domanda chiave! • Nessuna supposizione sul tipo di computer, sui sistemi operativi o sulle modalità di interconnessione D. Rosaci Sistemi Distribuiti 5 Caratteristiche dei SD • Le differenze tra i computer, le modalità di comunicazione e l’organizzazione interna del SD sono nascoste agli utenti • Utenti e applicazioni possono interagire con un SD in modo coerente e uniforme, indipendentemente da quando e dove l’interazione ha luogo • Un SD deve essere facilmente espandibile e scalabile, essendo composto da computer indipendenti e avendo un’organizzazione trasparente: facilità di sostituire parti o aggiungere nuove componenti. D. Rosaci Sistemi Distribuiti 6 SD come Middleware • Di solito, un SD si configura come un layer di software intermedio tra un soprastante livello delle applicazioni e un sottostante livello di software di base (Sistemi Operativi, Sistemi di Comunicazione). Computer 1 Computer 2 Computer 3 Computer 4 App. A App. B App. C Sistema Distribuito (Middleware) S.O. 1 D. Rosaci S.O. 2 Sistemi Distribuiti S.O. 3 S.O. 4 7 Obiettivi dei SD • Quando vale la pena di costruire un SD? – Si vuole che le risorse siano facilmente accessibili – Si vuole che la distribuzione delle risorse sia nascosta – Si vuole che il sistema sia aperto – Si vuole che il sistema sia scalabile D. Rosaci Sistemi Distribuiti 8 Accessibilità • Risorse: computer, dati, stampanti, pagine Web, ecc. • A volte si vuole che queste risorse siano condivise (la condivisione è economica) • Internet dimostra che connettere utenti e risorse è una strategia di successo • Groupware: File Sharing, Editing Collaborativo, Video Conferenza, ecc. • Importanza della Sicurezza quando si è connessi in rete: protezione della privacy, evitare lo spam, sono tutti ottimi motivi per progettare un SD. D. Rosaci Sistemi Distribuiti 9 Trasparenza • Trasparenza all’accesso: si vuole nascondere all’utente come i dati sono rappresentati sulle singole macchine (es. differenti S.O.) • Trasparenza all’ubicazione: si vuole che gli utenti non possano indicare dove è fisicamente localizzata una risorsa • Trasparenza alla migrazione: le risorse possono essere spostate senza interferire sulla loro modalità d’accesso. Se ciò si può fare addirittura mentre le risorse sono in uso, abbiamo Trasparenza al riposizionamento. • Trasparenza alla replica: si nasconde l’esistenza di molte copie di una risorsa, che vengono automaticamente tenute aggiornate • Trasparenza alla concorrenza: l’accesso concorrente ad una risorsa condivisa la lascia in uno stato coerente. • Trasparenza ai guasti: l’utente non si rende conto che una risorsa ha smesso di funzionare. D. Rosaci Sistemi Distribuiti 10 Grado di Trasparenza • Non è detto che una trasparenza assoluta sia desiderabile • Si pensi ad una applicazione che per eseguire una certa operazione per l’utente debba contattare uno tra tanti server disponibili, e che si voglia nascondere quale server viene contattato. Se il server contattato non risponde, l’utente non ha modo di interrompere il tentativo per passare ad un altro server. D. Rosaci Sistemi Distribuiti 11 Apertura • Un SD aperto è un sistema che offre servizi rispettando certe regole standard che descrivono la sintassi e la semantica dei servizi stessi • In un SD i servizi sono specificati per mezzo di interfacce scritte in un Interface Definition Language (IDL). Esse spesso specificano la sintassi ma il difficile è specificare la semantica (“cosa i servizi fanno”). • Se le interfacce sono ben specificate i sistemi che le usano possono implementarle in modo diverso senza problemi ed interagire tra loro (interoperabilità). Inoltre si possono portare agevolmente da un sistema ad un altro (portabilità) • Anche l’ampliabilità è una caratteristica dell’apertura. I sistemi devono essere estendibili. D. Rosaci Sistemi Distribuiti 12 Scalabilità • Aspetto centrale, visto l’aumento esponenziale degli utenti Internet. • Scalabilità rispetto alla dimensione: possiamo aggiungere utenti e risorse al sistema. • Scalabilità geografica: utenti e risorse possono essere anche molto lontani • Scalabilità rispetto all’amministrazione: il sistema deve rimanere gestibile anche coprendo molte strutture indipendenti D. Rosaci Sistemi Distribuiti 13 Problemi di Scalabilità • I limiti maggiori emergono quando i dati, i servizi, o le applicazioni sono centralizzate • In tal caso l’unità centrale diventa un collo di bottiglia: si immagini se il DNS di Internet fosse ancora implementato come un’unica tabella • La scalabilità rispetto alle dimensioni si affronta mediante approcci decentralizzati • La scalabilità geografica è difficile da ottenere perché le reti geografiche sono point-to-point. Anche qui occorrerebbe adottare soluzioni decentralizzate • La scabilità rispetto all’amministrazione è strettamente legata a problemi di sicurezza. Occorre fare in modo che passando da un dominio ad un altro più esteso, non si violi la sicurezza di quest’ultimo (esempio: applet Web) D. Rosaci Sistemi Distribuiti 14 Tecniche di Scalabilità • Comunicazione asincrona: cercare di evitare l’attesa delle risposte alle richieste di servizi remoti. Per esempio, quando un servizio viene richiesto ad un server, invece di aspettare passivamente la risposta si può permettere all’applicazione richiedente di fare altro lavoro utile. Quando arriva una risposta, l’applicazione interrompe quello che stava facendo e torna a gestire il processo originale (sono utili i thread paralleli). • Ridurre la comunicazione totale, spostando su client parte del lavoro che è fatto dal server (es. Applet Java) • Distribuzione: prendere un componente, spezzarlo in più parti e distribuirle nel sistema (es. DNS) • Replicazione – Caching: incrementare la disponibilità delle risorse D. Rosaci Sistemi Distribuiti 15 Tipologie di SD -1 • Sistemi di Calcolo Distribuiti – Sistemi di calcolo a cluster: semplici computer collegati da reti ad alta velocità, per consentire la programmazione parallela (es. Beowulf su Linux) – Grid Computing: in un cluster, i computer sono tutti uguali. La tecnologia grid presenta invece componenti eterogenee. Gli appartenenti alla stessa organizzazione virtuale hanno diritto all’accesso alle stesse risorse (server, data storage, basi di dati) D. Rosaci Sistemi Distribuiti 16 Tipologie di SD -2 • Sistemi Informativi Distribuiti: Emergono in contesti aziendali, in cui necessita l’integrazione di diverse applicazioni. L’integrazione di applicazioni aziendali è oggi un campo in grande sviluppo (Enterprise Application Integration, EAI) D. Rosaci Sistemi Distribuiti 17 Tipologie di SD -3 • Sistemi Distribuiti Pervasivi:nascono con i dispositivi di calcolo mobili ed embedded. Dispositivi piccoli,a batteria, mobili e wireless. Devono “integrarsi” nel nostro ambiente. – Sistemi Domestici (integrano in un solo sistema TV, smartphone,PDA, eventualmente impianti antifurto,videosorveglianza,climatizzazione ecc.) – Sistemi elettronici per l’assistenza sanitaria (basati su sensori wireless) – Reti di Sensori: centinaia o migliaia di nodi, ognuno equipaggiato con un sensore (es. sistemi per il controllo del traffico). D. Rosaci Sistemi Distribuiti 18 Paradigma ad Oggetti distribuiti • • • Le risorse di rete sono rappresentate da oggetti distribuiti: Per richiedere un servizio ad una risorsa di rete, un processo invoca uno dei metodi o operazioni messe a disposizione, passando al metodo i dati come parametri. Il metodo viene eseguito sull’ host remoto, e la risposta è inviata al processo richiedente come valore di ritorno. D. Rosaci Sistemi Distribuiti 19 Chiamate di Metodi • Un processo in esecuzione su un host A chiama un metodo su un oggetto distribuito che risiede su un host B, passando allo stesso eventuali parametri • La chiamata del metodo invoca un’ azione che il metodo eseguirà sull’ host B. Il valore di ritorno, se c’è, verrà trasferito dall’ host B all’ host A • Un processo che fa uso di un oggetto distribuito viene detto processo client di quell’ oggetto, e i metodi dell’ oggetto sono chiamati metodi remoti (contrariamente ai metodi locali, o metodi appartenenti ad un oggetto locale) D. Rosaci Sistemi Distribuiti 20 Architettura di un Sistema ad Oggetti Distribuiti D. Rosaci Sistemi Distribuiti 21