TECN.PROG.SIST.INF. – Sistemi distribuiti 2015 - Roberta Gerboni TECN.PROG.SIST.INF. – Sistemi distribuiti Sistemi centralizzati e distribuiti Le architetture dei sistemi informativi si sono sviluppate ed evolute nel corso degli anni passando da: schemi centralizzati schemi distribuiti rispondendo alle necessità di decentralizzazione e cooperazione delle moderne organizzazioni. Un sistema informatico è centralizzato quando i dati e le applicazioni risiedono in un unico nodo elaborativo Un sistema informatico è distribuito quando si verifica almeno una delle due condizioni: • Elaborazione distribuita • Base di dati distribuita 2 TECN.PROG.SIST.INF. – Sistemi distribuiti Sistemi distribuiti Sistema centralizzato Sistema distribuito Un sistema distribuito è costituito da: • un insieme di applicazioni logicamente indipendenti • una collezione di computer autonomi che appaiono all’utente come un solo sistema coerente e che collaborano tra loro attraverso un’infrastruttura di comunicazione hardware e software. Utenti e applicazioni non devono notare la sostituzione, riparazione e aggiunta di nuovi componenti. 3 TECN.PROG.SIST.INF. – Sistemi distribuiti Tipi di Sistemi distribuiti Sistemi di calcolo distribuiti • Cluster • Grid Sistemi informativi • Sistemi transazionali • Integrazione di applicazioni aziendali Sistemi pervasivi • Sistemi domestici • Sistemi per l’assistenza sanitaria e sicurezza sul lavoro • Reti di sensori Un computer CLUSTER è un insieme di computer omogenei connessi tramite una rete con lo scopo di distribuire una elaborazione parallelizzabile tra computer componenti il cluster. La tecnologia GRID, a differenza del cluster, prevede la interconnessione tra macchine anche eterogenee per realizzare attività cooperative di calcolo. Sistemi dedicati ad attività di elaborazione dei dati di tipo gestionale, caratterizzati da più utenti che accedono concorrentemente a dati condivisi mediante procedure predefinite. Ogni transazione corrisponde a un insieme di operazioni elementari, incapsulate fra due comandi di inizio e fine della transazione. C’è anche l’esigenza di far comunicare tra loro le diverse applicazioni. Sistemi in cui l’elaborazione dell’informazione è integrata in modo trasparente negli oggetti di uso comune e nelle attività quotidiane. Questi sistemi sono composti da dispositivi eterogenei come reti di sensori, dispositivi RFID (Radio Frequency Identification) e/o NFC (Near Field Communication) in grado di connettersi in reti di grandi dimensioni, che non richiedono la presenza di una infrastruttura di rete cablata. 4 TECN.PROG.SIST.INF. – Sistemi distribuiti Tipi di Sistemi distribuiti Sistemi di calcolo distribuiti • Cluster • Grid Cray XT4 Sistemi informativi 18.688 compute nodes each a 16-Core AMD Opteron 6200. Capable 20 petaflops Banca • Sistemi transazionali • Integrazione di applicazioni aziendali Sistemi pervasivi • Sistemi domestici • Sistemi per l’assistenza sanitaria e sicurezza sul lavoro • Reti di sensori 5 TECN.PROG.SIST.INF. – Sistemi distribuiti Sistemi distribuiti Organizzazione di un sistema Distribuito Per offrire una visione unica del sistema che in realtà è composto da computer e reti eterogenei è necessaria un’organizzazione a strati Livello superiore: utenti e applicazioni Livello intermedio: strato software Livello basso: sistema operativo Il livello intermedio è spesso chiamato middleware. S.O Hardware S.O Hardware S.O Hardware Il middleware è un software di connessione che consiste di un insieme di servizi e/o di ambienti di sviluppo di applicazioni distribuite che permettono a più entità (processi, oggetti ecc.), residenti su uno o più elaboratori, di interagire attraverso una rete di interconnessione indipendentemente dalle differenze dei protocolli di comunicazione, dalle architetture dei sistemi locali, dai sistemi operativi ecc.. 6 TECN.PROG.SIST.INF. – Sistemi distribuiti Sistemi distribuiti Il middleware offre delle tecnologie software sviluppate per facilitare i programmatori a realizzare applicazioni per sistemi distribuiti che si presentano complessi proprio per l’eterogeneità dei sistemi stessi. Il middleware è il software che risiede al di sopra della rete ed al di sotto delle applicazioni software. Permette e garantisce quindi l’interoperabilità delle applicazioni sui diversi sistemi operativi. I software che implementano i servizi offerti dal middleware utilizzano le API messe a disposizione. La presenza del middleware rende facilmente programmabili i sistemi distribuiti offrendo dei paradigmi di interazione basati su chiamata di procedure remote (RPC) o sullo scambio di messaggi. Funzionalità del middleware 7 TECN.PROG.SIST.INF. – Sistemi distribuiti Sistemi distribuiti Caratteristiche principali che un sistema distribuito deve avere: • essere trasparente, cioè nascondere che le risorse sono distribuite • consentire facilmente la connessione tra utenti e risorse • essere aperto • essere flessibile • essere scalabile Trasparente Un sistema distribuito deve nascondere che i suoi processi e risorse sono fisicamente distribuite: • trasparenza di accesso: nascondere le differenze di rappresentazione dei dati e del modo in cui gli utenti accedono alle risorse, siano esse locali o remote • trasparenza di locazione: nascondere la locazione fisica di una risorsa e permettere di accedervi anche senza conoscere la locazione (URL nasconde l’indirizzo IP) • trasparenza di migrazione: permettere il continuo accesso a risorse che possono essere spostate (trasparenza di rilocazione se avviene mentre una risorsa è in uso) • trasparenza di replicazione: nascondere la duplicazione delle risorse (es. per migliorare le prestazioni) • trasparenza di concorrenza: nascondere agli utenti che competono per le medesime risorse pur mantenendole in uno stato consistente • trasparenza ai guasti: nascondere all’utente eventuali guasti di risorse • trasparenza di scalabilità: espandere il sistema senza interrompere o modificare il funzionamento. 8 TECN.PROG.SIST.INF. – Sistemi distribuiti Sistemi distribuiti Facilità di connessione Un sistema distribuito deve rendere semplice l’accesso a risorse remote (stampanti condivise, dati, file) per motivi economici e per agevolare la collaborazione e lo scambio di informazioni. La facilità di connessione e condivisione fanno insorgere però anche problemi di sicurezza: • Informazioni sensibili • Tracciabilità delle comunicazione Aperto Un sistema distribuito si dice aperto se offre servizi secondo regole standard per descrivere la sintassi e la semantica del servizio. Le regole sono di solito specificate attraverso interfacce, che specificano i nomi delle funzioni disponibili e la loro intestazione. Flessibile Un sistema distribuito deve essere flessibile, cioè deve rendere semplice: • la configurazione del sistema • l’aggiunta di nuove componenti Scalabile La scalabilità di un sistema si può misurare secondo 3 dimensioni: • rispetto alla dimensione: posso aggiungere utenti e risorse • geograficamente: utenti e risorse possono essere fisicamente molto distanti • dal punto di vista amministrativo: facile da gestire anche in presenza di organizzazioni amministrative indipendenti. 9 TECN.PROG.SIST.INF. – Sistemi distribuiti Sistemi distribuiti Vantaggi • Costi ridotti: i sistemi con grandi capacità di calcolo sono molto costosi, mentre il costo delle CPU e dell’infrastruttura di comunicazione si è ridotto notevolmente; • Scalabilità: è più facile gestire la crescita del sistema (nodi o numero di utenti) in modo incrementale; • Distribuzione carico di lavoro: è possibile ripartire il carico di lavoro sulle varie macchine in maniera più efficiente; • Condivisione: è possibile condividere dati e risorse computazionali; • Tolleranza ai guasti maggiore . 10 TECN.PROG.SIST.INF. – Sistemi distribuiti Sistemi distribuiti Svantaggi “Un sistema distribuito è un sistema in cui il mio programma non funziona per colpa di una macchina di cui non ho mai sentito parlare.” - Leslie Lamport. • Complessità di realizzazione: hardware e software • Latenza: la differenza tra l’invocazione locale e remota di un servizio è di 4-5 ordini di grandezza; • Fallimenti parziali e concorrenza: - una computazione locale può essere concorrente; una distribuita lo è sicuramente; - una computazione locale fallisce soltanto in maniera completa, ma una distribuita può fallire anche parzialmente; - in una computazione locale, esiste un solo punto di controllo per l’allocazione delle risorse, la sincronizzazione, la gestione dei malfunzionamenti ciò non è più vero in un sistema distribuito. • Gestibilità: cambia il modo con cui si accede alle risorse, perché dati e servizi sono acceduti ignorando la loro locazione fisica (spazi di indirizzamento distinti) • Sicurezza: più difficile da gentire in questi tipi di sistemi (si devono garantire: canali sicuri per le comunicazioni tra utenti e processi e il controllo degli accessi verificando le autorizzazioni di utenti e processi) 11 TECN.PROG.SIST.INF. – Sistemi distribuiti Sistemi distribuiti Esempio: Domain Name System (DNS) Il DNS è un esempio di distribuzione • Organizza lo spazio gerarchicamente attraverso un albero di domini • Ogni dominio è diviso in zone non sovrapposte • Dato un nome composto da parti diverse (che rappresentano le diverse zone) si risolve navigando l’albero • Nessun name server ha la mappa di tutti gli host su internet • La mappa degli host è distribuita su tutti i name server 12 TECN.PROG.SIST.INF. – Sistemi distribuiti Sistemi distribuiti Modelli architetturali Descrivono l’organizzazione del sistema distribuito nelle sue parti componenti, le relazioni tra esse, la loro allocazione sui nodi del sistema di elaborazione e i modelli di cooperazione. Es. di architetture: • client-server: 2-tiers, 3-tiers, n-tiers; • peer-to-peer (richiede algoritmi per la localizzazione e la gestione delle risorse) • varianti: proxy e cache; server multipli; codice mobile; agenti mobili; thin client. Cache situate sui client e/o sul proxy (condivisa dai client) • service-oriented Architecture (SOA). (Architettura orientata ai servizi realizzata dai Web Services) web applets a) le richieste dei clienti provocano il download del codice di una applet b) il cliente interagisce localmente con l’applet 13 TECN.PROG.SIST.INF. – Sistemi distribuiti Il modello client/server Sistemi distribuiti Un sistema distribuito può essere pensato come “clienti che richiedono servizi offerti da servitori”. In questo modello ci sono solo due tipi di processi: client e server: • Un server è un processo che implementa un servizio • Un client è un processo che richiede un servizio da un server inviando una richiesta Sempre più spesso si assiste ad una integrazione di servizi di database con servizi di web, in cui le pagine vengono costruite dinamicamente sulla base dei dati contenuti nel database. In tutti questi casi il problema fondamentale di una architettura client-server è che la richiesta di un servizio da parte di un gran numero di client si scontra con il collo di bottiglia dell'accesso diretto ad un unico server, con problemi di scalabilità. Questo causa gravi problemi di manutenibilità dei servizi, in particolare per quanto riguarda la sincronizzazione dei dati, e di inefficienza dell'uso delle risorse. Tra i problemi più gravi quello che riguarda i database che non possono essere replicati e sincronizzati facilmente, inoltre la loro replicazione è costosa e complessa. Dalle problematiche esposte nasce l’idea di realizzare un modello client/server 3-tier. 14 TECN.PROG.SIST.INF. – Sistemi distribuiti Il modello client/server 3-tier Sistemi distribuiti Un'applicazione Web, nella maggior parte dei casi, si sviluppa su: tre livelli logico-funzionali. Si introduce il modello 3-tiers (o multi-tiers in generale se si introducono server intermedi) per poter separare logicamente le parti di presentazione, elaborazione ed accesso ai dati. che saranno eseguiti su processori diversi. 15 TECN.PROG.SIST.INF. – Sistemi distribuiti Il modello client/server 3-tier Parte client • Livello di presentazione rappresenta l'interfaccia utente dell'applicazione e si occupa di acquisire dati e visualizzare risultati. In pratica è l’ambiente in cui opera il client. Sistemi distribuiti Parte server suddivisa in due livelli • Livello intermedio (elaborazione) si occupa della logica di analisi delle richieste dei client per ottimizzare l'accesso al terzo livello e delle elaborazioni dei dati tenendo conto delle regole per cui i dati sono considerati significativi e delle loro relazioni consistenti. • Livello accesso ai dati rappresenta l'insieme dei servizi offerti da applicazioni indipendenti dal Web, come ad esempio un gestore di database, un sistema di gestione di posta, ecc. Si limita a fornire i dati dinamici che verranno usati dalla logica implementata nel middle-tier per eseguire le operazioni richieste dai client. 16 TECN.PROG.SIST.INF. – Sistemi distribuiti Sistemi distribuiti Il modello client/server 3-tier Avendo tre diversi livelli si può scindere: • la logica elaborativa • dai dati Si replica la logica elaborativa, che è molto meno soggetta a cambiamenti ed evoluzione, e non soffre di problemi di sincronizzazione. Si centralizzano o si distribuiscono opportunamente i dati. Le applicazioni sono residenti in un server o in diversi server che avviano processi eseguiti su processori diversi e che rispondono ai numerosi client che inviano le loro richieste. In questo modo si può distribuire il carico di elaborazione ed accedere in maniera efficiente i dati. Esempio Un sistema di internet banking - il computer dell’utente, dotato di un browser per navigare in Internet, è il client - un server web fornisce i servizi applicativi: estratti conto, invio di pagamenti, ecc. - un mainframe fornisce i servizi di gestione dei dati - i dati richiesti risiedono nel database dei clienti 17 TECN.PROG.SIST.INF. – Sistemi distribuiti Sistemi distribuiti Architettura N-tier o multi-tier Il modello 3-tier può essere esteso ad un modello multi-tier in cui sono presenti server aggiuntivi. In genere è usato quando le applicazioni devono accedere e utilizzare dati di database diversi o comunque si vogliono suddividere ulteriormente i compiti dei vari strati. Tra il server applicativo e i server database si posiziona un server di integrazione che raccoglie i dati distribuiti e li invia all’applicazione come se provenissero da un unico database. In questo esempio il web server è responsabile per la gestione del collegamento tra i browser client e il server delle applicazioni. Il vantaggio è che più server Web possono connettersi a un singolo server delle applicazioni, consentendo in tal modo la gestione di più utenti simultaneamente. 18 TECN.PROG.SIST.INF. – Sistemi distribuiti 19 TECN.PROG.SIST.INF. – Sistemi distribuiti Oracle Real Application Clusters Oracle Real Application Clusters (RAC) supporta l'utilizzo trasparente di un singolo database su un gruppo di server, fornendo caratteristiche di tolleranza agli errori, da guasti all'hardware a interruzioni volontarie. Disponibile come opzione con Oracle Database 11g, Oracle RAC è un componente chiave dell'architettura cloud privata di Oracle. Oracle RAC support up to 100 servers in a pool. 20