Studio di una soluzione distribuita per la gestione di un centro
sondaggi
SONDIAMO
SCENARIO E OBIETTIVI
Scenario:



In un centro sondaggi sono presenti diversi operatori che tramite una postazione PC
compilano successivamente diverse interviste che vengono svolte telefonicamente.
Ogni intervista è relativa ad un questionario (lista di domande) e ad una persona da
intervistare
Si vuole tutelare l’integrità delle risposte raccolte dagli operatori.
Obiettivi:


Analizzare le problematiche nella gestione distribuita di un centro sondaggi e
realizzare un prototipo per verificare la bontà del modello ottenuto.
Si vuole garantire:




tolleranza ai guasti: identificazione e recovery degli errori
affidabilità: integrità dei dati raccolti tramite replicazione
disponibilità: copie attive
scalabilità: adatta a deploy di diverse dimensioni.
ARCHITETTURA LOGICA (PRIMA ANALISI)
CLIENT: OPERARE SUI SERVER

Operazioni critiche:
 Richiesta
intervista: a un client non deve essere assegnata
un’intervista già in corso in un altro client
 Salvataggio risposte: occorre che il client abbia la conferma
che l’operazione è andata a buon fine, in tempi ragionevoli:



Operazioni sincrone
Scalabilità: write predominanti
Altre operazioni:
 su
Server Interviste: autenticazione, chiusura intervista
 su Server Questionari: ottieni questionario

Client Supervisore:
 inserimento
interviste da effettuare, stato di completamento,
risultati aggregati risposte
SERVER

Server Interviste
Utilizzo di Lease per determinare malfunzionamenti lato
client
 Autenticazione dei client
 Operazione critica: assegnamento intervista


Interviste sospese: riassegnare con stato avanzamento
Scritture dominanti: save, assegnamento
 Chiusura interviste: su richiesta, automatica


Analisi stato

Tempo di propagazione save fra i master
SCALABILITÀ E RIDONDANZA

Deploy con ridondanza: copie attive con distribuzione carico


si minimizzano i costi dell’hardware in relazione alle performance attese
Gestore centralizzato

Coordinamento:

Scritture dominanti

Politica lazy


Assegnamento intervista (critico)


minimizzare tempo di propagazione
Sequenzializzato dal gestore
Trasparenza

fornisce ai client le stesse interfacce dei server




Consente cambio deploy senza configurazione client
Recovery delle situazione di errore sui server
Distribuisce il carico fra i server
Gestore di backup: Hot stand-by
TECNOLOGIE

Corba





Tipi di dati strutturati
Supporto alla trasparenza di locazione
Supporto per ambienti eterogenei
Supporto flessibile per la gestione thread lato server
Uso di Name Service per reperibilità
dei servizi


Implementation Repository scarsamente supportato
MySQL:




Supporto a deploy multi-master
Gestione della replicazione
Facilità di configurazione
Possibilità di configurazione ad anello
con auto-riconfigurazione in caso di guasti
GESTORE






Fornisce ai client le
stesse interfacce dei
server
Si occupa del
recovery di situazioni
di errore
Controlla
periodicamente i
server per prevenire
situazioni di errore
Distribuisce il carico
dei server
Mantiene aggiornato
il Gestore di backup
(se presente)
Simmetria fra
gestore attivo e di
backup
GESTORE: FUNZIONAMENTO

Un Server si registra presso il gestore




Nome con cui è registrato sul Name Server il servizio da erogare
Nome con cui è registrato sul
Name Server il servizio disponibilità
Tipo: Server Interviste, Server Questionari, Gestore backup
Indicazione del carico di lavoro in grado di gestire

Un Server, in caso di terminazione soft, si rimuove dal gestore
Controlla periodicamente (ping) lo stato dei server, eventualmente
rimuovendoli

Accetta le richieste dei client e le inoltra ad un opportuno server,
bilanciando il carico



Recovery in caso di errore, inoltro ad un altro server (se presente)
Aggiorna sul gestore di backup lo stato dei server
GESTORE DI BACKUP

All’avvio il gestore verifica se è già presente un gestore



Si registra presso il Gestore principale, analogamente ai
server
Riceve notifica dal gestore principale delle operazioni
implicite e esplicite di aggiunta/rimozione server



si configura come backup
Anche stato corrente all’arrivo del gestore
Controlla periodicamente il gestore principale (ping)
In caso di fallimento del gestore principale:



Si eleva
Aggiorna il riferimento al gestore nel Name Server
Notifica i server del cambiamento
COMUNICAZIONE

Overhead


TCP/IP: aggiunge 40-48 bytes per packet (oltre overhead
ethernet)
CORBA IIOP: aggiunge altri ~40-80 bytes per messaggio


CORBA: introduce ritardi temporali, suddivisi in:


Fissi: context-switch, invocazione sul proxy locale
Variabili: (un)marshaling e trasmissione


Scarsa efficenza per molti piccoli messaggi
Scarsa efficenza per molti piccoli messaggi
MySQL Replication:

Binary log (dall’avvio) delle operazioni che alterano il DB

Richiesto (pull) dagli altri DB: ripetono le operazioni

Possibilità di specificare un offset, per recuperare dati precedenti.
TEST

Funzionamento base




Deploy multi-server





(de)registrazione dei server nel gestore
Inoltro del gestore ai server
Trasparenza per i client a guasti/terminazione dei server
Bilanciamento carico dei server
Gestore di backup




Corretta esecuzione delle operazioni sui server
Batteria di client per la simulazione
Uso di un simulatore del client supervisore per il popolamento delle interviste da effettuare
Scelta della modalità operativa: principale o backup
Sincronizzazione dello stato
Elevazione
Trasparenza di locazione:

Corretto funzionamento:

sul distribuito, concentrando componenti
RISULTATI

Ritardo sincronizzazione database:


<1s anche con carico elevato
Replicazione database e distribuzione save:

Scarsa scalabilità performance


Tutte le save devono essere propagate a tutti i server
Incremento performance solo se DB su stesso nodo


Ritardi CORBA per servizio non disponibile (timeout)


Richiesta servizio non disponibile
Caduta servizio durante erogazione


vanificato dai ritardi di rete
Tempo per accorgersene e recovery
In caso di caduta del gestore, necessario recovery lato client:


Non si ha trasparenza
La durata del recovery deve essere maggiore del tempo richiesto per l’elevazione
del gestore di backup


Intervallo di ping del gestore
Tempo per aggiornamento Name Server
CONCLUSIONI

CORBA ha permesso la realizzazione di un prototipo
flessibile in tempi rapidi

Flessibilità limitata dall’uso di Name Service

Difficoltà nella realizzazione di soluzioni scalabili nelle
performance, in scenari con scritture dominanti.

Supporto multi-master dei DBMS
Efficienza
 Scarso controllo
 Poca flessibilità

Scarica

presentazione