JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

23
JARS JavaActiveReplicationS upport Anno Accademico 2004-2005 Bellocchi Marco Maria

Transcript of JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

Page 1: JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

JARSJavaActiveReplicationSupp

ort

Anno Accademico 2004-2005

Bellocchi Marco Maria

Page 2: JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

Obiettivi Realizzazione di un supporto per sistemi

distribuiti per l’alta disponibilità Architettura Modulare

Facilità d’espansione del supporto e semplicità di impiego

Concetto di Risorsa Entità che permette di erogare servizi

Replicazione Attiva Coordinazione tra Copie Attive

Monitoring dei nodi HeartBeat

Page 3: JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

Obiettivi Bilanciamento di carico Fault Tollerance Protocolli e Meccanismi

Protocollo decentralizzato di Mutua Esclusione

Two Phase Commit Protocol Vector Clock e relazione di Lamport

QoS Gestione della QoS Monitoring per controllo della QoS erogata

Page 4: JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

Architettura Generale

RMIRMI RMIRMI

SocketSocket

Client Proxy

RMI

RMI

Socket

Socket

Richieste Callback

Coordination Protocol

FileFileMAILBOXMAILBOX

CHAT

QUEUE

Resources

•Mutua Esclusione Distribuita•Two Phase Commit Protocol•Protocollo di Recovery•Protocollo Gestione Gruppo•…

Services Coordinamento

Comunicazione Comunicazione

Page 5: JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

Risorse Entità gestite dai Server

Replicate su ciascun Server Ognuna ha un identificativo univoco (ID)

Permettono l’erogazione di servizi sollecitate da richieste di Client

Riflessività Definizione dell’interfaccia di operazioni

visibili al cliente che possono essere richieste

Invocazione dinamica di operazioni

Page 6: JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

Proxy Client

Discovery ServerManager

Servers Routing Table

Communication with Client Application

Comunication with Server Entity

Failover Manager

Applicazione locale a quella Client Trasparenza dalla locazione e di comunicazione tra Client e Server

•Applicazione Client svincolata dalla diretta conoscenza del gruppo di Server e del Server a cui è connesso

Gestione della comunicazione tra Client e ServerDiscovery completamente dinamico nella rete locale dei Server attivi che erogano il servizioRouting Table e mantenimento di informazioni di carico dei Server per realizzare bilanciamento di caricoFailover in caso di guasto

•Monitoraggio del Server a cui il Client è connesso per maggiore reattività in caso di guasto

Comunicazione tramite RMI•Richieste dal Cliente verso il Server•Callback dal Server

Page 7: JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

Server

Messages to other Server

Client Manager

GUI

Listener forIncoming

connectionof a Server Node

Client Request Manager

HeartBeat Manager

Receiver of incoming messages

From another Server

Receiver of incoming messages

From another Server

Receiver of incoming messages

From another Server

DiscoveryListener

Discovery Sender

Connection Manager

Coordinator Bridge

Group Protocol Coordinator

TwoPhase Protocol Coordinator

Mutex Protocol Coordinator

Recovery Protocol Coordinator

……..

Configuration Manager

Network Administrator Client Proxy Comunication

Incoming Messages Incoming Messages Incoming Messages

Page 8: JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

Server Comunicazione con Proxy Client tramite RMI Discovery completamente dinamico per individuare un altro elemento

attivo nella rete locale e realizzare il gruppo di erogazione dei servizi Anche connessione esplicita verso un certo server di cui si conosce

l’indirizzo HeartBeat per rilevazione di possibili guasti dei nodi

Possibilità di regolare runtime la frequenza del controllo per adattare il monitoraggio alla qualità o a una particolare esigenza

Possibilità di richiedere al Server di non monitorare affatto Recovey in caso di guasto e controllo della consistenza delle risorse sui

nodi Verifica di eventuali inconsistenze e correzioni basate su algoritmo di voting

Possiede e gestisce le Risorse Riceve le richieste via Client Proxy per erogare un servizio Callback verso il Client Proxy se necessario

Replicazione Attiva Risorse replicate su tutti i nodi Coordinazione con le altre copie per mantenere la consistenza delle risorse

sui servers a fronte di richieste del client che ne modificano lo stato Approssimazione della perfetta sincronia

Utilizzo del protocollo di mutua esclusione distribuito per l’accesso, utilizzo e rilascio della risorsa

Page 9: JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

Semantica delle Richieste del Client

Esecuzione senza notifica Il Client specifica nella richiesta di accesso alla risorsa l’azione che deve

essere effettuata su di essa, e non vuole essere notificato quando questo accade

Fire and Forget Notifica-Esecuzione con rilascio implicito

Il Client specifica solo la volontà di acquisire il lock della risorsa Il Server notifica il cliente quando ha acquisito il lock

Callback Il Client realizza nel metodo-callback specificato le operazioni sulla risorsa

inviando al server le azioni da eseguire su di essa e non effettua esplicitamente l’unlock

Il Server esegue quanto richiesto e effettua l’unlock quando tutte le azioni sulla risorsa sono concluse

Notifica-Esecuzione-Rilascio esplicito Semantica simile alla precedente Unlock deve essere effettuato esplicitamente dal cliente Il Server eventualmente può forzare il cliente a effettuare l’unlock sulla

risorsa Negli ultimi due casi discussi il Server monitorizza il Client che

correntemente ha ottenuto l’accesso alla risorsa e può utilizzarla Permette di accorgersi di eventuali cadute del Client e di effettuare quindi

l’unlock della risorsa

Page 10: JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

Discovery Broadcast su rete locale mediante messaggi

UDP Molteplici applicazioni del meccanismo:

Individuazione di Server attivi Proxy Client to Server per connettere applicazione Client

a un Server Server to Server per creare gruppo di lavoro

Informazioni riguardanti il carico di ciascun Server attivo sulla rete locale

Informazioni utilizzate per bilanciare il carico del sistema Ogni Server stesso numero di Proxy Client “connessi”

Utilizzato anche per monitoraggio della QoS erogata Permette di individuare i Server in una rete a

conoscenza zero

Page 11: JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

Coordinazione Copie Attive Il Client tramite proxy invia la richiesta per

effettuare operazioni su una risorsa Il Server utilizza per poter acquisire il diritto di

utilizzare la risorsa il protocollo di mutua esclusione distribuito

Ricart & Agrawala Mutua esclusione per Ordinamento Atomico di

operazioni su una stessa risorsa Per ogni Risorsa

Una coda contenenti messaggi di richieste di accesso Logical Clock Ogni Server ha una priorità acquisita dinamicamente

all’ingresso del gruppo

Page 12: JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

Coordinazione semplice

Queue_Resource Queue_Resource Queue_Resource

S1 S3S2

S1_Ask_Queue

S1_Ask_Queue S1_Ask_QueueS1_Ask_Queue

S3_Ok_Queue

S2_Ok_Queue

S2_Ok_Queue

S3_Ok_Queue

S1_Release_QueueLock della risorsa acquisito:

inserisce/estrae un messaggio

Update_Queue

Page 13: JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

Coordinazione con richieste concorrenti

Queue_Resource Queue_Resource Queue_Resource

S1 S3S2

S1_Ask_Queue

S2_Ask_Queue

S1_Ask_Queue S1_Ask_QueueS1_Ask_Queue

S2_Ask_Queue S2_Ask_QueueS2_Ask_Queue

Ipotiziamo che S1 e S2 hanno rispettivamente lo stesso timestamp nel messaggio di richiesta che si sono inviati a vicenda

S2 ha priorità maggiore di S1, quindi non effettua il reply immediato

S1 si accorge di essere meno prioritario di S2 e pur avendo stesso timestamp, deve necessariamente dare l’ok a S2

S3_Ok_Queue S3_Ok_Queue

S3_Ok_Queue S3_Ok_Queue

S1_Ok_Queue

S1_Ok_QueueLock della risorsa

acquisito: inserisce/estrae un

messaggio

Update_Queue Update_QueueS2_Release_Queue S2_Release_Queue

S2_Ok_Queue

S2_Ok_Queue

Lock della risorsa acquisito: inserisce/estrae un messaggio,

Effettua l’update della coda eEffettua infine il rilascio

Page 14: JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

Gestione Dinamicità del Gruppo dei Servers

1-Enter_Group

2-Freeze&UpdateResources

3-Ok_To_Enter

4 -Enter_Group

6-Ok_To_Enter

7-Update_Resources

5-Freeze&UpdateResources

Nodo Entrante

8-Unfreeze_Resource

Necessità di effettuare un momentaneo freeze del servizio affinchè il Server entrante possa copiare le risorse in uno stato consistente con il gruppo

I Servers “congelati” bufferizzano le richieste dei Client che non vengono perse ma servite in ritardo Altre possibilità più efficienti…

Una volta effettuata la copia delle risorse, il server entrante invia il messaggio di scongelamento Il gruppo incomincia ad erogare i servizi a

partire dalle richieste che sono state bufferizzate Il Server entrante ottiene dinamicamente la

priorità al momento del join con il gruppo

Page 15: JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

Gestione Dinamicità del Gruppo dei Servers

1-Leave_Group

1-Leave_Group

2- Update_Routing_Table

2- Update_Routing_Table

Nodo Uscente All’uscita del nodo, ciascun Server deve aggiornare la propria Routing Table

Ogni Server deve eliminare i messaggi di Ask_Lock_IdResource e Ok_Lock_IdResource pendenti appartenenti al nodo uscito In questo modo si può continuare ad

erogare il servizio non appena tutti si sono aggiornati alla nuova situazione

Page 16: JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

HeartBeat I Server si controllano a vivenda mediante

messaggi di HeartBeat Se ci si accorge o si presume che un nodo sia

caduto Eliminazione dei messaggi di

Ask_Lock_IdResource e Ok_Lock_IdResource pendenti appartenenti al presunto nodo caduto

Possibilità di inconsistenza sulle risorse se il server caduto ha modificato la risorsa e non ha eseguito l’update su tutti i nodi

Necessità di un protocollo che permetta di controllare ed eventualmente rendere consistenti le risorse replicate sui vari nodi

Il Server effettua il freeze delle risorse e bufferizza le richieste dei Client

Il Server notifica agli altri elementi di aver terminato il freeze e si mette in attesa di ricevere da tutti lo stesso messaggio

Ricevuti tutti i messaggi di freeze, il sistema si trova in uno stato di congelamento globale

Il Server invia a tutti lo stato delle proprie risorse locali, aspettando di rivevere altrettanto da tutti i Server del gruppo

Una volta acquisita la conoscenza globale, si impiega un algoritmo di “voting”

Si modifica eventualmente lo stato delle risorse in accordo a quello concordato dalla maggioranza dei Server

Il Server invia il messaggio che indica la fine del recovery e si mette in attesa della ricezione dello stesso messaggio da parte di tutti gli altri

Si possono infine scongelare le risorse e riattivare i servizi servendo le richieste dei Client

Recovery del Gruppo

Page 17: JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

Servizi e meccanismi aggiuntivi

Realizzazione del protocollo Two Phase Commit Proprietà Tutto o Niente Utilizzato per inserire nel sistema nuove

risorse dinamicamente Per un possibile coordinamento tra le copie

Implementazione dei Vector Clock di Lamport API per l’aggiornamento e la gestione

dinamica dei vector clock. Non sono ancora state implementate

politiche di base da utilizzare per relizzare uno specifico ordinamento di determinati eventi all’interno del sistema

Page 18: JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

QoS: Broker Broker associato ad ogni Risorsa per garantire

una determinata QoS nell’erogazione dei servizi che essa offre

Richieste del Client inserite in una coda prima di essere processate

Broker realizza scheduling delle richieste di utilizzo delle risorse da parte dei Clienti manipolando la coda

In base alla priorità del Cliente Prima quelli che pagano di più

In base al tipo di richiesta eventualmente specificata dal Client

Prima le richieste più brevi che occupano meno la risorsa in termini di tempo

Politiche Semplici e poco impegnative nel rispetto del principio di minima intrusione!!!

Client Proxy

Richiesta

Server

Resource_A

QoS Resource_A

Resource_B

QoS Resource_B

•Ordinamento delle richieste in una coda•Politiche differenziate…

Page 19: JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

QoS: Monitoring Applicazione per monitoring della QoS erogata

dal gruppo di Server Richieste rivolte ai Server per raccogliere

informazioni per monitorare il Sistema Numero di Clienti connessi a ciascun Server Numero di Server a cui ciascuno è connesso

Individuazione di partizionamento di rete Numero di operazioni eseguite in totale sulle risorse

da ciascun server Utilizzo del discovery su rete locale per

individuare i Server attivi Si monitorizza solo la rete locale

Page 20: JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

Implementazione concreta Risorse messe a disposizione dei Clienti

Queue Counter File Chat

Sperimentate le differenti semantiche di richieste del Client

L’applicazione Client “comunica” con il ProxyClient mediante diretta invocazione di metodi

Page 21: JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

Limiti del Supporto Canali di comunicazione devono essere affidabili

Non possono essere persi messaggi, ma solo ritardati Connessioni tra Server punto a punto

Grafo di connessione completo Forte over-head nell’accesso alle Risorse

2*(N-1) messaggi scambiati per ogni accesso Protocollo di recovery complesso

Numero di messaggi scambiati molto elevato Scalabilità del sistema

Era nota in partenza Replicazione Attiva!

Page 22: JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

Sviluppi Futuri Persistenza fisica dello stato delle risorse per salvataggio su

file system ed eventuale ripristino Naming e Trading Service

Ricerca dei servizi Notification Service

Notifica per eventi a cui il Cliente ha espresso interesse Publish/Subscribe

Servizio di Login per i Client Possibilità di gestire QoS in base alla priorità del Client

Comunicazione Client-Proxy veicolata tramite protocolli standard

SOAP …

Possibilità di utilizzare risorse non replicate ma semplicemente partizionate su nodi differenti

Il Supporto in realtà permette già una gestione simile… Architettura utilizzabile anche per alte prestazioni

Tramite semplice espansione aggiungendo moduli opportini

Page 23: JARS JavaActiveReplicationSupport Anno Accademico 2004-2005 Bellocchi Marco Maria.

Conclusioni Supporto facile da utilizzare e espandibile Utilizzabile per realizzare una infinità di

applicazioni MOM facilmente implementabile FSDistribuiti Mailbox ad alta disponibilità …

Approfondimento di molti aspetti affrontati nell’ambito della programmazione distribuita e nella realizzazione di Middleware