Sistemas Distribuídos: Conceitos e Projeto Resiliência de Processos Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.ufma.br 24 de julho de 2013 Francisco Silva (UFMA/LSD) SD: Princípios e Algoritmos 24 de julho de 2013 1 / 19
Resiliência Propriedade de um material de recuperar a sua forma ou posição original após sofrer choque ou deformação; elasticidade; Poder de recuperação. Capacidade de superar, de recuperar de adversidades; Capacidade de um ecossistema retornar à condição original de equiĺıbrio após suportar alterações ou perturbações ambientais. Francisco Silva (UFMA/LSD) SD: Princípios e Algoritmos 24 de julho de 2013 2 / 19
Resiliência de Processos A resiliência de processos preocupa-se em criar mecanismos de proteção a processos, tentando fazer com que os mesmos sobrevivam a eventuais falhas em um sistema; Uma forma de tornar um processo resiliente é a utilização de processos redundantes (redundância física); Um aspecto chave para contornar falhas de processos é organizar vários processos idênticos em um grupo no qual todos os processos recebam todas as mensagens enviadas ao mesmo. Francisco Silva (UFMA/LSD) SD: Princípios e Algoritmos 24 de julho de 2013 3 / 19
Questões de Projeto: Grupos Simples vs Grupos Hierárquicos Francisco Silva (UFMA/LSD) SD: Princípios e Algoritmos 24 de julho de 2013 4 / 19
Questões de Projeto: Grupos Simples vs Grupos Hierárquicos Grupo Simples: Todos os processos são iguais Decisões são tomadas coletivamente Vantagens: Não tem ponto de falha único Mesmo que um processo caia, o grupo continua a oferecer o serviço Desvantagem: Tomada de decisão pode ser complicada, com necessidade de uma votação atraso Francisco Silva (UFMA/LSD) SD: Princípios e Algoritmos 24 de julho de 2013 5 / 19
Questões de Projeto: Grupos Simples vs Grupos Hierárquicos Grupo Hierárquico: Existe um processo coordenador, os demais são denominados operários Sempre que uma requisição é gerada, é enviada ao coordenador O coordenador decide qual é o operário mais adequado para executá-la Vantagem: Decisões decididas de forma simples, já que é centralizada Desvantagem: Perda do coordenador provoca parada repentina Francisco Silva (UFMA/LSD) SD: Princípios e Algoritmos 24 de julho de 2013 6 / 19
Questões de Projeto: Associação a um Grupo Problemas: Como criar e eliminar grupos? Como permitir que processos se juntem e saiam dos grupos? Abordagens: 1 Servidor de grupos 2 Gerenciamento distribuído Francisco Silva (UFMA/LSD) SD: Princípios e Algoritmos 24 de julho de 2013 7 / 19
Servidor de Grupos Todas as requisições são enviadas a este servidor Mantem um banco de dados completo de todos os grupos e seus associados Método direto, eficiente e razoavelmente fácil de implementar Problemas: Se o servidor de grupo cair, o gerenciamento deixa de existir Provavelmente, grupos deverão ser reconstituídos do zero Francisco Silva (UFMA/LSD) SD: Princípios e Algoritmos 24 de julho de 2013 8 / 19
Gerenciamento Distribuído Se existe multicast confiável, um processo pode enviar uma mensagem a todos os membros do grupo anunciando que deseja se juntar ao mesmo; Para sair de um grupo, o processo deveria mandar uma mensagem. No entanto, é difícil de prever quedas! Membros tem que descobrir quedas experimentalmente; Os métodos Entrar/Sair de um grupo devem ser síncronos com as mensagens enviadas/recebidas: a partir do momento que um processo se junta ao grupo, ele deve receber todas as mensagens já enviadas. Ao sair, ele não deve mais receber mensagens do grupo e nem este deve receber mensagens dele. Francisco Silva (UFMA/LSD) SD: Princípios e Algoritmos 24 de julho de 2013 9 / 19
k-tolerância a Falhas Um sistema é k-tolerante a falha se puder sobreviver a falhas em k componentes e ainda assim cumprir suas especificações; Quanta redundância é necessária? 1 Falhas silenciosas : se k pararem sem propagar informações erradas, basta ter k +1 processos 2 Falhas bizantinas: é preciso um mínimo de 2k + 1 processadores para conseguir k-tolerância. Uma precondição impĺıcita relevante é que todas as requisições cheguem a todos os servidores na mesma ordem. Francisco Silva (UFMA/LSD) SD: Princípios e Algoritmos 24 de julho de 2013 10 / 19
Acordo em Sistemas com Falhas Em muitos casos, um grupo de processos deve chegar a um acordo: eleger um coordenador, decidir a validação de uma transação, etc. Objetivo: Todos os processos que não apresentam falhas devem chegar a um consenso sobre alguma questão, dentro de um número finito de etapas; Premissas diferentes sobre o sistema requerem soluções diferentes: se o atraso de comunicação é limitado ou não; se a entrega de mensagens é ordenada ou não; se a transmissão de mensagens é feita em unicast ou multicast. Francisco Silva (UFMA/LSD) SD: Princípios e Algoritmos 24 de julho de 2013 11 / 19
Problema dos Dois Exércitos Vamos considerar um caso simples: processos são perfeitos mas a comunicação pode perder mensagens; Um exército vermelho de 5000 homens está acampado em um vale. Dois exércitos azuis de 3000 homens cada estão acampados em colinas próximas; Se o exército azul conseguir coordenar o ataque será bem sucedido. Caso contrário será destruído; General Alexandre envia uma mensagem ao general Bonaparte contendo vamos atacar amanhã ao anoitecer ; O mensageiro entrega a mensagem e recebe uma outra contendo combinado ; Alexandre recebe a confirmação e prepara suas tropas; No dia seguinte, Alexandre percebe que se Bonaparte não tiver certeza que ele recebeu suas mensagem de confirmação poderá não atacar e decide enviar um mensageiro com uma mensagem de confirmação. Francisco Silva (UFMA/LSD) SD: Princípios e Algoritmos 24 de julho de 2013 12 / 19
Problema dos Dois Exércitos Novamente Bonaparte recebe a mensagem mas agora fica preocupado que se Alexandre não receber uma confirmação poderá não atacar; Esta situação se repetirá continuamente. Mesmo que se estabeleça uma quantidade finita de passos, ainda assim o último que enviar uma confirmação não terá certeza se sua mensagem foi entregue; Conclusão: mesmo que processos não falhem, a concordância entre dois processos é impossível caso a comunicação não seja confiável. Francisco Silva (UFMA/LSD) SD: Princípios e Algoritmos 24 de julho de 2013 13 / 19
Problema do Acordo Bizantino O exército vermelho continua acampado no vale mas agora existem n generais azuis com exércitos acampados na colinas; A comunicação é feita por telefone aos pares e é instantânea e perfeita; No entanto, m generais são traidores; Definição do problema: como obter consenso entre os componentes de um sistema distribuído que não falham onde componentes podem exibir falhas bizantinas, ou seja, um componente pode enviar valores diferentes a componentes diferentes para o mesmo dado? Francisco Silva (UFMA/LSD) SD: Princípios e Algoritmos 24 de julho de 2013 14 / 19
Problema do Acordo Bizantino: Lamport 1982 Premissas: processos síncronos (atrasos de mensagens e diferenças entre a velocidade relativa de processadores são limitados), mensagens unicast, ordenação preservada e o atraso de comunicação limitado; Sistema: N processos, onde cada processo i forneça um valor v i aos demais; Objetivo: Cada processo deve construir um vetor V de comprimento N tal que, se o processo i não for faltoso, V[i] = v i. Caso contrário, V[i] é indefinido. Francisco Silva (UFMA/LSD) SD: Princípios e Algoritmos 24 de julho de 2013 15 / 19
Passos do Algoritmo Lamport 82 1 Cada general envia uma mensagem a todos os demais generais anunciado suas forças; 2 Os resultados do passo 1 são coletados e mantidos em vetores; 3 Cada general passa seu vetor a todos os demais generais; 4 Cada general decide se existe para cada entrada no vetor maioria. Francisco Silva (UFMA/LSD) SD: Princípios e Algoritmos 24 de julho de 2013 16 / 19
Problema do Acordo Bizantino: Lamport 1982 Figura: Três generais leais e um traidor (a): generais anunciam suas forças (b): vetores de cada general baseados na informação do passo a (c): o vetor de cada general após o passo 3 Todos os generais concluem que as forças são: (1, 2, não sei, 4); Portanto, o traidor não conseguiu corromper a informação dos generais leais. Francisco Silva (UFMA/LSD) SD: Princípios e Algoritmos 24 de julho de 2013 17 / 19
Problema do Acordo Bizantino: Lamport 1982 Figura: Mesmo problema para dois generais leais e um traidor Francisco Silva (UFMA/LSD) SD: Princípios e Algoritmos 24 de julho de 2013 18 / 19
Problema do Acordo Bizantino: Lamport 1982 Neste caso, o algoritmo falha em produzir concordância; Lamport provou que em um sistema com k processos faltosos, a concordância somente poderá ser atingida caso 2k + 1 processos continuem operando normalmente de um total de 3k + 1 processos; Ou seja, são necessários mais de dois terços de processos operando corretamente; Fischer et al. em 1985 provou que em um sistema distribuído no qual mensagens não podem ser entregues em um tempo conhecido finito, não é possível atingir concordância mesmo que apenas um processo falhe (a não ser que falhem silenciosamente); A essência do problema está em como distinguir se um processo caiu ou está muito lento. Francisco Silva (UFMA/LSD) SD: Princípios e Algoritmos 24 de julho de 2013 19 / 19