sistemas distribuídos · 2018. 1. 21. · 1) no algoritmo do servidor central para exclusão...

59
Sistemas Distribuídos Coordenação Vinícius Fernandes Soares Mota 1 DECSI/ICEA UFOP

Upload: others

Post on 22-Jan-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Sistemas Distribuídos

Coordenação

Vinícius Fernandes Soares Mota

1DECSI/ICEA UFOP

Page 2: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

2

DECSI/ICEA UFOP

Até agora

• Vimos algumas formas para processos sincronizarem suas ações

• Estudamos vários problemas que podem surgir com a concorrência de processos

Page 3: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Agora

• Nosso objetivo é verificar como os mecanismos de sincronização centralizada podem ser estendidos a um ambiente distribuído.

• Existe um curso somente sobre algoritmos distribuídos.

• Nosso objetivo é introduzir alguns dos principais aspectos.

DECSI/ICEA UFOP

3

Page 4: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Sincronização de Processos

• Processos Cooperativos:• Afetam ou são afetados por outros processos.

• Podem compartilhar um mesmo espaço de endereços lógicos, ou um mesmo arquivo.• Endereços lógicos: threads, ou processos leves.

• Acesso concorrente a dados pode gerar inconsistência de dados.• Devem ser desenvolvidos mecanismos para garantir a

consistência de dados compartilhados por processos cooperativos.

DECSI/ICEA UFOP

4

Page 5: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Jantar dos filósofos...

• Formulado por Dijkstra, 1965

• Cada filósofo come• Usando 2 garfos simultaneamente

• Usa ou larga 2 garfos

• Modela a disputa por recursos

DECSI/ICEA UFOP

5

Page 6: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Jantar dos filósofos...

• Algoritmo básico• Pense até que o garfo esquerdo esteja disponível;

Quando estiver, pegá-lo;

• Pense até que o garfo direito esteja disponível; Quando estiver, pegá-lo;

• Quando possuir ambos os garfos, comer por um período fixo de tempo;

• Então, coloque o garfo direito para baixo;

• Então, coloque o garfo esquerdo para baixo;

• Repetir desde o início.

DECSI/ICEA UFOP

6

Page 7: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

O caso produtor/consumidor

• O caso produtor/consumidor:• Suponha processos com memória compartilhada

• Memória consiste em um buffer de tamanho variável que abriga itens em estoque. Variável counter indica o número de itens em estoque (itens no buffer.

• Toda vez que um produto é adicionado incrementa-se o counter.

• Toda vez que um produto é retirado decrementa-se o counter.

DECSI/ICEA UFOP

7

Page 8: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

O caso produtor/consumidor// inicializacao

fim = 0;

ini = 0;

n = 0;

// codigo do produtor

for (i=0; i<1000; i++) {

while (n == capacidade);

buf[fim] = produzir(i);

fim = (fim + 1) % capacidade;

n++;

}

DECSI/ICEA UFOP

8

// codigo do consumidor

for (i=0; i<1000; i++) {

while (n == 0) ;

consumir(buf[ini]);

ini = (ini + 1) % capacidade;

n--;

}

Page 9: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

O caso produtor/consumidor

• Algoritmos corretos isoladamente.

• Podem causar inconsistência se rodados em paralelo.

• Problema: Sessão Crítica!!!• Região de código onde um processo está acessando

dados compartilhados.

• Problemas de inconsistência ocorrem em sessões críticas e devem ser evitados.

DECSI/ICEA UFOP

9

Page 10: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

O problema da sessão crítica

• Soluções para o problema da sessão crítica devem satisfazer os requisitos:• Exclusão mútua: Se um processo está executando uma sessão crítica

(acessando dados compartilhados) os demais processos devem esperar.

• Progressão:Se não há processos executando em sessão crítica, somente processos que não estão executando no final da sessão podem competir pela sessão crítica.

• Espera limitada:existe um limite no número de vezes que outros processos são permitidos a entrar na sessão crítica após m processo requisitar a sessão crítica.

DECSI/ICEA UFOP

10

Page 11: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Sessão Crítica

• Algoritmo básico

DECSI/ICEA UFOP

11

enter() // entra na seção crítica – bloqueia, se necessário

resourceAccesses() // acessa recursos compartilhados na seção crítica

exit() // sai da seção crítica – outros processos podem entrar agora

Page 12: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Sistemas centralizados:Semáforos• Um semáforo é um tipo abstrato de dados que

possui um valor inteiro, uma lista de processos em espera e duas operações• P (do holandês Proberen, testar)

• V (do holandês Verhogen, incrementar)

• A implementação do semáforo deve ser atômica

• Garantido por linguagens que oferecem o recurso

DECSI/ICEA UFOP

12

Page 13: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Sistemas centralizados:Semáforos• Para garantir exclusão mútua a uma determinada

região (região crítica), cada processo deve chamar a operação P antes de acessar tal região e chamar a operação V após sair dessa região

• Operação P sobre um semáforo S• Testa se o processo que executou P(S) pode ou não

entrar na região crítica

• Operação V sobre um semáforo S• Sinaliza ao semáforo que o processo não está mais na

região crítica e retira outro processo da fila de espera

DECSI/ICEA UFOP

13

Page 14: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Sistemas centralizados:Semáforos• // S.valor começa com 1

• P(S)

• S.valor -= 1;

• Se (S.valor < 0) • // bloqueia o processo e insere em S.fila

• V(S)

• S.valor += 1;

• Se (S.valor <= 0)

// retira algum processo de S.fila e o coloca em execução

DECSI/ICEA UFOP

14

Page 15: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

O caso produtor/consumidor com semáforos

DECSI/ICEA UFOP

15

// inicializacaofim = 0; ini = 0; n = 0; semaforo S; S.valor = 1;

// codigo do produtor for (i=0; i<1000; i++) {

while (n == capacidade) ; buf[fim] = produzir(i); fim =

(fim + 1) % capacidade; P(S); n++; V(S);

}

// codigo do consumidor for (i=0; i<1000; i++) {

while (n == 0) ; consumir(buf[ini]); ini = (ini + 1) % capacidade; P(S); n--; V(S);

}

Page 16: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

O caso produtor/consumidor com semáforos

• Código do produtor:

...

produzir um item ...

wait(empty);

wait(mutex);

...

Adicionar um item no vetor

...

signal(mutex);

signal(full);

DECSI/ICEA UFOP

16

Page 17: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

O caso produtor/consumidor com semáforos

• Código do consumidor:

wait(full);

wait(mutex);

...

remove nextc do buffer;

...

signal(mutex);

signal(empty);

...

consome o próximo item

...

DECSI/ICEA UFOP

17

Page 18: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Sincronização em Sistemas Distribuídos

• Conceitos importantes no projeto de qualquer aplicação distribuída:• Comunicação

• Sincronização

• Sincronização em aplicações distribuídas:• Como garantir exclusão mútua no acesso a seções críticas ?

• Como garantir atomicidade na execução de uma transação distribuída ?

• Como alocar recursos evitando a ocorrência de deadlocks ?

DECSI/ICEA UFOP

18

Page 19: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Sincronização em Sistemas Distribuídos• Sincronização em sistemas centralizados: utiliza

memória compartilhada• Exemplos: semáforos, monitores etc

• Sincronização em sistemas distribuídos: utiliza troca de mensagens• Implementada via algoritmos distribuídos

• Mesmo determinar se um evento A ocorreu antes ou depois de um evento B é mais complexo do que em um sistema centralizado

DECSI/ICEA UFOP

19

Page 20: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Exclusão Mútua Distribuída

• Sistemas Centralizados: memória compartilhada (semáforos, monitores etc)

• Sistemas Distribuídos: via troca de mensagens

• Requisitos:• Segurança: No máximo um processo pode estar

executando na seção crítica (SC)

• Subsistência: Um processo que requisita acesso à SC, obtém este acesso em algum momento. Ou seja, não há deadlock ou starvation.

• Ordenação: Se uma requisição para entrar na SC aconteceu antes de outra, a entrada de SC é garantida na ordem

DECSI/ICEA UFOP

20

Page 21: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Primeira Solução: Algoritmo Centralizado• Existe um processo coordenado (PC)

• Gerencia o acesso à SC

• Processos comuns• Antes de entrar na SC: enviam request ao PC

• Quando recebem reply: entram na SC

• Quando saem da SC: enviam release ao PC

• Processo Coordenador:• Enfileira request quando a SC ocupada

• Desenfileira request ao receber um release

DECSI/ICEA UFOP

21

Page 22: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Primeira Solução: Algoritmo Centralizado

DECSI/ICEA UFOP

22

Server

1. Requesttoken

Queue ofrequests

2. Releasetoken

3. Granttoken

4

2

p4

p3p

2

p1

Page 23: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Primeira Solução: Algoritmo Centralizado (cont.)• Número de mensagens trocadas para entrar na SC:

duas (um request e um reply)

• Saída da SC: uma mensagem (release).

• Problema: processo que centraliza todas as informações e decisões

• Solução: distribuir a fila de pedidos• Todos os nós recebem todos os pedidos

• Pedidos são ordenados pelos nós da mesma maneira

DECSI/ICEA UFOP

23

Page 24: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Algoritmos de Exclusão Mútua Distribuída• Principais Algoritmos:

• Token Ring (*)

• Ricart e Agrawala (*)

• Osvaldo e Roucariol

• Maekawa

(*) Algoritmos que serão estudados a seguir

DECSI/ICEA UFOP

24

Page 25: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Algoritmo Token Ring

• Supõe que os processos são organizados como um anel lógico, por onde circula uma token• Não exige que a topologia da rede seja em anel (anel

lógico e não físico)

• Cada processo deve armazenar a configuração completa do anel

• Correção: ao processo de posse da token é garantido o acesso à SC

DECSI/ICEA UFOP

25

Page 26: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Algoritmo Token Ring

• Idéia básica:• Se um processo não deseja entrar na SC:

• Ao receber a token, repassa a mesma para seu vizinho

• Se um processo deseja entrar na SC: • Aguarda a passagem da token e a retém

• Número de mensagens trocadas: entre 1 e n-1

DECSI/ICEA UFOP

26

Page 27: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Algoritmo Token Ring

DECSI/ICEA UFOP

27

pn

p

2

p3

p

4

Token

p1

Page 28: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Algoritmo Token Ring

• Vantagens: simplicidade

• Desvantagem: tratamento de erros• Perda da mensagem que contém a token

• Deve-se gerar a token novamente

• Quando gerar ? Quem deve gerar ?

• Travamento de processos• Deve-se reconfigurar o anel

DECSI/ICEA UFOP

28

Page 29: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Algoritmo de Ricart e Agrawala

• Algoritmo executado por cada processo Pi, que compartilha uma SC ( i <= n):• Variáveis:

estado: estado da seção crítica

OSN: relógio lógico do processo

HSN: maior valor do timestamp de qualquer mensagem enviada ou recebida

• Inicialização:

estado:= livre;

HSN:= 0;

DECSI/ICEA UFOP

29

Page 30: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

1. Broadcast de mensagem request comtimestamp

2. 2. Após receber um request, envia ack SE

-Não quer entrar na SC, ou

-Está tentando entrar na SC, mas seu timestampé maior do que o enviado

(Se está na SC, coloque o request no buffer)

3. Entrar na SC, quando receber ack de todos

4. Após sair da SC, envia ack para cada requestpendent e antes de fazer nova requisição

Algoritmo de Ricart e Agrawala

DECSI/ICEA UFOP

30

Page 31: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Algoritmo de Ricart e AgrawalaOn initialization

state := RELEASED; To enter the section

state := WANTED;Multicast request to all processes; request processing deferred hereT := request’s timestamp;Wait until (number of replies received = (N – 1));state := HELD;

On receipt of a request <Ti, pi> at pj (i ≠ j)if (state = HELD or (state = WANTED and (T, pj) < (Ti, pi)))then

queue request from pi without replying; else

reply immediately to pi;end if

To exit the critical sectionstate := RELEASED;reply to any queued requests;

DECSI/ICEA UFOP

31

Page 32: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Algoritmo de Ricart e Agrawala

• Número de mensagens trocadas para entrar na SC:

• 2 (n -1)• n-1: requests

• n-1: replys

• Vantagem:• Distribuído (sem um ponto central de falha)

• Desvantagem:

Em qual situação este algoritmo pode ser ineficiente?

DECSI/ICEA UFOP

32

Page 33: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Algoritmo de Ricart e Agrawala

• Número de mensagens trocadas para entrar na SC:

• 2 (n -1)• n-1: requests• n-1: replys

• Vantagem:• Distribuído (sem um ponto central de falha)

• Desvantagem:

Em qual situação este algoritmo pode ser ineficiente?

Caso de Mútliplas requisições por um SC

DECSI/ICEA UFOP

33

Page 34: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Jantar dos filósofos...

• Uma solução distribuída (Kandy, 1984)• Para cada par de filósofos que disputam um recurso, crie um garfo e dê-

o ao filósofo com a ID mais baixa (n para o agente Pn). • Cada garfo pode estar sujo ou limpo. Inicialmente, todos os garfos estão sujos.

• Quando um filósofo quer usar um conjunto de recursos (isto é, comer), esse filósofo deve obter os garfos de seus vizinhos. Para cada garfo o filósofo não tem, ele envia uma mensagem de pedido.

• Quando um filósofo com um garfo recebe uma mensagem de pedido, ele mantem o garfo se ele está limpo, mas desiste quando está sujo. Se o filósofo envia o garfo, ele limpa o garfo antes de fazê-lo.

• Depois que um filósofo acaba de comer, todos os garfos ficam sujos. Se outro filósofo havia pedido anteriormente um dos garfos, o filósofo que acabou de comer limpa o garfo e o envia.

DECSI/ICEA UFOP

34

Page 35: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Reforçando

1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem acontece-antes

2) Qual o impacto na largura de banda de algoritmos de exclusão mútua

3) O algoritmo de Ricart e Agrawala tem o problema de que se um processo cai e não responde a uma solicitação de outro processo para acessar recursos, a falta de resposta será interpretada como negação de permissão. Solução: todas as solicitações serem respondidas imediatamente para facilitar a detecção de processos quebrados. Existem circunstâncias em que mesmo este método é insuficiente? Discutir.

DECSI/ICEA UFOP

35

Page 36: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Reforçando

1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem acontece-antes

• O Processo A envia uma solicitação rA para entrar na Seção crítica e envia uma mensagem m para B.

• Ao receber m, B envia um pedido rB para entrar na SC.

• Para satisfazer a regra aconteceu-antes• rA deve ser concedido antes de rB.• No entanto, devido a atrasos de propagação de mensagem, rB

chega ao servidor antes de rA, • Eles serão atendidos na ordem oposta.

DECSI/ICEA UFOP

36

Page 37: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Reforçando

2) Qual o impacto na largura de banda de algoritmos de exclusão mútua

A largura de banda será dividida pelo tempo que cada processo “segurar” a exclusão mútua

DECSI/ICEA UFOP

37

Page 38: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Reforçando

3) O algoritmo de Ricart e Agrawala tem o problema de que se um processo cai e não responde a uma solicitação de outro processo para acessar recursos, a falta de resposta será interpretada como negação de permissão.

Suponha que um processo nega permissão e, em seguida, falha. O processo solicitante pensa que ele está vivo, mas a permissão nunca virá.

Uma saída é o solicitante não bloquear realmente, mas sim ir dormir por um período de tempo fixo, após o qual ele examina todos os processos que negaram permissão para ver se eles ainda estão em execução.

DECSI/ICEA UFOP

38

Page 39: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Algoritmos de Eleição

• Grupo de processos deve eleger um coordenador.

• Aplicações:• Gerenciamento de réplicas,

• Algoritmos centralizados de coordenação, sincronização, etc...

• A escolha do coordenador deve ser única, mesmo que vários processos de eleição tenham começado simultaneamente.

DECSI/ICEA UFOP

42

Page 40: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Requisitos Algoritmos de Eleição

• Segurança

• Um processo conhece o processo eleito

• Subsistência

• Todos os processos participam da eleição

DECSI/ICEA UFOP

43

Page 41: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Algoritmo de eleição baseado em anel• Processos organizados em topologia anel

• Todos processos iniciam como não participantes

• Marca a si mesmo como participante e envia uma mensagem com seu id no sentido horário

• Ao receber• Se o id recebido é maior, encaminha para o vizinho

• Se o id é menor• Se é não participante, substitui pelo seu id

• Se é participante, não encaminha a mensagem

DECSI/ICEA UFOP

44

Page 42: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Algoritmo de eleição baseado em anel

DECSI/ICEA UFOP

45

24

15

9

4

3

28

17

24

1

Nota: Eleição iniciada pelo processo 17.

O maior identificador encontrado até então é o 24.

Processos com estado participante estão escurecidos

Page 43: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Algoritmo Tirano (Valentão)The bully algorithm• Membros do grupo devem conhecer a identidade e o

endereço dos outros membros.

• Mensagens:• Eleição: enviada para anunciar o início de uma nova eleição

• Resposta: enviada em resposta a uma mensagem de eleição.

• Coordenador: enviada para anunciar o coordenador.

• Um processo inicia uma eleição quando notar uma falha no coordenador (não recebeu uma resposta a uma requisição depois de um certo número de tentativas ou após um certo timeout, por exemplo).

DECSI/ICEA UFOP

46

Page 44: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Algoritmo TiranoThe bully algorithm• Processo inicia eleição

enviando mensagem de eleição para os processos de maior prioridade.

DECSI/ICEA UFOP

47

eleição

p1

p2

p3

p4

C

eleição

resposta

resposta

eleição

Estágio 1

Page 45: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Algoritmo TiranoThe bully algorithm• Processo inicia eleição

enviando mensagem de eleição para os processos de maior prioridade.

• Processos respondem a mensagem e iniciam nova eleição

DECSI/ICEA UFOP

48

p1 p2

p3

p4

C

eleição

eleiçãoEstágio 2

p1

p2

p3

p4

C

eleição

resposta

resposta

eleição

Estágio 1

eleição

resposta

Page 46: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Algoritmo TiranoThe bully algorithm• Processo inicia eleição

enviando mensagem de eleição para os processos de maior prioridade.

• Processos respondem a mensagem e iniciam nova eleição

• Processo coordenador envia mensagem de coordenador.

DECSI/ICEA UFOP

49

p1 p2

p3

p4

p1

p2

p3

p4

C

eleição

eleiçãoEstágio 2

p1

p2

p3

p4

C

eleição

resposta

resposta

eleição

Estágio 1

timeout

Estágio 3

eleição

resposta

Page 47: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Algoritmo TiranoThe bully algorithm• Processo inicia eleição

enviando mensagem de eleição para os processos de maior prioridade.

• Processos respondem a mensagem e iniciam nova eleição

• Processo coordenador envia mensagem de coordenador.

• Se nenhuma mensagem for recebida, processo se declara coordenador e envia mensagem de coordenador para os processos de menor prioridade.

DECSI/ICEA UFOP

50

p1 p2

p3

p4

p1

p2

p3

p4

C

coordenador

Estágio 4

C

eleição

eleiçãoEstágio 2

p1

p2

p3

p4

C

eleição

resposta

resposta

eleição

Estágio 1

timeout

Estágio 3

Eventualmente.....

p1

p2

p3

p4

eleição

resposta

Page 48: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Reforçando

1) Compare o algoritmo de eleição do anel com oalgoritmo valentão

2) Esboce um pseudo-código para ambos os algoritmos.

DECSI/ICEA UFOP

51

Page 49: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

52

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 50: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

53

Um pouco de formalismo

Consenso:

Para chegar a um consenso, todo processo p i começa no estado indeciso e propõe um único valor v i , extraído de um conjunto D (i = 1, 2,..., N).

Os processos se comunicam, trocando valores. Cada processo configura o valor de uma variável de decisão d i .

Ao fazer isso, ele entra no estado decidido, no qual não pode mais mudar d i (i = 1, 2,..., N).

Page 51: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

54

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 52: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

55

Um pouco de formalismo

1

P 2

P 3 (crashes)

P 1

Consensus algori thm

v 1 =proceed

v 3=abort

v 2=proceed

d 1 :=proceed d2 :=proceed

Page 53: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

56

Um pouco de formalismo

Requisitos:

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

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

Page 54: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

57

Consenso

Consenso com líder

(generais bizantinos)

Consistência interativa

Page 55: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

58

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 decidir

Por aí vai...

Page 56: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

59

Uma péssima nova

Nenhum desses consensos pode ser garantido em um sistema assíncrono com falha

– 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 frequentemente ou pode acontecer raramente

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

Page 57: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

60

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 58: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

61

Comentário

Eleição é um consenso

Casos de falha, 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

Page 59: Sistemas Distribuídos · 2018. 1. 21. · 1) No algoritmo do servidor central para exclusão mútua, descreva uma situação na qual duas requisições não são processadas na ordem

Questões

DECSI/ICEA UFOP

Vinícius Fernandes Soares Mota

Sincronização

70