Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas...

31
Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos

Transcript of Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas...

Page 1: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

Coordenação e consenso

Nazareno AndradeUniversidade Federal de Campina Grande

02/2008

Sistemas Distribuídos

Page 2: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

2

FundamentosCoordenando processosConstruíndo sistemasSistemas construídos

Page 3: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

3

FundamentosCoordenando processosConstruíndo sistemas

– Sincronização– Eleição e consenso– Replicação

Sistemas construídos

Page 4: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

4

Objetivos

Entender algoritmos de eleição

Entender algoritmos de consenso famosos e o espaço de soluções

Page 5: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

5

Problema da eleição

Diversos algoritmos distribuídos são facilitados com o conceito de líder– Multicast ordenado com coordenador– Sincronismo com coordenador– Redes p2p com supernós

Algoritmos de eleição elegem líders eficientemente– Safety: num instante, todos os nós ou escolheram P ou ainda não

escolheram nó algum– Liveness: em algum momento, nós escolhem um líder ou falham

Consideramos que nós já tem valor que determina eleito e podem falhar

Page 6: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

6

Algoritmo do valentão

Cada processo conhece o id de todos os outros

Quando alguém percebe a falha do líder, inicia eleição– Contacta nós com id mais alto, – Cada um deles responde como novo encarregado inicia

uma nova eleição– Quando um novo encarregado inicia eleição e não recebe

respostas, ele é o novo líder e avisa os demais

Page 7: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

7

Note que qualquer processo poderia falhar no caminhoE que esse algoritmo só é prático para grupos pequenos

– Pior caso gera O(n^2) mensagens

Page 8: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

8

Algoritmo de anel

Nós se organizam numa topologia de anelQuando um nó percebe que líder anterior

falhou, inicia eleição– Passa vetor com seu id adiante no anel– Quando recebe vetor de volta com seu id, o

vetor deu a volta e quem tem o maior id é o novo líder

Em média mais eficiente que o algoritmo do valentãoPorém ainda adequado apenas para grupos

pequenos

Page 9: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

9

Eleições em grande escala

Problema: eleger uma série de supernós em um sistema p2p

Abordagem 1: numa DHT, nós responsáveis por ids que satisfazem uma condição são supernós– Supernó com id == (k AND 11100000) é o responsável pelo nó com

chave k– Sou supernó == sou responsável por (meuID AND 11100000)?

Abordagem 2: oganizar nós em um espaço geométrico imaginário e distribuir fichas entre eles– Cada nó procura se seus vizinhos têm fichas– Fichas exercem força de repulsão e fazem nós as transmitirem

Page 10: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

10

Consenso

Um dos problemas mais fundamentais de SDs

Informalmente: como fazer um grupo de processos concordar em um valor– Qual é a hora– Fazer ou não fazer commit– Quem é parte do grupo– Quem é o líder do grupo– Podemos seguir para o próximo passo do algoritmo

Já vimos algumas instâncias, agora vejamos o mais geral

Page 11: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

11

Um pouco de formalismo

Conjunto de nós– Falhas por fail-stop ou bizantinas – Mais tarde: fail-stop + recuperação

Objetivo: todos os processos pi põem o mesmo valor em uma variável di

– Não queremos amarrar de onde vem vi

– vi pode ser proposto por um nó ou decidido a partir de várias propostas

Page 12: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

12

Um pouco de formalismo

Desejamos:1. Concordância: Todos os nós escolhem o mesmo valor para di

2. Validade: O valor escolhido deve ter sido proposto por algum nó3. Terminação: Alguma hora, todos decidem um valor

O que é safety e o que é liveness aqui?

Pode ser descrito de formas ligeiramente diferentes: generais bizantinos, consistência interativa, atomic broadcast, ...

Page 13: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

13

Consenso

Consenso com líder(generais bizantinos)

Consistência interativa

Page 14: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

14

Uma boa nova

Esses problemas são equivalentes– Resolvemos um, resolvemos todos

Por exemplo:– CI a partir de GB: GB várias vezes, cada processo é líder

uma vez– C de CI: roda CI, depois nós aplicam mesma função a vetor

para decidirPor aí vai...

Page 15: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

15

Uma péssima nova

Nenhum desses consensos pode ser garantido em um sistema assíncrono com crash– Não podemos decidir não levar em conta a opinião de um nó; ele

pode estar apenas lento e mandar a mensagem na hora errada

Consenso pode acontecer freqüentemente ou pode acontecer raramente

Não funciona com crash não funciona com falhas bizantinas

Page 16: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

16

Mas a vida continua

Se consenso não funciona em um sistema assíncrono e:– Multicast totalmente ordenado?– Replicação consistente?– Commits em grupo?

Na prática, vivemos com isso:– Tentamos até que o sistema se comporte como síncrono– Mascaramos falhas: esperamos até o processo responder– Usamos detectores de falha:

• Crash fail-stop (sempre que funciona, claro)

Page 17: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

17

Voltando ao problema

O commit é um problema de consenso– Um dos lados não pode fazer nada se não souber o que o outro fez

Page 18: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

18

Primeira solução: 2-phase commit

Você quer marcar um chopp, que protocolo você usa?

Votos são booleanos, vi é proposto pelo coordenador

Page 19: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

19

Funcionamento

2PC atende nossos requisitos?– Mesmo em um sistema assíncrono?

Qual seu custo?

E se nós puderem falhar (fail-stop)?– Coordenador ou nó antes de qualquer mensagem– Coordenador após (algumas) propostas– Nós após (algumas) propostas– Coordenador após (algumas) respostas

Page 20: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

20

Falha do coordenador durante votos

Se nós guardam votos por algum tempo, é possível mudar de coordenador– Mas e se um coordenador + um nó falharem?

Algo semelhante acontece para falhas durante o commit

Page 21: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

21

Na prática

Custo não é muito alto (3N-1) Latência é baixa (3 msgs)

Porém, na prática, é comum um coordenador ser um participante– A falha dele pára o sistema– Como o TCP lida com isso?

Útil para aplicações onde o protocolo pode reiniciar por timeouts a qualquer instante– Perigoso para aplicações onde isso não é permitido

Page 22: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

22

Resolvendo o 2PC 3PC

Problema do 2PC: um nó pode fazer commit e falhar com o coordenador– Nesse caso, nunca saberemos o que eles tinham decidido

Solução: adicionamos uma outra fase antes, que informa a decisão antes de qualquer açãoO que isso muda na recuperação de falhas?

.

Page 23: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

23

Se o coordenador e um nó falharem após um commit, todos os outros nós receberam prepare-commit– Se algum nó não recebeu prepare-commit, ninguém fez

commit

Podemos relaxar o recebimento de N confirmações antes do prepare-commit– Para tolerar f falhas, precisamos de f+1 confirmações

Page 24: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

24

O cúmulo do robusto: Paxos

Para algumas situações, 3PC não é robusto– Coordenador recebe prepare-commit de N-1 nós e falha– Substituto começa a enviar commits– Coordenador volta das cinzas e começa a cancelar commit

Fail-recover é uma aproximação de sistemas assíncronos– Equivale a errar na detecção de falhas, o que acontece no mundo real

Paxos é um algoritmo para consenso em sistemas assíncronos com crash (ou fail-recover)– Paxos roda em sistemas da Google, Yahoo, ...

Page 25: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

25

Como pode?

Consenso em sistema assíncrono?– É impossível garantir safety e liveness em um sistema assíncrono– Paxos pára até que haja sincronia

Na prática, sistemas se alternam entre síncrono e assíncrono– Quando não há sincronia, não há liveness– Em compensação, safety nunca é violada

Entender isso levou mais tempo do que parece necessário...

Page 26: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

26

Idéia geralAcontece em turnos

Em cada turno, há um proponente e vários aceitadores– Se um falha, outro nó vira proponente– Se há vários, paramos até que só um deles se

mantenha– Proposta tem valor e contador (totalmente

ordenado)

Aceitadores respondem uma proposta rejeitando ou aceitando um valor e dizendo que propostas estão aceitando

– Assim, proponentees sabem de propostas mais atuais que as suas e propostas antigas não são aceitas

Proponentees enviam commit se receberam N/2+1 respostas positivas. Se não, novo turno

Page 27: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

27

Comentário

Eleição é um consenso– Caso paxos dependesse de eleição, não resolvia nada

Em lugar disso, não há acordo sobre quem é líder– Qualquer um pode achar que é – Se gente demais achar que é, há um livelock

Como um líder não bagunça trabalho do outro?– Propostas são ordenadas– Todos os nós sabem qual a mais recente que conhecem

Coordenador resolve commit se maioria aceita proposta– Se maioria aceitou, qualquer maioria contém alguém que conhece a

proposta mais atual

Page 28: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

28

Mais sobre a ordenação

Quando recebe uma proposta, o aceitador checa:– Se essa é a proposta mais atual, responde aceitando ou

rejeitando e não aceita mais propostas anteriores– Se a proposta é mais antiga, responde dizendo o número

da mais atual (assim um proponente pode continuar o algoritmo em caso de falha)

Page 29: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

29

Por que maioria

Quaisquer duas maiorias têm um nó em comum– proponente um avisa N + 1 nós de pr1– proponente dois enviará pr2 a pelo menos um nó que

conhece pr1– proponente tês enviará pr3 a um nó que conhece p1 e p2

ou a um nó que conhece p1 e um nó que conhece p2

Qualquer proponente consegue descobrir última Qualquer proponente consegue marcar sua proposta

como mais recente para qualquer outro

Page 30: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

30

Detalhe a mais

Quando um aceitador envia a proposta previamente aceita para um novo proponente, envia também o valor concordado– Um proponente continuando o algoritmo não pode mudar

o valor da proposta

Propositores podem co-existir– Porém eles se atrapalham e precisam se detectar– O sistema se organiza quando ficar síncrono em um

período e permitir isso

Page 31: Coordenação e consenso Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos.

31

Na prática

Implementado no Chubby, do GoogleImplementado no Zookeper, da Yahoo

Notadamente difícil de entender e implementarCaro

Quando usar?