sistemas distribuÍdosasc.di.fct.unl.pt/~smd/isctem/teoricas/sd-8-replicacao.pdf= t2 and r1 < r2)...

39
Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 1 SISTEMAS DISTRIBUÍDOS Capítulo 8 Introdução à replicação e consistência

Upload: vanngoc

Post on 14-Feb-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 1

SISTEMAS DISTRIBUÍDOS

Capítulo 8

Introdução à replicação e consistência

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 2

NOTA PRÉVIA

A apresentação utiliza algumas das figuras livro de base do curso G. Coulouris, J. Dollimore and T. Kindberg, Distributed Systems - Concepts and Design, Addison-Wesley, 5th Edition

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 3

SUMÁRIO

Consistência eventual Replicação Primário-secundário (consistência forte)

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 4

INTRODUÇÃO À REPLICAÇÃO: MOTIVAÇÃO

Tolerar falhas

Distribuir carga

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 5

CONSISTÊNCIA EVENTUAL

Cliente: os cliente podem executar as operações em qualquer servidor

Réplicas: todos os servidores podem receber operações e executá-las imediatamente

réplica

cliente

cliente

X = 0

réplica

réplica

X = 0

X = 0

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 6

CONSISTÊNCIA EVENTUAL

Cliente: os cliente podem executar as operações em qualquer servidor

Réplicas: todos os servidores podem receber operações e executá-las imediatamente

réplica

cliente

cliente

X = 0

réplica

réplica

X = 0

X = 0

X = 1

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 7

CONSISTÊNCIA EVENTUAL

Cliente: os cliente podem executar as operações em qualquer servidor

Réplicas: todos os servidores podem receber operações e executá-las imediatamente

réplica

cliente

cliente

réplica

réplica

X = 0

X = 0

X = 1 X = 1

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 8

CONSISTÊNCIA EVENTUAL

Cliente: os cliente podem executar as operações em qualquer servidor

Réplicas: todos os servidores podem receber operações e executá-las imediatamente

réplica

cliente

cliente

réplica

réplica

X = 0

X = 0

X = 1

X = 2

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 9

CONSISTÊNCIA EVENTUAL

Cliente: os cliente podem executar as operações em qualquer servidor

Réplicas: todos os servidores podem receber operações e executá-las imediatamente

réplica

cliente

cliente

réplica

réplica

X = 0

X = 1

X = 2 X = 2

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 10

CONSISTÊNCIA EVENTUAL

Cliente: os cliente podem executar as operações em qualquer servidor

Réplicas: todos os servidores podem receber operações e executá-las imediatamente

Sincronização epidémica: réplicas comunicam periodicamente trocando as suas atualizações

Como lidar com escritas concorrentes?

réplica

cliente

cliente

X = 1

réplica

réplica

X = 2

X = 0

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 11

CONSISTÊNCIA EVENTUAL

Cliente: os cliente podem executar as operações em qualquer servidor

Réplicas: todos os servidores podem receber operações e executá-las imediatamente

Sincronização epidémica: réplicas comunicam periodicamente trocando as suas atualizações

Como lidar com escritas concorrentes? Possível solução: última escrita ganha => ordem total sobre as escritas Como ordenar totalmente as operações?

réplica

cliente

cliente

X = 1

réplica

réplica

X = 2

X = 0

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 12

CONSISTÊNCIA EVENTUAL

Como ordenar as operações?

(relógio lógico de Lamport, id da réplicas)

réplica 3

cliente

cliente

X = 0 t=(1,r1)

réplica 2

réplica 1

X = 0 t=(1,r1)

X = 0 t=(1,r1)

X = 1

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 13

CONSISTÊNCIA EVENTUAL

Como ordenar as operações?

(relógio lógico de Lamport, id da réplicas)

réplica 3

cliente

cliente

réplica 2

réplica 1

X = 0 t=(1,r1)

X = 0 t=(1,r1)

X = 1 X = 1 t=(2,r3)

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 14

CONSISTÊNCIA EVENTUAL

Como ordenar as operações?

(relógio lógico de Lamport, id da réplicas)

réplica 3

cliente

cliente

réplica 2

réplica 1

X = 0 t=(1,r1)

X = 0 t=(1,r1)

X = 1 t=(2,r3)

X = 2

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 15

CONSISTÊNCIA EVENTUAL

Como ordenar as operações?

(relógio lógico de Lamport, id da réplicas)

réplica 3

cliente

cliente

réplica 2

réplica 1

X = 0 t=(1,r1)

X = 1 t=(2,r3)

X = 2 X = 2 t=(2,r2)

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 16

CONSISTÊNCIA EVENTUAL

Como ordenar as operações?

(relógio lógico de Lamport, id da réplicas)

(t1,r1) < (t2,r2) sse t1 < t2 OR (t1 = t2 AND r1 < r2)

réplica

cliente

cliente

X = 1 t=(2,r3)

réplica

réplica

X = 2 t=(2,r2)

X = 0 t=(1,r1)

(2,r2) < (2,r3)

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 17

CONSISTÊNCIA EVENTUAL

Como ordenar as operações?

(relógio lógico de Lamport, id da réplicas)

(t1,r1) < (t2,r2) sse t1 < t2 OR (t1 = t2 AND r1 < r2)

réplica

cliente

cliente

X = 1 t=(2,r2)

réplica

réplica

X = 1 t=(2,r2)

X = 0 t=(1,r1)

(2,r2) < (2,r3)

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 18

CONSISTÊNCIA EVENTUAL

Como ordenar as operações?

(relógio lógico de Lamport, id da réplicas)

(t1,r1) < (t2,r2) sse t1 < t2 OR (t1 = t2 AND r1 < r2)

réplica

cliente

cliente

X = 1 t=(2,r3)

réplica

réplica

X = 1 t=(2,r3)

X = 0 t=(1,r1)

(2,r2) < (2,r3)

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 19

CONSISTÊNCIA EVENTUAL

Propagar causalidade é importante

Porquê?

réplica

cliente

cliente

X = 1 t=(2,r3)

réplica

réplica

X = 1 t=(2,r3)

X = 0 t=(1,r1)

X ?

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 20

CONSISTÊNCIA EVENTUAL

Propagar causalidade é importante

Porquê?

réplica

cliente

cliente

X = 1 t=(2,r3)

réplica

réplica

X = 1 t=(2,r3)

X = 0 t=(1,r1)

X = 1 t=(2,r3)

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 21

CONSISTÊNCIA EVENTUAL

Propagar causalidade é importante

Porquê?

réplica

cliente

cliente

X = 1 t=(2,r3)

réplica

réplica

X = 1 t=(2,r3)

X = 0 t=(1,r1)

X = 3 t=(2,r3)

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 22

CONSISTÊNCIA EVENTUAL

Propagar causalidade é importante

Porquê?

réplica

cliente

cliente

X = 1 t=(2,r3)

réplica

réplica

X = 1 t=(2,r3)

X = 3 t=(3,r1)

X = 3 t=(2,r3)

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 23

SUMÁRIO

Caching Sistemas de ficheiros distribuídos Caching NFS Caching CIFS Caching Callback Promise

Introdução à replicação Consistência eventual Primário-secundário Multi-master

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 24

PRIMÁRIO / SECUNDÁRIO (PASSIVO)

Primário: mantém versão oficial dos dados

Secundário: mantém cópia da versão do primário

secundário

cliente

cliente

X = 0

primário

secundário

X = 0

X = 0

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 25

PRIMÁRIO / SECUNDÁRIO : LEITURA

Leitura enviada para qualquer réplicas

secundário

cliente

cliente

X = 0

primário

secundário

X = 0

X = 0

X ?

X ?

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 26

PRIMÁRIO / SECUNDÁRIO : LEITURA

Leitura enviada para qualquer das réplicas

Secundário executa operação e devolve resultado

secundário

cliente

cliente

X = 0

primário

secundário

X = 0

X = 0

X ?

X ?

X = 0

X = 0

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 27

PRIMÁRIO / SECUNDÁRIO : ESCRITA

Escritas enviadas para o primário

secundário

cliente

cliente

X = 0

primário

secundário

X = 0

X = 0

X = 3

X = 5

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 28

PRIMÁRIO / SECUNDÁRIO : ESCRITA

Escritas enviadas para o primário

Primário ordena escritas e executa-as ordenadamente

cliente

cliente

X = 0

X = 0

X = 0

X = 3

X = 5

X = 3 X = 5

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 29

PRIMÁRIO / SECUNDÁRIO : ESCRITA

Escritas enviadas para o primário

Primário ordena escritas e executa-as ordenadamente

Execução de operação

1.  Execução no primário

2.  Envio da operação para os secundários

cliente

cliente

X = 0

X = 3

X = 0

X = 3

X = 5

X = 3 X = 5

X = 3

X = 3

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 30

PRIMÁRIO / SECUNDÁRIO : ESCRITA

Escritas enviadas para o primário

Primário ordena escritas e executa-as ordenadamente

Execução de operação

1.  Execução no primário

2.  Envio da operação para os secundários

3.  Secundário executa operação

cliente

cliente

X = 3

X = 3

X = 3

X = 3

X = 5

X = 3 X = 5

X = 3

X = 3

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 31

PRIMÁRIO / SECUNDÁRIO : ESCRITA

Escritas enviadas para o primário

Primário ordena escritas e executa-as ordenadamente

Execução de operação

1.  Execução no primário

2.  Envio da operação para os secundários

3.  Secundário executa operação

4.  Secundário envia ACK para primário

cliente

cliente

X = 3

X = 3

X = 3

X = 3

X = 5

X = 3 X = 5

X = 3

X = 3 ACK

ACK

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 32

PRIMÁRIO / SECUNDÁRIO : ESCRITA

Escritas enviadas para o primário

Primário ordena escritas e executa-as ordenadamente

Execução de operação

1.  Execução no primário

2.  Envio da operação para os secundários

3.  Secundário executa operação

4.  Secundário envia ACK para primário

5.  Primário envia ACK para cliente

cliente

cliente

X = 3

X = 3

X = 3

X = 3

X = 5

X = 3 X = 5

X = 3

X = 3 ACK

ACK

ACK

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 33

PRIMÁRIO / SECUNDÁRIO : ESCRITA : FALHA DUM SECUNDÁRIO

O que fazer quando um secundário falha (ou a mensagem se perde)?

O primário pode devolver ACK ao cliente sem receber a resposta de todos os secundários

Como é que secundário sabe que está a receber todas as operações?

Operações devem ser numeradas pelo primário (canal FIFO). Secundário detecta falta de operação na próxima operação (ou por contacto periódico com primário) NOTA: dependendo das operações, receber a última operação pode ser suficiente

cliente

cliente

X = 0

X = 3

X = 3

X = 3

X = 3

X = 3

X = 3 ACK

ACK

vrs = 2

vrs = 2

vrs = 1

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 34

PRIMÁRIO / SECUNDÁRIO : ESCRITA : FALHA DUM SECUNDÁRIO

O que fazer quando um secundário falha (ou a mensagem se perde)?

O primário pode devolver ACK ao cliente sem receber a resposta de todos os secundários

Como é que se garante que cliente não lê versão anterior à sua escrita?

cliente

cliente

X = 0

X = 3

X = 3

X = 3

X = 3

X = 3

X = 3 ACK

ACK

vrs = 2

vrs = 2

vrs = 1 X ?

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 35

PRIMÁRIO / SECUNDÁRIO : ESCRITA : FALHA DUM SECUNDÁRIO

O que fazer quando um secundário falha (ou a mensagem se perde)?

O primário pode devolver ACK ao cliente sem receber a resposta de todos os secundários

Como é que se garante que cliente não lê versão anterior à sua escrita?

Cliente pode receber versão escrita e enviar essa versão no próximo pedido para que apenas um servidor com uma versão superior responda

cliente

cliente

X = 0

X = 3

X = 3

X = 3

X = 3

X = 3

X = 3 ACK

ACK vrs = 2

vrs = 2

vrs = 2

vrs = 1 X ? vrs >= 2

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 36

PRIMÁRIO / SECUNDÁRIO : ESCRITA : FALHA DUM SECUNDÁRIO

O que fazer quando um secundário falha (ou a mensagem se perde)?

O primário pode devolver ACK ao cliente sem receber a resposta de todos os secundários

Quantos secundários precisam de responder de forma a que uma escrita não se perca?

Depende de quantas falhas se toleram e do que se fizer quando o primário falha…

cliente

cliente

X = 0

X = 3

X = 3

X = 3

X = 3

X = 3

X = 3 ACK

ACK vrs = 2

vrs = 2

vrs = 2

vrs = 1 X ? vrs >= 2

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 37

PRIMÁRIO / SECUNDÁRIO : ESCRITA : FALHA DO PRIMÁRIO

O que fazer quando o primário falha?

1.  Um secundário deve ser eleito o novo primário

2.  Secundários devem concordar em qual a última operação executada

cliente

cliente

X = 0

X = 3

X = 3

vrs = 2

vrs = 2

vrs = 1

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 38

PRIMÁRIO / SECUNDÁRIO : ESCRITA : FALHA DO PRIMÁRIO

O que fazer quando o primário falha?

1.  Um secundário deve ser eleito o novo primário

2.  Secundários devem concordar em qual a última operação executada

Como garantir que não se perdem mensagens?

1 secundário que participa no protocolo deve ter a última mensagem Possível solução: maioria de secundários para executar e ler operações

cliente

cliente

X = 0

X = 3

X = 3

vrs = 2

vrs = 2

vrs = 1

Material de suporte às aulas de Sistemas Distribuídos – Copyright DI – FCT/ UNL / 39

PRIMÁRIO / SECUNDÁRIO : ESCRITA : FALHA DO PRIMÁRIO

O que fazer quando o primário falha?

1.  Um secundário deve ser eleito o novo primário

2.  Secundários devem concordar em qual a última operação executada

Como garantir que apenas um secundário é eleito?

Algoritmo de eleição / sistema de comunicação em grupo Detetor de falhas

cliente

cliente

X = 0

X = 3

X = 3

vrs = 2

vrs = 2

vrs = 1