Impossibility of Distributed Consensus with One Faulty Process Michael J. Fischer Nancy A. Lynch...
Transcript of Impossibility of Distributed Consensus with One Faulty Process Michael J. Fischer Nancy A. Lynch...
Impossibility of Distributed Consensus with One Faulty
Process
Michael J. FischerNancy A. LynchMichael S. Paterson
1985
Apresentado por Nazareno Andrade
Roteiro
Introdução Modelo do sistema Prova do resultado Conclusões
Introdução
Problema: Consenso de um sistema de processos
distribuído sobre um valor de um conjunto pré-determinado.
• Processamento de dados distribuídos;• Sistemas de arquivos distribuídos;• Aplicações distribuídas tolerantes a falhas;• Etc.
Introdução Falhas.
O consenso é Impossível em um sistema assíncrono com possibilidade de uma falha.
“Nenhum protocolo de consenso completamente assíncrono pode tolerar mesmo uma falta.”
Introdução
O sistema não difere entre um processo lento e um processo morto.
Se o consenso depende de um processo morto, o sistema esperará para sempre.
O formalismo para estas afirmações segue.
Modelo do Sistema Completamente assíncrono
Nenhuma restrição sobre as velocidades relativas dos processos ou o tempo de entrega das mensagens;
Não há relógios sincronizados; Sistema de mensagens confiável; É impossível detectar a morte de um
processo; Processos falham por parada.
Modelo do SistemaConsenso simples (“weak”)
Cada processo começa com um valor em {0,1} Um processo correto decide indo para um valor
de decisão em {0,1} Todos os processos corretos devem escolher o
mesmo valor.
Consenso simples
(“weak”)
Restrições fortes
sobre as falhas
Consenso mais
complexo
Restrições fracas
sobre as falhas
Modelo do Sistema: Protocolo
Um protocolo de consenso é um sistema assíncrono de 2 ou mais processos. Os processos são autômatos que se
comunicam por meio de mensagens; As mensagens são entregues por um
sistema de mensagens global confiável.
Modelo do Sistema:Sistema de mensagens
Uma mensagem é um par (p,m) Atomic broadcasting assumido; Não-determinístico; Mantém um buffer global; Duas primitivas:
send (p, m): receive (p):
• É permitido que receive retore um número finito de vezes, mesmo se (p,m) está no buffer.
Modelo do Sistema:Processo
Processo:• Um registro de input xp• Um registro de output yp = {b, 0, 1},
inicializado em b e “write once”.• Capacidade de armazenamento interna
ilimitada• Xp + Yp + armazenamento interno +
program counter = estado interno.
Xp Yp
armazenamento
Program counter
Modelo do Sistema:Execução de um processo
O resultado do processamento depende do input, da comunicação e das funções de transição.
Um processo age deterministicamente de acordo com sua função de transição.
A função altera o estado interno do processo de acordo com o input
Se Yp b então o processo está num estado de decisão.
Modelo do Sistema:Configuração
Configuração do sistema: Estados internos de todos os
processos Conteúdo do Buffer de mensagens
Configuração inicial: Todos os processos em estado inicial Buffer vazio.
Modelo do Sistema:Steps
Um step primitivo de um processo que leva uma configuração a outra.
• receive(p) -> novo estado interno -> envia um número finito de mensagens;
Pode ser definido por um par (p,m) = e, um evento.
Modelo do Sistema:Steps (cont.)
e(C) é então a configuração obtida pela aplicação de e a C;
(p, ) pode ser sempre aplicado não há deadlocks.
ee0 ee1 ee2C0 C1 C3C2
Modelo do Sistema:Runs e Schedules
Schedule: = e1, e2, e3,…, en aplicáveis a
C em ordem. Finita ou infinita
Run: s = step1, step2, … stepn associada.
ee0 ee1 ee2C0 C1 C3C2
C0 C3
= {e0, e1, e2}
Modelo do Sistema:Mais algumas definições
finita t.q. (C)=C’ C’ é alcançável (reachable) a partir de C;
Se C é uma configuração inicial, então C’ é acessível.
Todas as configurações consideradas são acessíveis.
Modelo do Sistema:Lema 1
“Suponha que em alguma configuração C as schedules 1 e 2 levem às configurações C1 e C2, respectivamente. Se os conjuntos de processos dando steps em 1 e 2 são disjuntos, então 2 pode ser aplicado a C1 e 1 pode ser aplicado a C2 e ambas levarão à mesma configuração C3”.
“Comutatividade” das Schedules.
Modelo do Sistema:Lema 1 (cont.)
Prova: Definição do sistema.
1 2
C0
C1
C3
C2
12
P1= {0,b}
P2 {0, b}
P3{0, b}
P1= {0,b}
P2 {1, 0}
P3{1, b}
P1= {1,1}
P2 {0, b}
P3{0, b}
P1= {1,1}
P2 {1, 0}
P3{1, b}
1
12
2
Modelo do Sistema:Definições
Uma configuração do sistema possui um valor de decisão v se algum processo p está no estado de decisão com yp = v (v!=b).
Um protocolo de consenso é parcialmente correto se Nenhuma configuração acessível possui mais
de um valor de decisão; Para cada v {0,1} alguma configuração acessível
tem valor v.
Modelo o Sistema:Definições
Processo correto - infinitos steps em um run. Processo falho – número finito de steps
Run admissível: No máximo um processo é falho Todas as mensagens enviadas a processos corretos
são eventually recebidas.
Run de decisão: Algum processo atinge estado de decisão nesta run.
Modelo do Sistema:Definições
Protocolo consenso totalmente correto apesar de uma falta: Parcialmente correto Toda run admissível é uma run de
decisão
•Nenhuma configuração acessível possui mais de um valor de decisão;•Para cada v {0,1} alguma configuração acessível tem valor v.•Toda run admissível é uma run de decisão
•Consenso
•Não trivialidade
•Terminação
Modelo do Sistema:Valência
Sendo V o conjunto de valores de decisão das configurações alcançáveis a partir de C Se | V | = 2, C é bivalente; Se | V | = 1, C é univalente;
• V = {1}, C é 1- valente;• V = {0}, C é 0- valente.
Prova do Resultado:Teorema
“Nenhum protocolo de consenso é totalmente correto apesar de uma
falta.”
Prova: Existe alguma configuração inicial bivalente; É possível construir uma run admissível que
evite sempre dar o step que decidiria por um valor.
Prova do Resultado:Lema 2
“Existe uma configuração inicial bivalente.”
Prova por contradição Hipótese: Não existem estados iniciais
bivalentes.
Pela definição Configurações iniciais 0 e 1-valentes (não trivialidade). C0 é 0-valente e C1 é 1-valente
• Existem C0 e C1 que diferem apenas em um processo p ( que é decisivo ).
Prova do Resultado:Lema 2
1 1 10 0 1 10 0 0
Aplicando-se schedules em que p não dá passos (falha?), o estado interno de C0 e C1 será idêntico, com exceção de xp de p
C0 e C1 eventually atingirão um mesmo valor de decisão.
C0 C1
Prova do Resultado:Lema 2
Mas C0 e C1 têm valências diferentes. C0 ou C1 é bivalente contradição.
“Existe uma configuração inicial bivalente”.
C0 - 0-valente
C1 - 1-valente
(p não dá passos) diferem
em xp
decidem
em v
Prova do Resultado:Lema 3
Seja C uma configuração bivalende de P e e=(p,m) um evento que é aplicável a C.
Seja o conjnto das configurações atingíveis a partir de C sem aplicar e, e ={ e(E) | E }.
possui uma configuração bivalente.
I.e., é possível ir de uma configuração bivalente a outra por uma schedule não-vazia.
Prova do Resultado:Lema 3
possui uma configuração bivalente.
C E** Bee
bivalente
C eeSe
Então * tal que
Prova do Resultado:Lema 3
Prova por contradição Hipótese: não possui nenhuma
configuração bivalente.
Pela definição Existem E0 e E1, 0 e 1-valentes,
respectivamente;
Prova do Resultado:Lema 3
possui estados 0 e 1-valentes: E0 é 0-valente Se E0 então F0 = e(E0) F0 is 0-valente Se E0 então existe F0 do qual E0 is
reachable F0 is 0-valente
Em ambos os casos, F0 é 0-valente e pertence a
Idem para uma configuração 1-valente
Prova do Resultado:Lema 3
Para e=(p,m) e e’=(p’,m’): Ca e Cb tal que Ca = e’(Cb)
• Ca bivalente e Cb 1-valente D0 = e(Ca) é 0-valente D1 = e(Cb) é 1-valente
ee’Ca
Cb
D1
D0
e’
Prova do Resultado:Lema 3
se em e=(p,m) e e’=(p’,m’) p’ p’ podemos aplicar o lema1 (comutatividade)
ee’Ca
Cb
D1
D0
e’e
Mas D0 é 0 valente e D1 é 1-valente contradição
Prova do Resultado:Lema 3
A outra possibilidade é p’=p Considere uma schedule de uma deciding
run em que p pára. Seja A = (Ca).
AAeeDD00
CC00
CC11
DD11
eeee’’
ee’’
eeEE11
EE00
ee
A é bivalente contradição
Prova do Resultado:Lema 3
Pela contradição da hipótese “ não possui nenhuma configuração bivalente”, provou-se que
É possível sempre ir de um estado bivalente a outro por uma schedule não-vazia.
Prova do Resultado:Impossibilidade
Pelos lema 2 e 3: É possível, partindo de uma configuração
inicial em que o resultado não está previamente determinado construir uma run admissível que evita para sempre a decisão.
Sempre tomar um passo para outro estado não determinado.
Esta run será infinita.
Prova do Resultado:Impossibilidade
Assim, pela contradição da hipótese da prova:
Não existe um protocolo de consenso totalmente correto
apesar de uma falha.
Conclusões O consenso em sistemas totalmente
assíncronos é impossível.
Para possibilitar um consenso satisfatório é necessário mudar o modelo Sincronismo Introduzir possiblidade de consenso Prover uma forma de detectar a morte de
processos