Corso di Ingegneria del Web A A Domenico Rosaci 1. Sistemi Distribuiti Introduzione
2 D. RosaciSistemi Distribuiti - Introduzione Progresso tecnologico dei Computer : 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: !
3 D. RosaciSistemi Distribuiti - Introduzione 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
4 D. RosaciSistemi Distribuiti - Introduzione 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
5 D. RosaciSistemi Distribuiti - Introduzione 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
6 D. RosaciSistemi Distribuiti - Introduzione 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.
7 D. RosaciSistemi Distribuiti - Introduzione 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). App. AApp. BApp. C S.O. 1S.O. 2S.O. 3S.O. 4 Computer 1 Computer 2Computer 3 Computer 4 Sistema Distribuito (Middleware)
8 D. RosaciSistemi Distribuiti - Introduzione 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
9 D. RosaciSistemi Distribuiti - Introduzione 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.
10 D. RosaciSistemi Distribuiti - Introduzione 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.
11 D. RosaciSistemi Distribuiti - Introduzione 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.
12 D. RosaciSistemi Distribuiti - Introduzione 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.
13 D. RosaciSistemi Distribuiti - Introduzione 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
14 D. RosaciSistemi Distribuiti - Introduzione 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)
15 D. RosaciSistemi Distribuiti - Introduzione 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
16 D. RosaciSistemi Distribuiti - Introduzione 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)
17 D. RosaciSistemi Distribuiti - Introduzione 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)
18 D. RosaciSistemi Distribuiti - Introduzione 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).
19 D. RosaciSistemi Distribuiti - Introduzione 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.
20 D. RosaciSistemi Distribuiti - Introduzione 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)
21 D. RosaciSistemi Distribuiti - Introduzione Architettura di un Sistema ad Oggetti Distribuiti