Reti di Calcolatori LS
REALIZZAZIONE
DI UN SERVIZIO
DI ANNUNCI DISTRIBUITO
Studente: Ludovisi Cesidio
Matricola: 0000169645
Aprile 2004
Reti di Calcolatori LS – Servizio di Annunci Distribuito
1
INTRODUZIONE
Abstract:
• descrizione generale del progetto
• maggiore approfondimento sulla parte implementativa
Lo scopo del progetto è quello di realizzare un servizio di annunci distribuito
che consenta ad un cliente di:
• inserire un nuovo annuncio
• trovare annunci di interesse
Obiettivi:
Aprile 2004
• decentralizzazione della architettura
• dinamicità della architettura
• gestione della fault tollerance
• gestione Qos
• efficienza del servizio
Reti di Calcolatori LS – Servizio di Annunci Distribuito
2
DESCRIZIONE DEL SISTEMA
Il sistema è composto da un certo numero di nodi che formano il core del servizio
Il servizio consiste nel gestire un insieme di annunci in modo distribuito
Quindi un utente può:
• inserire un annuncio su un nodo (asincrono)
• trovare annunci di interesse su un nodo (sincrono bloccante - callback)
• trovare annunci di interesse su l’insieme dei nodi (sincrono bloccante - callback)
Inoltre si svolge la gestione dinamica del binding di nuovi nodi:
• bind di un nuovo nodo (sincrono bloccante)
• unbind di un nodo (asincrono)
Aprile 2004
Reti di Calcolatori LS – Servizio di Annunci Distribuito
3
ARCHITETTURA LOGICA
CORE del Servizio
1LevelRegistry
2LevelRegistry
server_ID 1
AnnouncementService
server_ID 2
BindingSevice
server_ID N
SLAVE
NODO i
Aprile 2004
Reti di Calcolatori LS – Servizio di Annunci Distribuito
MASTER
DB
DB
4
ANNOUNCEMENT SERVICE
Servizio Locale (lettura - inserimento)
1) readLocal / insert
2) read / write
DataBase
Nodo 2
host Nodo2
port registry2 Nodo2
bloccante – callback - asincrono
Aprile 2004
Reti di Calcolatori LS – Servizio di Annunci Distribuito
5
ANNOUNCEMENT SERVICE
Servizio Distribuito (lettura)
1) readAll
4) read
DataBase
Nodo 2
5) announcements
2) readLocal
host Nodo2
3) readLocal
port registry2 Nodo2
bloccante - callback
Aprile 2004
Reti di Calcolatori LS – Servizio di Annunci Distribuito
6
BINDING SERVICE (1/2)
registry
1 level
10) verify
9) update
6) verify registry
1 level
registry
1 level
8) bindLocal
2) update
5) update
4) bindLocal
3) update
7) update ?
11) update ?
Aprile 2004
registry
1 level
1) bindAll
host NodoN
port registry2 NodoN
Reti di Calcolatori LS – Servizio di Annunci Distribuito
7
BINDING SERVICE (2/2)
registry
1 level
registry
1 level
registry
1 level
registry
1 level
Aprile 2004
Reti di Calcolatori LS – Servizio di Annunci Distribuito
8
GESTIONE QoS
QoS:
• differenziazione del servizio
• azioni preventiva per evitare congestione
Servizio Locale
(lettura - inserimento)
Servizio Distribuito
(lettura)
Aprile 2004
Pay
thmax
Free
Pay
thmin
Free
Pay
Free
n° utenti contemporanei
n° utenti contemporanei
Full
thmax
PAY
QUEUE
Pay
Empty
Free
Pay
thmin
Reti di Calcolatori LS – Servizio di Annunci Distribuito
Free
Pay
Free
9
GESTIONE FAULT TOLLERANCE
Ipotesi:
• guasto singolo
• probabilità di guasto bassa durante il recovery
Gestione Fault Tollerance su tre livelli:
• organizzazione gerarchica
• replicazione
REGISTRY
OGGETTO SERVER
MEMORIA STABILE
Aprile 2004
• Master / Slave
• modello a copia fredda
• timestamp condiviso
• gestione della consistenza delle copie
• scrittura:
• prima su copia 1  poi su copia 2
• lettura:
• lettura da copia 1  lettura da copia 2
• confronto  ricovery se necessario
Reti di Calcolatori LS – Servizio di Annunci Distribuito
10
IMPLEMENTAZIONE DEL SISTEMA (1/5)
Scelte Realizzative:
•
•
•
•
uso di Java RMI
database realizzati mediante file XML
configurazione dei server mediante file XML
programmazione concorrente attraverso Thread
Considerazioni Introduttive sulla Implementazione:
• attenzione concentrata su protocolli e politiche di gestione
• rilassati vincoli di efficienza:
uso di SAX per il parsering dei file XML
Aprile 2004
Reti di Calcolatori LS – Servizio di Annunci Distribuito
11
IMPLEMENTAZIONE DEL SISTEMA (2/5)
Setting
IAnnouncementClient
AnnouncementClientApplication
ClientThread
AnnouncementClientImpl
AnnouncementServerApplication
IAnnouncementServer
BindingServerApplication
callback
gestisce
CheckThreadMaster
AnnouncementMaster
lancia
AnnouncementServerImpl
usa
Announcement
MemoryManager
lancia
updateTimestamp
ReadThread
crea
AnnouncementServer
MasterCheckTimestamp
crea
lancia
UnbindThread
masterCheck
lancia
AnnouncementSlave
PerticipationRequestImpl
lancia
CheckThreadSlave
BindThread
IParticipationRequest
Java Package:
announcement.execution
announcement.application
announcement.application.rmiInterface
announcement.application.implementation
announcement.application.thread
Aprile 2004
Reti di Calcolatori LS – Servizio di Annunci Distribuito
12
IMPLEMENTAZIONE DEL SISTEMA (3/5)
componenti
che implementano
le interfacce RMI remote
Osservazioni:
• Qos gestita attraverso i metodi di prologo ed epilogo
• parallelismo realizzato attraverso le classi: ReadThread, BindThread, UnbindTread
• gestione della “Memoria Stabile” attraverso il componente MemoryManager (read, write)
Aprile 2004
Reti di Calcolatori LS – Servizio di Annunci Distribuito
13
IMPLEMENTAZIONE DEL SISTEMA (4/5)
Realizzazione del Modello di Replicazione Master / Slave:
updateTimestamp()
Aprile 2004
masterChech()
Reti di Calcolatori LS – Servizio di Annunci Distribuito
14
IMPLEMENTAZIONE DEL SISTEMA (5/5)
Realizzazione del gestore del nodo:
Responsabilità del componente:
• parsering del file XML di configurazione del nodo
• inizializzazione dei registry di primo e secondo livello
• creazione dell’oggetto Master e di quello Slave
• creazione dei Thread per la sincronizzazione tra Master e Slave
Aprile 2004
Reti di Calcolatori LS – Servizio di Annunci Distribuito
15
TEST DEL SISTEMA
Fasi:
• creazione dei registry:
rmiRegistry localhost port
• esecuzione dei server dei nodi core del servizio:
java announcement.execution.AnnouncementServerApplication serverId
• esecuzione di un nuovo nodo che effettua il binding:
java announcement.execution.BindingServerApplication host port serverId action
• esecuzione dei clienti:
java announcement.execution.AnnouncementClientApplication host port action pay
ESECUZIONE TEST
Aprile 2004
Reti di Calcolatori LS – Servizio di Annunci Distribuito
16
CONCLUSIONI
Obiettivi:
•decentralizzazione
•dinamicità
•fault tollerance
Progettazione:
Vantaggi:
• scalabilità
• robustezza
Svantaggi:
• costi
• overhead
Bilanciamento:
• semplicità dei protocolli
• non sincronizzazione ridondante
• principio di Minima Intrusione
Java RMI:
• naming service
• method invocation
• interazione ad alto livello
• interfacce del servizio
• supporto per la concorrenza
• supporto per la comunicazione
Aprile 2004
Reti di Calcolatori LS – Servizio di Annunci Distribuito
Realizzazione:
17