P2P IN DATACENTERS: AMAZON DYNAMO



Documenti analoghi
Replicazione. Requisisti di consistenza i clienti devono ricevere risposte consistenti e coerenti. Motivazioni

Lezione n.15 DHT: LOAD BALANCING. Peer-to-Peer Systems and Applications Capitolo 9. Laura Ricci

Coordinazione Distribuita

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME)

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Linguaggio SQL: costrutti avanzati

MongoDB. Un database NoSQL Open-Source

Gestione delle transazioni. Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1

HBase Data Model. in più : le colonne sono raccolte in gruppi di colonne detti Column Family; Cosa cambia dunque?

Pag. 1. Gestione delle transazioni. Linguaggio SQL: costrutti avanzati. Esempio applicativo. Gestione delle transazioni. Prelievo. Esempio applicativo

BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone

Introduzione all Architettura del DBMS

Contesto: Peer to Peer

Data Base Management System. Strumenti: Formato: Pro: Contro: Software specifico. Proprietario

Algoritmi per protocolli peer-to-peer

Algoritmi per protocolli peer-to-peer

Volumi di riferimento

Gestione Turni. Introduzione

Ottimizzazione delle interrogazioni (parte I)

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?

Il database management system Access

File system II. Sistemi Operativi Lez. 20

Capitolo 13. Interrogare una base di dati

Memoria Virtuale. Anche la memoria principale ha una dimensione limitata. memoria principale (memoria fisica) memoria secondaria (memoria virtuale)

Cosa è un foglio elettronico

CORSO DI RETI SSIS. Lezione n.2. 2 Novembre 2005 Laura Ricci

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Base di dati e sistemi informativi

IL SISTEMA INFORMATIVO

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Cluster per architetture a componenti

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Linee di evoluzione dei Database

Panoramica delle funzionalita

ARCHIVIAZIONE DOCUMENTALE NEiTdoc

Il protocollo BitTorrent

Tecnologia di un Database Server (centralizzato) Gestione del buffer

L architettura di un DBMS

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Informatica Generale Andrea Corradini Sistemi di Gestione delle Basi di Dati

Reti sequenziali sincrone

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Esecuzione concorrente di transazioni

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

CPU. Maurizio Palesi

Piano di gestione della qualità

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Gli allarmi che possono essere inseriti sono di tre tipi diversi:

Il Sistema Operativo

Sistemi Operativi GESTIONE DELLA MEMORIA SECONDARIA. D. Talia - UNICAL. Sistemi Operativi 11.1

Sistemi Operativi. Memoria Secondaria GESTIONE DELLA MEMORIA SECONDARIA. Struttura del disco. Scheduling del disco. Gestione del disco

Architettura del calcolatore

Materiali per il modulo 1 ECDL. Autore: M. Lanino

Sequence Diagram e Collaboration Diagram

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

B+Trees. Introduzione

SQL, NoSQL, o entrambi?

Comunicazione tra Processi

Comunicazione tra Processi

Capitolo Silberschatz

CdL MAGISTRALE in INFORMATICA A.A corso di Sistemi Distribuiti. 8. Le architetture (prima parte) Prof. S.Pizzutilo

COLLI. Gestione dei Colli di Spedizione. Release 5.20 Manuale Operativo

Sistemi Web Tolleranti ai Guasti

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

IBM Software Demos Lotus Expeditor and Lotus Forms

PTDR Disaster Recovery for oracle database

SysAround S.r.l. L'efficacia delle vendite è l elemento centrale per favorire la crescita complessiva dell azienda.

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

ISSA EUROPE PTSOFTWARE 2.0

Acronis License Server. Manuale utente

SISTEMI OPERATIVI DISTRIBUITI

Azioni. Select e join non consentono di modificare il contenuto del DB. Inserzione di nuovi dati. Azioni desiderate. Aggiornamento di dati

Progetto di RHS MicroAODV per Reti di Sensori A.A. 2007/2008

Lezione 1. Introduzione e Modellazione Concettuale

Gestione delle tabelle

Registri. «a2» Copyright Daniele Giacomini --

Informatica 3. LEZIONE 23: Indicizzazione. Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees

Lezione 1 Introduzione

STRUTTURE DEI SISTEMI DI CALCOLO

Transazioni. Capitolo 13. Scrittura immediata e scrittura differita. Concorrenza in un DBMS. Una transazione. Gestione delle transazioni

Organizzazione degli archivi

CLOUD AWS. #cloudaws. Community - Cloud AWS su Google+ Amazon Web Services. Servizio Amazon CloudFront

Basi di Dati Multimediali. Fabio Strocco

Esame di INFORMATICA

Informatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing

ECDL AM5 Access Advanced

Una architettura peer-topeer per la visualizzazione 3D distribuita

Guida di Pro Spam Remove

ARCHITETTURA DI RETE FOLEGNANI ANDREA

Condizioni derivati DEGIRO

Indice generale. Gli autori...xiii. Prefazione...xv. Benvenuti nel cloud computing...1

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

Operazioni sui database

Corso di Programmazione Concorrente

Software per Helpdesk

Laboratorio di Informatica

Transcript:

Lezione n.14 P2P IN DATACENTERS: AMAZON DYNAMO 17/4/2013 1

DHT: APPLICAZIONI DHT utilizzate in diverse applicazioni/sistemi commerciali rete KAD/ Trackerless Bittorrent recentemente le tecnologie P2P sono state utilizzate per la realizzazione di storage systems su larga scale questi sistemi sistemi si differenziano dai sistemi P2P puri per: maggior affidabilità delle macchine maggior raggiungibilità (no NAT) minor livello di dinamicità Esempi: Dynamo: Amazon Cassandra: Facebook Voldemort: LinkedIN Big Table: Google 2

ACID: DA WIKIPEDIA Transazione = singola operazione logica, termine utilizzato nel contesto dei database tradizionali Esempio: il trasferimento di fondi da un conto ad un altro che coinvolge un insieme di modifiche, come un addebito ed un accredito ACID (Atomicity, Consistency, Isolation, Durability): insieme di proprietà che garantiscono che le transazioni vengono elaborate in modo affidabile Proprietà definite da Jim Gray nel 1970, che propose un insieme di tecnologie per verificarle. ACID: termine coniato nel 1983, ripreso recentemente... garantire tali proprietà in large scale storage system nel caso di big data (Facebook, Google, Amazon) risulta molto complesso... 3

ACID: ATOMICITY Atomicity: transazione tutto o nulla, se una parte della transazione fallisce, l'intera transazione fallisce e lo stato dei dati rimane invariato. La proprietà deve essere garantita anche in presenza di guasti, errori,... Esempio: un database con due campi, A e B vincolo di integrità: somma di A e B uguale a 100 CREATE TABLE acidtest (A Integer, B Integer Check (A + B = 100)); transazione valida: sottrai 10 ad A ed aggiungi 10 a B. violazione di atomicity: dopo aver sottratto 10 da A, la transazione non è in grado di modificare B. 4

ACID: CONSISTENCY Consistency: tutti i vincoli definiti sui dati devono essere rispettati dalle transazioni definite Esempio: un database con due campi, A e B vincolo di integrità: somma di A e B uguale a 100 CREATE TABLE acidtest (A Integer, B Integer Check (A + B = 100)); Una transazione che sottrae 10 da A, ma non lo sottrae a B può essere atomica, ma non rispetta il vincolo di integrità. L'intera transazione deve essere cancellata ed il sistema riportato ad uno stato consistente 5

ACID: ISOLATION Isolation: l'esecuzione concorrente di un insieme di transazioni restituisce lo stesso stato dei dati che si sarebbe ottenuto eseguendo le transazioni sequenzialmente riguarda il controllo dell'esecuzione concorrente delle transazioni Esempi: 6

ACID: DURABILITY Isolation: Il risultato di una transazione deve essere memorizzato su una memoria non volatile prima del commit della transazione Esempio: un database con due campi, A e B vincolo di integrità: somma di A e B uguale a 100 CREATE TABLE acidtest (A Integer, B Integer Check (A + B = 100)); una transazione atomica trasferisce 10 da A a B. a questo punto viene inviato un messaggio di successo all'utente. le modifiche, tuttavia, sono ancora memorizzate in un buffer in attesa di essere memorizzate su disco. se c'è un fault e la memorizzazione non avviene, viene ad essere invalidata la durability 7

ACID E LARGE SCALE STORAGES Molto difficile garantire proprietà ACID per applicazioni web-based Big Data, Big Users alti tassi di letture/scritture dati non strutturati (no schema) SQL-based database non scalano necessarie soluzioni più flessibili 8

ACID E LARGE SCALE STORAGES Molto difficile garantire queste proprietà per applicazioni web-based Big Data, Big Users alti tassi di letture/scritture dati non strutturati (no schema) RDBMS non scalabili... soluzioni possibili replication sharding 9

AUMENTARE LA SCALABILITA' Soluzione: replicazione dell'intero database, vertical scaling Architettura scalabile Aumenta la scalabilità delle operazioni di lettura Sincronizzazione di letture 10

AUMENTARE LA SCALABILITA' Soluzione: sharding, horizontal scaling partizionare il database tra diversi host Aumenta la scalabilità sia delle operazioni di lettura che di quelle di scrittura Non possibili transazioni tra shard diverse Soluzione iniziale adottata da Facebook, YouTube, Yahoo 11

EFFICIENZA CONTRO COSTO 12

RIPENSARE L'ARCHITETTURA 13

NOSQL: NUOVE ARCHITETTURE Una applicazione sociale non è una banca...richiesti livelli inferiori di ACID Distributed Data Storage:rilasciano una o più delle proprietà ACID 14

CONSISTENCY MODELS Strong Consistency: dopo il completamento di un aggiornamento, tutti gli accessi successivi fanno riferimento al dato aggiornato Eventual Consistency: il sistema non garantisce la restituzione del valore aggiornato finestra di incostistenza in seguito, tutti gli accessi restituiscono il solito valore 15

DYNAMO: LE SFIDE High available key-value store Sfida: reliability/availability at maasive scale decine di milioni di clienti decine di migliaia di nodi 16

DYNAMO: CARATTERISTICHE GENERALI NOSQL storage systems utilizzato da Amazon (insieme ad altri, Simple Stotage System,...) S3 influenza su architettura di diversi altri storage systems Caratteristiche: highly decentralized, loosely coupled, service oriented architecture infrastruttura: decine di migliaia di server geograficamente dislocati sul globo commodity hardware standard mode of operation : nodi soggetti a fallimento 17

DYNAMO: CARATTERISTICHE GENERALI Obiettivi: rinunciare alla strong consistency in favore di availability scalability service-level agreement scalabilità semplicità architettura peer to peer like: ogni nodo con le stesse responsabilità eterogeneità dei nodi 18

DYNAMO API Key-value storage get(key): restituisce una lista di oggetti ed un contesto può restituire un insieme di diversi oggetti associati alla chiave se esistono più versioni dello stesso dato in conflitto. contesto: insieme di metadati, utilizzato per l'implementazione del versioning put(key, object, context): non restituisce alcun valore contesto: come sopra key, object: non interpretati da Dynamo considerati come vettori di bytes key ottenuta mediante l'applicazione dell'algoritmo MD5 19

DYNAMO: SCELTE DI PROGETTO Data Partitioning Replication Data Versioning Esecuzione put e get Membership Gestione dei Fallimenti 20

DATA PARTITIONING Partitioning dei dati basato su consistent hashing mapping dei dati alla Chord 1-hop routing 21

DATA PARTITIONING: 1-HOP DHT Ogni peer memorizza nella propria routing table tutti gli altri peer dell'overlay Fully meshed overlay routing semplificato ed efficiente aumenta dimensione routing table overhead per la gestione delle routing table: ogni nodo deve essere informato di ogni cambiamento nell'overlay alta richiesta di banda per la diffusione degli aggiornamenti 1-hop DHT enterprise DHT: maggiore capacità computazionale e richiesta di banda maggiore stabilità dell'overlay alto numero di query /secondo molto alto scalabilità fino ad alcune centinaia di migliaia di nodi. ragionevole per una enterprise DHT 22

CONSISTENT HASHING: DISTRIBUZIONI Analisi della distribuzione dei dati Distribuzione Ottima dei Documenti sui Nodi del Sistema Parametri 4,096 nodi Spazio degli indirizzi di m=22 bits Numero massimo di documenti e/o nodi = 222=4.194.304 Più simulazioni, le chiavi per nodi e documenti generate in modo random, in media 500,000 documenti Ottimo = ~122 documenti per nodo Grafico: mostra quanti nodi (asse y) memorizzano un certo numero di documenti (asse x) 23

DYNAMO: CAUSE DI SBILANCIAMENTO Distribuzione dei dati non perfettamente uniforme Distribuzione dei nodi non perfettamente uniforme Hot Spots Eterogeneità dei nodi 24

DYNAMO: VIRTUAL SERVERS per ogni nodo più identificatori logici ogni identificatore rappresenta un virtual server (VS) ogni nodo esegue più VS responsabile per più regioni non contigue numero di VS proporzionali alle risorse di calcolo del nodo Virtual Server (regioni) stesso colore sono gestiti dallo stesso nodo 25

DYNAMO: ARCHITETTURA 26

DYNAMO: REPLICAZIONE the standard mode of operation di Dynamo prevede i crash delle macchine per assicurare l'availability dei dati, i dati vengono replicati ogni dato replicato sugli n-1 successori del nodo su cui è mappato sull'anello (n parametro configurabile, tipicamente 3) Preference List= Lista di nodi che contengono le repliche del dato replicazione aumenta anche la performance richieste read-only possono essere distribuite a qualsiasi replica copie multiple : necessari meccanismi per la consistenza delle copie replicate 27

REPLICAZIONE E VIRTUAL SERVERS Mapping Virtual Node-nodi fisici: evitare che repliche dello stesso VN appartengano allo stesso nodo fisico se più repliche mappate sullo stesso nodo fisico, considerare nodi fisici successivi 28

DYNAMO: JOIN nodi aggiunti e rimossi esplicitamente dall'amministratore sistema deve fornire servizi anche durante le operazioni di join/leave inserzione/eliminazione di nodi: redistribuzione dei dati e delle repliche Membership management Tutti i nodi devono essere informati di una modifica all'overlay (1-hop DHT) Algoritmi di gossip per propagare le modifiche all'overlay 29

DYNAMO: JOIN Il nuovo nodo annuncia sua presenza gli immediati vicini (a destra e sinistra) modificano la ownership delle chiavi e delle repliche: operazione sincrona il nuovo nodo a copia i dati dai vicini: operazione asincrona aggiornamenti inviati via gossip agli altri nodi: operazione asincrona Il nodo X si unisce al sistema 30

DYNAMO: JOIN Aggiornamento asincrono delle viste: un nodo che non possiede una vista aggiornata può inoltrare le richiesta ad un vicino n del nuovo nodo x che non possiede più l'informazione n inoltra l'informazione ad x ad x che non possiede ancora il nuovo dato utilizzati i vector clock per determinare la validità dei dati Il nodo X si unisce al sistema 31

DYNAMO: LEAVE Verifica periodica della presenza dei nodi effettuata durante i cicli gossip del protocollo epidemico I vicini del nodo caduto aggiornano i range e si scambiano dati, in modo da avere un numero consistente di repliche 32

DYNAMO E DHT CLASSICHE: DIFFERENZE Le tecniche viste nei lucidi precedenti sono simili a quelle utilizzate nelle DHT classiche ma...dynamo utilizza la DHT per memorizzare dati applicativi Problema principale versioning: gestione di diverse versioni dello stesso dato sincronizzazione sulle write alle diverse versioni tecniche utilizzate: vector clocks quorum 33

DATA VERSIONING una operazione di put può terminare prima che il nuovo valore sia stato propagato a tutte le copie una successiva get() può restituire dati non contenenti ultimi aggionamenti high availability, ma eventual consistency Alcune applicazioni di Amazon possono tollerare questo consistenza: shopping carts operazione add to cart, deve essere sempre eseguita make money! se la copia locale non è la più recente eseguire comunque l'operazione riconciliare successivamente versioni divergenti modello di 34

SHOPPING CART EXAMPLE Shopping cart: contiene i libri acquistati, replicata su più nodi(a,b) Client: effettua operazioni sulla propria shopping cart Aggiornamenti eseguiti su nodi diversi della DHT Quorum: insieme di nodi aggiornati dalla prima put write sempre eseguita, ma inconsistenza finale 35

DATA VERSIONING Approccio: scrivere sempre, della lettura riconciliare versioni contrastanti al momento riconciliazione sintattica la nuova versione ingloba le vecchie versioni conflitto rilevato in modo automatico riconciliazione semantica quando non è possibile una riconciliazione automatica fallimenti/ aggiornamenti concorrenti riconciliazione effettuata dal client: collassa in una unica versione più rami corrispondenti a storie diverse di aggiornamento. Per entrambe: utilizzo di vector clocks 36

VECTOR CLOCKS: DEFINIZIONI Ogni nodo mantiene un clock logico: contatore incrementato ogni volta che si esegue un aggiornamento Vector Clock: lista di coppie <nodo, contatore> un contatore per ogni nodo che ha aggiornato il documento definiscono relazioni di causalità tra le versioni ordinamento parziale tra vector clocks: v1 v2, sei contatori in v1 sono tutti minori di quelli corrispondenti in v 2 se v1 v2, la versione corrispondente a v2 è più aggiornata ed ingloba quella associata a v1, la versione associata a v1 può essere scartata altrimenti le due versioni non sono correlate aggiornamenti paralleli o presenza di faults necessaria riconcialiazione semantica da parte della applicazione (ad esempio, merge) 37

MODIFICHE SU DATI REPLICATI 38

VECTOR CLOCKS 39

MODIFICHE SU DATI REPLICATI 40

MODIFICHE SU DATI REPLICATI 41

MODIFICHE SU DATI REPLICATI 42

MODIFICHE SU DATI REPLICATI 43

RISOLUZIONE DEI CONFLITTI Dato replicato su 3 nodi A, B, C Un client C1 crea un nuovo oggetto e lo memorizza memorizzazione eseguita dal nodo A A crea un vector clock che individua la versione D1 dell'oggetto Successivamente propagata a B ed a C D1 verrà 44

RISOLUZIONE DEI CONFLITTI Dato replicato su A, B, C Il client C1 effettua un aggiornamento del dato, l'aggiornamento è gestito dal nodo A Nel sistema ora esistono le versioni D1 e D2 dell'oggetto, ma D2 incorpora D1 D1 può essere eliminata Politica always write : gli altri nodi non vengono a conoscenza immediantamente di D2 45

RISOLUZIONE DEI CONFLITTI il client C1 effettua un nuovo aggiornamento sullo stesso dato utilizza la versione D2, che già il client C2 possedeva perchè la aveva aggiornata in precedenza l'aggiornamento viene gestito dal nodo B legge la versione D2 dal nodo A la aggiorna l'aggiornamento è gestito dal nodo C 46

RISOLUZIONE DEI CONFLITTI un client C3 legge le versioni D3, e D4 e rileva un conflitto necessaria riconciliazione La riconciliazione è effettuata dal nodo A 47

RISOLUZIONE DEI CONFLITTI A gestisce il nuovo aggiornamento Il read context è un riassunto dei vector clock di D3 e D4. riconcilia le versioni Versione D5: riconciliata e scritta da A 48

RISOLUZIONE DEI CONFLITTI Dato replicato su 3 nodi A, B, C Un client C1 crea un nuovo oggetto e lo memorizza memorizzazione eseguita dal nodo A A crea un vector clock che individua la versione D1 dell'oggetto Successivamente propagata a B ed a C D1 verrà 49

RISOLUZIONE DEI CONFLITTI Dato replicato su A, B, C Il client C1 effettua un aggiornamento del dato, l'aggiornamento è gestito dal nodo A Nel sistema ora esistono le versioni D1 e D2 dell'oggetto, ma D2 incorpora D1 D1 può essere eliminata Politica always write : gli altri nodi non vengono a conoscenza immediantamente di D2 50

RISOLUZIONE DEI CONFLITTI Il dato viene modificato e la modifica viene gestita dal nodo B B non ha ancora ricevuto l'aggiornamento da A Nel sistema esistono due versioni, quella di A e quella di B 51

RISOLUZIONE DEI CONFLITTI Un client legge le due versioni da A e da B D4 inglobata da D3 La versione D4 può essere scartata automaticamente Il sistema mantiene la versione D5 52

QUORUM MODEL N, W, R: quorum model N repliche W numero repliche aggiornate in modo sincrono (non tutte le N repliche) R numero di repliche lette da una operazione di get() Per ottenere strong consistency W + R > N 53

QUORUM MODEL N, W, R: quorum model: N repliche W numero repliche aggiornate in modo sincrono (non tutte le N repliche) R numero di repliche lette da una operazione di get() tipica configurazione per Dynamo (N,R,W) == (3,2,2) Se si accettano inconsistenze high performance read: R==1, W==N valori bassi di R e W portano ad un numero maggiore di inconsistenze 54

ESECUZIONE PUT( ) E GET( ) PUT( ) il coordinatore genera un nuovo vector clock (a partire dalla versione letta) e lo memorizza localmente invia il dato modificato, insieme al vector clock, alle N repliche attende la risposta da W-1 nodi la put termina quando almeno W-1 nodi hanno riportato successo GET( ) invio la richiesta ad N nodi, aspetto R risposte scarta versioni inglobate da altre: riconcialiazione sintattica restituisce versioni che pensa non essere correlate il client effettua la riconciliazione semantica il dato modificato viene riscritto 55

ESECUZIONE PUT( ) E GET( ) I client possono inviare le loro richieste al nodo responsabile del dato (coordinatore) minore latenza, put(), get() inserite direttamente nel codice del client ad un load balancer aumenta la latenza PUT( ) il coordinatore genera un nuovo vector clock e lo memorizza localmente invia il vettore alle N repliche attende la risposta da W-1 nodi GET( ) invio la richiesta ad N nodi, aspetto R risposte scarta versioni inglobate da altre, restituisce versioni non correlate riconciliazione e riscrittura versioni non correlate se R+W<N 56

READ REPAIR 57

READ REPAIR 58

READ REPAIR 59

READ REPAIR 60

SHOPPING CART EXAMPLE 61

SHOPPING CART EXAMPLE 62

DYNAMO: TRANSIENT FAILURES A causa di irraggiungibilità temporanea di nodi il quorum di scritture può non essere raggiunto Sloppy quorum = quorum approssimativo Creazione di copie transienti: hinted handoff Riconciliazione successiva A irraggiungibile PUT inviata a D Successivamente quando D riesce raggiungere A invia replica ad A rimuove la replica 63

DYNAMO: PERMANENT FAILURES Versioning non garantisce la consistenza se non è richiesto un quorum di maggioranza, se si verificano fallimenti occorre comunque verificare periodicamente che le copie non siano in conflitto utilizzo di Merkel trees anti-entropia 64

DYNAMO: ANTI ENTROPIA Merkel Tree: Foglie: hash dei valori Nodi interni: composizioni di hash delle foglie Ogni nodo mantiene un Merkel tree per ogni range di chiavi da lui gestito Anti entropia: scambiare parti di Merkle tree Protocollo divide and conquer : contatta un altro nodo sull'anello scelto in modo uniforme se i due nodi gestiscono una replica dello stesso range, scambio delle root dei Merkel tree se le root coincidono, stop se non coincidono, ripetere ricorsivamente i controlli sui figli Merkel tree ricalcolato per ogni join/leave 65

DYNAMO: CONCLUSIONI CAP Strong Consistency:NO Tutti i nodi vedono lo stesso dato nello stesso tempo Availability:SI Partition Tolerance:SI Il sistema continua ad operare nonostante perdite di messaggi o fallimento di alcune sue parti KEY/Value Storage: put e get Data Partitioning: consistent hashing Load balancing: virtual servers Replication: preference list, successor nodes Data Versioning: vector clocks, conflitti risolti al momento della lettura dalla applicazione Membership: join/leave gestiti dall'amministratore, gossip-based update delle viste Gestione fallimenti transienti: hinted hand-off Gestione fallimenti permanenti: Merkle trees 66

CAP THEOREM Consistency: grado di consistenza di un sistema dopo l'esecuzione di un aggiornamento Availability: possibilità di scrivere/leggere un dato in ogni istante Tolleranza ai partizionamenti: capacità del sistema di lavorare in presenza di partizione delle rete CAP Theorem: un sistema può soddisfare al massimo 2 delle proprietà CAP in generale, scegliere tra C e A database tradizionali: preferenza a C Web applications: preferenza A 67

CAP: CLASSIFICAZIONE DEI SISTEMI 68