Middleware per la
sincronizzazione di
ambienti eterogenei
Progetto di Reti di Calcolatori LS
Emanuele Crescentini
matr. 218973
Ingegneria Informatica LS
Problema

Necessità di sincronizzazione di un sistema
gestionale eterogeneo:
PHP, MySQL
?
?
Pocket Outlook
Office Outlook
Garantita da
Microsoft
Problema

Necessità di una sincronizzazione
“intelligente”:
Quando due dati discordano:
- mantengo il più recente?
- mantengo il meno recente?
- chiedo all’utente?
Obiettivo

Studiare (ed implementare) un middleware
che permetta la sincronizzazione tra elementi
di diverse architetture.

Supportare politiche che per una scelta
“intelligente” della sincronizzazione.
Analisi del problema

Eterogeneità
Standard?

Coordinamento tra entità
C/S o distribuito?

Politiche di sincronizzazione
Scelte Progettuali

Eterogeneità  XML

Coordinamento tra entità  C/S con carico
minimo sul server

Politiche di sincronizzazione  file di policy
in XML
Implementazione
Local Software
GUI Importer Policy
WebServer-DB
Importer
Application Layer
Application Layer
Network Layer
Network Layer
Protocollo di sincronizzazione
Comunicazione in due
operazioni distinte per
ottimizzare la
connessione
Diagramma delle classi
Policy
<?xml version="1.0"
encoding="ISO-8859-1"?>
<!-- Local: creato in locale.
Remote: creato in rem.-->
<policy>
<new>
<!-- possibilità: keep/skip/ask
-->
<local>
keep
</local>
<remote>
skip
</remote>
</new>
<different>
<!-- possibilità:
keeplocal/keepremote/ask-->
<localnewer>
keeplocal
</localnewer>
<remotenewer>
keeplocal
</remotenewer>
<samedate>
keepremote
</samedate>
</different>
</policy>
Estensione: Server replicati
Vogliamo ora replicare il server per incrementare la
QoS del servizio. Dobbiamo garantire le seguenti
condizioni:
 Servizio attivo 24/7;
 Fault-tolerance;
 Trasparente al client.
Cluster di server secondo il modello del bilanciamento
di carico.
Ogni copia può realizzare il protocollo di scambio con
il client, e il sistema provvede alla sincronizzazione e
al bilanciamento.
Cluster: struttura
Introduciamo un broker, a sua volta replicato (per
evitare “bottleneck”).
Cluster: struttura



Due broker identici che operano
indipendentemente (copie attive, ma senza
sincronizzazione finale)
Client conosce l’indirizzo dei due broker
(primario e secondario)
Il broker comunica al client l’indirizzo del
server con cui dovrà operare ( politica)
Cluster: protocollo
Ibrido tra modello a
copie attive e a
bilanciamento di
carico: lock e sync
fittizi per i server che
non dovranno operare,
ma solo aggiornare la
LockList.
 Ipotesi ottimistica che
il trasferimento non
fallisca mai (altrimenti
ci pensa il
LockManager).

Cluster: broker
Monitoring
Singleton “doppio”
Parametro per il load balancing
Cluster: protocollo di recovery
Il broker assegna ad
un server già attivo il
compito di effettuare
la recovery su di un
server tornato attivo.
Cluster
L’introduzione del cluster ha apportato le seguenti modifiche ai
componenti:
Client
Layer di rete:
- Supporto al doppio server (in questo caso broker)
- Riconnessione al server passato dal broker.
Server
Layer di rete:
- Comunicazione col broker
- Supporto al restoring
Layer applicativo:
- Supporto a lock e sync “fittizi”
- Supporto a invio e ricezione dell’intera lista dei Lock
Il servizio resta compatibile con la modalità C/S senza
intermediari.
Sviluppi futuri




Migliorare l’affidabilità abbandonando la politica
positivista (maggiore complessità nel protocollo di
coordinazione broker/server)
Replicazione broker secondo un modello
Master/Slave con monitoraggio
Coordinamento distribuito senza mediatore, o con
mediatore dinamico
Modifiche del layer di rete a supportare diverse
connessioni (es: bluetooth)
DEMO
config
bin
temp
Scarica

presentazione