Finistauri Matteo Progetto di una architettura per l’esecuzione distribuita e coordinata di azioni Progetto per l’esame di Reti di Calcolatori L-S Prof. Antonio Corradi L’idea del progetto: coordinazione L’esecuzione procede si Il gruppo di computer passo-passo coordina per passare sincronizzata allo stato concordato contemporaneamente Pronto per Stato A B Pronto per Stato A B Pronto per Stato A B Stato A B Pronto per Stato A B L’idea del progetto: controllo remoto Ok! Eseguo l’operazione richiesta Computer A Computer B Operazione A Computer C Ok! Eseguo l’operazione richiesta Computer D Operazione D Computer D, A, devi fare operazione A D Configuratore Caratteristiche del sistema Funzionalità del sistema: • Controllo remoto dei componenti da una posizione definita (configuratore) • Esecuzione di operazioni sui componenti • Coordinazione delle operazioni in determinati momenti dell’esecuzione Problemi da risolvere: • Dinamicità del gruppo (caduta, etc.) • Comunicazioni reliable • Algoritmo per la sincronizzazione dei componenti Applicazioni: mostra virtuale Split di un contenuto Contenutodella con un mostra commento su più monitor Tipico paesaggio di Perugia Ci ao Foto realizzata da ... Il contenuto dei due schermi cambia in maniera sincrona Descrizione del sistema Architettura del sistema Controllo della disponibilità Componente del gruppo Gestione dei componenti Configuratore Componente del gruppo Servizi Gestione dei gruppi Componente del gruppo Il configuratore • Rappresenta l’interfaccia verso il sistema per l’amministratore. • Fornisce le seguenti funzionalità: – Visualizzazione dello stato del sistema (componenti, esecutori, gruppi) – Gestione dei gruppi (compreso inizio esecuzione e fine esecuzione) – Gestione degli esecutori Il componente di gruppo • E’ il componente che esegue fisicamente le operazioni. • Non è controllabile in maniera diretta ma solo attraverso il configuratore. • Fornisce le seguenti funzionalità: – Ricezione delle istruzioni da parte del configuratore (gruppo, esecutore, start e stop del gruppo) – Sincronizzazione con gli altri componenti in corrispondenza di un checkpoint – Esecuzione delle operazioni locali stabilite dall’esecutore Servizi di sistema • La gestione dei componenti tiene conto dei componenti presenti all’interno del sistema. • La gestione dei gruppi tiene conto della composizione dei gruppi • Il controllo della disponibilità si occupa della disponibilità dei vari componenti del sistema – I componenti di gruppo e il configuratore non sono replicati – Viene utilizzato un meccanismo di lease per riconoscere i componenti caduti. Pro: meccanismo semplice ed efficace. Contro: overhead per il rinnovo del lease. Disponibilità dei componenti • Sia i componenti di gruppo che il configuratore vengono gestiti attraverso il lease: – I componenti di gruppo non sono replicati per questioni applicative. – Il configuratore non è replicato perché costituisce l’interfaccia per l’utente-amministratore. • I servizi di sistema devono essere necessariamente attivi durante tutta la vita dell’applicazione: – I servizi di sistema possono essere replicati senza alcun problema. L’infrastruttura di comunicazione Infrastruttura di comunicazione • Basata su meccanismi simili a chiamate a procedura remota. • Permette di: – effettuare il controllo remoto dei componenti – comunicare con i servizi di sistema • Si basa su: – TCP: nel caso di comandi con passaggio di parametri o risposta – semantica sincrona. – UDP (versione at-most-once): nel caso di comandi senza passaggio di parametri o risposte – semantica asincrona di tipo catch & return. Infrastruttura di comunicazione Client e Server Request manager • Rappresenta • Gestisce la il servizio dal singolafornito richiesta sistema • Provvede a • Fornisce inviare la risposta l’interfaccia al cliente per le operazioni che possono essere fatte su un componente del sistema Execute() • Crea l’oggetto request associato Method() alla richiesta • Attende un messaggio in ingresso Request acceptor Request Service • Incapsula la richiesta, conoscendone i dettagli • Può eseguire la richiesta localmente UDP versione at-most-once • Obiettivo: ottenere la sicurezza che un comando con UDP arrivi a destinazione • Passo 1: aggiunta di un messaggio di acknowledgement P1 P2 P1 P2 P1 P2 OK 1a possibilità 2a possibilità 3a possibilità Se il messaggio di acknowledgement arriva a destinazione abbiamo la certezza che il messaggio è stato ricevuto dal destinatario UDP versione at-most-once • Obiettivo: ottenere la sicurezza che un comando con UDP arrivi a destinazione • Passo 2: ritrasmissione del messaggio in caso di scadenza di un timeout La ritrasmissione può essere fatta un numero N di volte definito a priori per evitare tentativi all’infinito. Dopodiché si considera il nodo destinazione caduto. P1 P2 2a possibilità P1 P2 3a possibilità UDP versione at-most-once • Obiettivo: ottenere la sicurezza che un comando con UDP arrivi a destinazione P1 P2 • Passo 3: aggiungere una numerazione per evitare la ricezione di uno stesso messaggio due volte. • Il messaggio non viene passato alla parte applicativa se è ripetuto. K K K K 2a possibilità Solo ack UDP versione at-most-once • Obiettivo: ottenere la sicurezza che un comando con UDP arrivi a destinazione P1 P2 P3 • Passo 4: aggiunta di un livello per gestire gli acknowledgement • Il processo P3 (di livello applicativo) può andarsene dopo aver ricevuto il messaggio. • Altrimenti il processo P3 dovrebbe restare per vedere se il mittente ha ricevuto l’acknowledgement Receive() K K return K K Solo ack 2a possibilità Un altro protocollo… • Il TCP transazionale può essere utilizzato per realizzare una chiamata a procedura remota. • Prevede tre pacchetti per implementare tutta la logica di TCP e di ottenere i relativi vantaggi. Risulta quindi essere di poco più pesante rispetto al protocollo utilizzato. • L’utilizzo di questo protocollo permetterebbe di superare i problemi riconosciuti dell’algoritmo sviluppato: – Non riconoscimento dei messaggi precedenti all’ultimo ricevuto. Algoritmi di sincronizzazione Algoritmi di sincronizzazione • Basato sulla relazione di Lamport Componente 1: Ta Componente 2: Tb Componente 3: Tc Ta:P1 Ta:P1 Ta:P1 Tb:P2 Tb:P2 Tb:P2 Tc:P3 Tc:P3 Tc:P3 To:Po To:Po To:Po Il componente 1 arriva al 2arrivati I componenti sono tutti3 alcheckpointCosto algoritmo: N(N – 1) = O(N2) checkpoint: si può proseguire Algoritmi di sincronizzazione pronto prossimo pronto prossimo pronto Servizio dei gruppi prossimo Servizi troppo carichi di lavoro Costo algoritmo: N + N = 2 N = O(N) Algoritmi di sincronizzazione pronto prossimo pronto coordinator pronto Servizio dei gruppi Scarica la responsabilità del secondo messaggio su uno dei componenti prossimo Costo algoritmo: N + 1 + (N – 1) = 2 N = O(N) Altri possibili algoritmi… • Estensioni a gruppi di oggetti per risorse fault-tolerant (modello a copie attive) – Le copie rappresentano i componenti di gruppo – Pro: modello studiato, sperimentato e approfondito – Contro: mancanza del concetto di minimizzazione dei tempi di contatto fra le “copie attive” • L’utilizzo del protocollo multicast di basso livello (IGMP) permetterebbe di semplificare alcune delle fasi degli algoritmi (messaggi di “prossimo” attraverso un multicast) – semantica: ricezione di un acknowledgement da tutti i componenti del gruppo. Conferma positiva e sollecito selettivo (utilizzando la parte di infrastruttura già realizzata) Finistauri Matteo Progetto di una architettura per l’esecuzione distribuita e coordinata di azioni Progetto per l’esame di Reti di Calcolatori L-S Prof. Antonio Corradi