Aprile 2004Reti di Calcolatori LS – Servizio di Annunci Distribuito1 Reti di Calcolatori LS...

17
Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 1 Reti di Calcolatori LS REALIZZAZIONE DI UN SERVIZIO DI ANNUNCI DISTRIBUITO Studente: Ludovisi Cesidio Matricola: 0000169645

Transcript of Aprile 2004Reti di Calcolatori LS – Servizio di Annunci Distribuito1 Reti di Calcolatori LS...

Page 1: Aprile 2004Reti di Calcolatori LS – Servizio di Annunci Distribuito1 Reti di Calcolatori LS REALIZZAZIONE DI UN SERVIZIO DI ANNUNCI DISTRIBUITO Studente:

Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 1

Reti di Calcolatori LS

REALIZZAZIONE DI UN SERVIZIO

DI ANNUNCI DISTRIBUITO

Studente: Ludovisi CesidioMatricola: 0000169645

Page 2: Aprile 2004Reti di Calcolatori LS – Servizio di Annunci Distribuito1 Reti di Calcolatori LS REALIZZAZIONE DI UN SERVIZIO DI ANNUNCI DISTRIBUITO Studente:

Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 2

INTRODUZIONE

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

Abstract: • descrizione generale del progetto

• maggiore approfondimento sulla parte implementativa

Obiettivi: • decentralizzazione della architettura

• dinamicità della architettura

• gestione della fault tollerance

• gestione Qos

• efficienza del servizio

Page 3: Aprile 2004Reti di Calcolatori LS – Servizio di Annunci Distribuito1 Reti di Calcolatori LS REALIZZAZIONE DI UN SERVIZIO DI ANNUNCI DISTRIBUITO Studente:

Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 3

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)

Page 4: Aprile 2004Reti di Calcolatori LS – Servizio di Annunci Distribuito1 Reti di Calcolatori LS REALIZZAZIONE DI UN SERVIZIO DI ANNUNCI DISTRIBUITO Studente:

Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 4

ARCHITETTURA LOGICA

Nodo 2

Nodo 1 Nodo N

CORE del Servizio

MASTERSLAVE

server_ID 1

server_ID 2

server_ID N

AnnouncementService

BindingSevice

2LevelRegistry1LevelRegistry

NODO iDB DB

Page 5: Aprile 2004Reti di Calcolatori LS – Servizio di Annunci Distribuito1 Reti di Calcolatori LS REALIZZAZIONE DI UN SERVIZIO DI ANNUNCI DISTRIBUITO Studente:

Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 5

ANNOUNCEMENT SERVICE

Servizio Locale (lettura - inserimento)

Nodo 2

Nodo 1 Nodo N

1) readLocal / insert

DataBaseNodo 2

2) read / write

bloccante – callback - asincrono

CALLBACK

Cliente i

host Nodo2

port registry2 Nodo2

Page 6: Aprile 2004Reti di Calcolatori LS – Servizio di Annunci Distribuito1 Reti di Calcolatori LS REALIZZAZIONE DI UN SERVIZIO DI ANNUNCI DISTRIBUITO Studente:

Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 6

ANNOUNCEMENT SERVICE

Nodo 2

Nodo 1 Nodo N

1) readAll

2) readLocal 3) readLocal

DataBaseNodo 2

4) read

5) announcements

Servizio Distribuito (lettura)

bloccante - callback

CALLBACK

Cliente i

host Nodo2

port registry2 Nodo2

Page 7: Aprile 2004Reti di Calcolatori LS – Servizio di Annunci Distribuito1 Reti di Calcolatori LS REALIZZAZIONE DI UN SERVIZIO DI ANNUNCI DISTRIBUITO Studente:

Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 7

BINDING SERVICE (1/2)

Nodo 2

Nodo 1 Nodo N

registry1 level

registry1 level

registry1 level

1) bindAll

2) update

3) update

8) bindLocal

7) update ?

4) bindLocal

9) update

11) update ?

5) update

10) verify

6) verify

New Nodo

registry1 level host NodoN

port registry2 NodoN

Page 8: Aprile 2004Reti di Calcolatori LS – Servizio di Annunci Distribuito1 Reti di Calcolatori LS REALIZZAZIONE DI UN SERVIZIO DI ANNUNCI DISTRIBUITO Studente:

Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 8

BINDING SERVICE (2/2)

Nodo 2

Nodo 1 Nodo N

registry1 level

registry1 level

registry1 level

New Nodo

registry1 level

Page 9: Aprile 2004Reti di Calcolatori LS – Servizio di Annunci Distribuito1 Reti di Calcolatori LS REALIZZAZIONE DI UN SERVIZIO DI ANNUNCI DISTRIBUITO Studente:

Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 9

GESTIONE QoS

thmax

thmin

Pay

Pay

Pay

Free

Free

Freethmax

thmin

Pay

Pay

Pay

Free

Free

FreeEmpty

Full

PAYQUEUE

Servizio Locale

(lettura - inserimento)

Servizio Distribuito

(lettura)

QoS:

• differenziazione del servizio

• azioni preventiva per evitare congestione

ute

nti

con

tem

por

anei

ute

nti

con

tem

por

anei

Page 10: Aprile 2004Reti di Calcolatori LS – Servizio di Annunci Distribuito1 Reti di Calcolatori LS REALIZZAZIONE DI UN SERVIZIO DI ANNUNCI DISTRIBUITO Studente:

Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 10

GESTIONE FAULT TOLLERANCEIpotesi:

• guasto singolo

• probabilità di guasto bassa durante il recovery

MEMORIA STABILE

OGGETTO SERVER

REGISTRY • organizzazione gerarchica• replicazione

• 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

Gestione Fault Tollerance su tre livelli:

Page 11: Aprile 2004Reti di Calcolatori LS – Servizio di Annunci Distribuito1 Reti di Calcolatori LS REALIZZAZIONE DI UN SERVIZIO DI ANNUNCI DISTRIBUITO Studente:

Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 11

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

Page 12: Aprile 2004Reti di Calcolatori LS – Servizio di Annunci Distribuito1 Reti di Calcolatori LS REALIZZAZIONE DI UN SERVIZIO DI ANNUNCI DISTRIBUITO Studente:

Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 12

IMPLEMENTAZIONE DEL SISTEMA (2/5)Setting

AnnouncementServerApplication

AnnouncementClientApplication

BindingServerApplication

AnnouncementServer

IAnnouncementClient

IParticipationRequest

AnnouncementMaster

AnnouncementSlave PerticipationRequestImpl

ReadThread

MemoryManager

BindThread

UnbindThread

MasterCheckTimestamp

CheckThreadMaster

CheckThreadSlave

AnnouncementClientImpl

ClientThread

IAnnouncementServer

AnnouncementServerImpl

Announcement

lancia

lancia

lancia

usa

callbackgestisce

masterCheck

updateTimestamp

crea

crea

lancia

lancia

Java Package:announcement.executionannouncement.applicationannouncement.application.rmiInterfaceannouncement.application.implementationannouncement.application.thread

Page 13: Aprile 2004Reti di Calcolatori LS – Servizio di Annunci Distribuito1 Reti di Calcolatori LS REALIZZAZIONE DI UN SERVIZIO DI ANNUNCI DISTRIBUITO Studente:

Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 13

IMPLEMENTAZIONE DEL SISTEMA (3/5)

AnnouncementServerImpl

nClient : IntegernQueueClient : Integersetting : Setting

insert(announcement : Announcement, key : String)readAll(category : String, subject : String, key : String) : Announcement[]readAll(category : String, subject : String, key : String, client : IAnnouncementClient)readLocal(category : String, subject : String, key : String) : Announcement[]readLocal(category : String, subject : String, key : String, client : IAnnouncementClient)beginForLocal(pay : Boolean)endForLocal(pay : Boolean)beginForRemote(pay : Boolean)endForRemote(pay : Boolean)

ParticipationRequestImpl

setting : Setting

bindAll(newHost : String, newRegistryPort1 : String, newRegistryPort2 : String, newName : String) : BooleanbindLocal(newHost : String, newRegistryPort1 : String, newRegistryPort2 : String, newName : String) : BooleanunbindAll(oldHost : String, oldRegistryPort1 : String, oldRegistryPort2 : String, oldName : String)unbindLocal(oldHost : String, oldRegistryPort1 : String, oldRegistryPort2 : String, oldName : String)updateFirstLevelRegistry(myHost : String, myRegistryPort1 : String)

AnnouncementClientImpl

callback(announcements : Announcement[])

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)

Page 14: Aprile 2004Reti di Calcolatori LS – Servizio di Annunci Distribuito1 Reti di Calcolatori LS REALIZZAZIONE DI UN SERVIZIO DI ANNUNCI DISTRIBUITO Studente:

Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 14

IMPLEMENTAZIONE DEL SISTEMA (4/5)

CheckThreadMasterCheckThreadSlave

AnnouncementMaster

setting : Settingtimestamp : MasterChackTimestampannouncementServer : AnnouncementServerImplbindingServer : ParticipationRequestImpl

insert()readAll()readLocal()bindAll()bindLocal()unbindAll()unbindLocal()updateFirstLevelRegistry()recovery() : BooleanupdateTimestamp()

AnnouncementSlave

setting : Settingtimestamp : MasterChackTimestampannouncementServer : AnnouncementServerImplbindingServer : ParticipationRequestImpl

insert()readAll()readLocal()bindAll()bindLocal()unbindAll()unbindLocal()updateFirstLevelRegistry()masterCheck() : Boolean

MasterCheckTimestamp

timestamp : Date

update()verify() : DatesetNull()

update verify

Realizzazione del Modello di Replicazione Master / Slave:

masterChech()updateTimestamp()

Page 15: Aprile 2004Reti di Calcolatori LS – Servizio di Annunci Distribuito1 Reti di Calcolatori LS REALIZZAZIONE DI UN SERVIZIO DI ANNUNCI DISTRIBUITO Studente:

Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 15

IMPLEMENTAZIONE DEL SISTEMA (5/5)

AnnouncementServer

setting : SettingserverId : String

start()binding(host : String, port : String, action : String)

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

Page 16: Aprile 2004Reti di Calcolatori LS – Servizio di Annunci Distribuito1 Reti di Calcolatori LS REALIZZAZIONE DI UN SERVIZIO DI ANNUNCI DISTRIBUITO Studente:

Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 16

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

Page 17: Aprile 2004Reti di Calcolatori LS – Servizio di Annunci Distribuito1 Reti di Calcolatori LS REALIZZAZIONE DI UN SERVIZIO DI ANNUNCI DISTRIBUITO Studente:

Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 17

CONCLUSIONI

Obiettivi:

•decentralizzazione

•dinamicità

•fault tollerance

Vantaggi:

• scalabilità

• robustezza

Svantaggi:

• costi

• overhead

Bilanciamento:

• semplicità dei protocolli

• non sincronizzazione ridondante

• principio di Minima Intrusione

Java RMI:

• interazione ad alto livello

• supporto per la concorrenza

• supporto per la comunicazione

• naming service• method invocation• interfacce del servizio

Progettazione:

Realizzazione: