Laboratorio di Sistemi Distribuiti Leonardo Mariani



Documenti analoghi
7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind()

RMI. Java RMI RMI. G. Prencipe

Java Remote Method Invocation

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE

Telematica II 17. Esercitazione/Laboratorio 6

Registri RMI. Massimo Merro Univ. Verona Programmazione di Rete 90 / 247

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Programmazione ad Oggetti Modulo A (Esame del 11/9/2015)

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Compute engine generici in RMI

Opuscolo Outlook Express

Mobilità di Codice. Massimo Merro Programmazione di Rete 128 / 144

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

Chat. Si ha un server in ascolto sulla porta Quando un client richiede la connessione, il server risponde con: Connessione accettata.

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

Product Shipping Cost Guida d'installazione ed Utilizzo

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

Grafico della parabola

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

Gestire le sessioni con le Servlet

Main System Monitor Keyboard

Programmazione di sistemi distribuiti

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

LCMobile Restaurant. Guida su come usare il software per palmare LCMobile Restaurant.

ECCO COME FUNZIONA. Ti mostriamo ora come acquistare un volantino.

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

Organizzazione della lezione. 15. Java Remote Method Invocation (3) Lo schema del Factory Design Pattern - 1. Factory design pattern

Il Gestore Eventi di OpenSPCoop i. Il Gestore Eventi di OpenSPCoop

Esercitazione di Sistemi Distribuiti: Java RMI

Activation In sintesi: è inutile avere attivi degli oggetti se non vengono utilizzati

Algoritmi di Ricerca. Esempi di programmi Java

Programmare in Java. Olga Scotti

Parte II: Reti di calcolatori Lezione 12

Guida Rapida di Syncronize Backup

GUIDA AL PRONTUARIO MOBILE

Online Help StruxureWare Data Center Expert

Realizzazione di una classe con un associazione

Assegnamento di un indirizzo IP temporaneo a dispositivi Barix

Palazzetto del Biliardo Tournaments

Registratori di Cassa

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni server

CdL in Medicina Veterinaria - STPA AA

Guida all uso di Java Diagrammi ER

Per utilizzare il sistema VCP il programmatore deve inserire una porzione di codice di VCP nella sua applicazione.

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

INSTALLAZIONE E CONFIGURAZIONE DURC CLIENT PEC E FIRMA DIGITALE

Tale attività non è descritta in questa dispensa

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Test di unità con JUnit4

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO e PARAMETRI2015

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

Tricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002

Mutua esclusione distribuita

POSTA ELETTRONICA Per ricevere ed inviare posta occorrono:

Parte II: Reti di calcolatori Lezione 10

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Sicurezza dei dati. Xml Encryption e Digital Signature. Sicurezza dei dati. XML Encryption. Svantaggio di SSL. SSL (Secure Socket Layer)

Gestione dei servizi all utenza. 3. Autorizzazioni

BDCC : Guida rapida all utilizzo

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Reti di Telecomunicazione Lezione 6

UnicastRemoteObject. Massimo Merro Programmazione di Rete 103 / 124

Corso di programmazione di sistemi mobile 1. Android. Google Cloud Messaging

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME)

Cookie. Krishna Tateneni Jost Schenck Traduzione: Luciano Montanaro

Socket & RMI Ingegneria del Software - San Pietro

Servizi telematici on-line per aziende ed intermediari

Istruzioni per l installazione

Corso di Reti di Calcolatori T

MOBILE WEB DESIGN TUTORIAL ANDROID METAIO AUGMENTED REALITY

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Aprire, preparare un documento da utilizzare come documento principale per una stampa unione.

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 Outline

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'

Programmazione distribuita

Funzioni di Trasferimento Movimenti

RT VIRTUAL CARD. Manuale Utente

Esercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008

Guida alla registrazione on-line di un NovaSun Log

CONTROLLO DI GESTIONE DELLO STUDIO

XML e PHP. Gestire XML con PHP. Appendice

LaCie Ethernet Disk mini Domande frequenti (FAQ)

Esercizi su Callback RMI

LA SOMMINISTRAZIONE DEGLI ESAMI CILS ISTRUZIONI PER LO SVOLGIMENTO DEL

Soluzione dell esercizio del 2 Febbraio 2004

GUIDA ALL UTILIZZO DEL SOFTWARE SCANPROT

CAMBIO DI GESTIONE DEGLI ESEMPLARI RICHIESTI DALLE BIBLIOTECHE

RMI: metodi equals e hashcode

Prova d Esame Compito A

Utilizzo delle formule in Excel

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Tipi fondamentali di documenti web

Transcript:

Laboratorio di Sistemi Distribuiti Leonardo Mariani ELECTION ALGORITHMS In molti sistemi distribuiti un processo deve agire da (o svolgere un ruolo particolare) per gli altri processi. Spesso non è importante quale processo assuma il ruolo di, ma è importante che ce ne sia sempre uno. Gli Election Algorithms sono usati per eleggere un nuovo quando il attuale smente di funzionare. In questa esercitazione implementeremo due algoritmi (Bully Algorithm e Ring Algorithm) usando Java RMI. Attività preliminare (per entrambi gli algoritmi): - creare un file di configurazione con l elenco dei calcolatori disponibili ed il loro numero IP. Ogni calcolatore è indicato attraverso un identificatore numerico univoco che è dato dall ultima cifra del numero IP. - il calcolatore con il valore dell ID più grande è il (convenzione che viene rispettata anche dopo il fallimento del ) Bully Algorithm StartUp: - leggere la lista di calcolatori dal file di configurazione e memorizzare il

- registrare l oggetto remoto che si interfaccia con gli altri processi nell object registry, usare bully come identificatore - recuperare un reference remoto per ogni calcolatore del sistema (se un oggetto remoto non è temporaneamente disponibile aspettare indefinitamente che lo diventi) Running: - inviare un ping() al ad intervalli di tempo fissati Thread.sleep(ms) - Ricezione Ping: rispondi con return - Eccezione nell invio del ping (fallimento del ) => Attiva fase di elezione Elezione: - inviare un elect() a tutti i calcolatori con identificatore superiore al proprio o ricezione di almeno una risposta => non fare nulla, non sei tu il prossimo o ricezione di nessuna risposta => vai alla fase di coordinazione, sei il prossimo - Ricezione election: rispondi con return, ed invia un messaggio di elect() a tutti i calcolatori con identificatore superiore al proprio Coordinazione: - inviare coordinator(this) a tutti i calcolatori per informarli dell identità del nuovo - Ricezione coordinator(): aggiorna l identità del attuale, rimuovi i calcolatori con identificatore maggiore del dalla lista dei calcolatori del sistema INTERFACCIA DI UN BULLYSERVER: package bullyalgorithm.interfaces; import java.rmi.remote; import java.rmi.remoteexception; public interface BullyServerInterface extends Remote{ public void ping() throws RemoteException; public void elect()throws RemoteException; public void coordinator(bullyserverinterface bs) throws RemoteException; public String getname() throws RemoteException;

Ring Algorithm StartUp: - leggere la lista di calcolatori dal file di configurazione e memorizzare il - registrare l oggetto remoto che si interfaccia con gli altri processi nell object registry, usare ring come identificatore - recuperare un reference remoto per ogni calcolatore del sistema (se un oggetto remoto non è temporaneamente disponibile aspettare indefinitamente che lo diventi) - i nodi sono ordinati in base al loro identificatore Running: - inviare un ping() al ad intervalli di tempo fissati Thread.sleep(ms) - Ricezione Ping: rispondi con return - Eccezione nell invio del ping (fallimento del ) => Attiva fase di elezione Elezione: - inviare un messaggio di election(em) al nodo successivo (se il nodo successivo non risponde provare con quello che segue, si faccia l ipotesi che esista sempre almeno un nodo che risponde) con dentro proprio ID - Ricezione Election: controllare se il proprio ID è nel messaggio, o No -> aggiungere il proprio id al messaggio ed inoltrarlo o SI -> vai alla fase di coordinazione, il messaggio ha già fatto un giro Coordinazione: - invia messaggio coordinator(cm), cm è ottenuto copiando il contenuto del messaggio em - Ricezione Coordinator: il è il nodo di massimo identificatore contenuto in cm o se il è nuovo -> memorizzare l identità del nuovo, aggiornare il set di computer disponibili, ed inoltrare il messaggio al nodo successivo o se il non è nuovo -> il messaggio ha compiuto un giro e quindi deve essere scartato ELECTION MESSAGE: package ringalgorithm.messages; import java.util.enumeration; import java.util.vector; public class ElectionMessage implements java.io.serializable{

private Vector nodes; public void addnodeid(string id) { nodes.add(id); public Enumeration getnodelist() { return nodes.elements(); public boolean existnodeid(string id) { return (nodes.indexof(id)!=-1); COORDINATOR MESSAGE package ringalgorithm.messages; import java.util.enumeration; import java.util.vector; public class CoordinatorMessage implements java.io.serializable{ private Vector nodes; public CoordinatorMessage(ElectionMessage em) { Enumeration e = em.getnodelist(); while (e.hasmoreelements()) { nodes.add(e.nextelement()); public Enumeration getnodelist() { return nodes.elements(); public String getmaxid() { if (nodes.size()<=0) return null; int maxid = -1; Enumeration e = getnodelist(); while (e.hasmoreelements()) { int value = Integer.parseInt((String)e.nextElement()); if (value > maxid) maxid = value; return String.valueOf(maxId); RING SERVER: package ringalgorithm.interfaces;

import java.rmi.remote; import java.rmi.remoteexception; public interface RingServerInterface extends Remote{ public void ping() throws RemoteException; public void elect(electionmessage em)throws RemoteException; public void coordinator(coordinatormessage cm) throws RemoteException; public String getname() throws RemoteException; COLLAUDO DEGLI ALGORITMI: Operazione preliminare: inserire delle istruzioni di output che stampano l elenco dei nodi del sistema e l identità del ogni volta che sono modificati. Esecuzioni: - Inserire valori differenti dell intervallo di ping per i vari calcolatori. Dopo lo startup il arresta il processo. Verificare che il nuovo sia selezionato opportunamente. - Inserire in tutti i calcolatori lo stesso intervallo di ping (scegliere un valore piccolo). Dopo lo startup il arresta il processo. Verificare che il nuovo sia selezionato opportunamente. - Far fallire il primo, eleggere quindi il successivo. Arrestare il appena eletto e verificare che si ottenga un nuovo. Continuare così fino a che non sopravvivono solamente due calcolatori. - Dopo lo startup arrestare i due nodi che non sono coordinatori con identificatore più alto. A questo punto arrestare il e verificare che il nuovo sia eletto correttamente.