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