280 likes | 399 Vues
Uma Introdução a Detectores de Defeitos para Sistemas Assíncronos. Élder Bernardi. Roteiro. Introdução Sistemas síncronos e assíncronos Failure Detectors (FDs) Problemas que demandam FDs e suas soluções Consenso Non-blocking Atomic Commit Quiescent Communication Considerações finais.
E N D
Uma Introdução a Detectores de Defeitos para Sistemas Assíncronos Élder Bernardi
Roteiro • Introdução • Sistemas síncronos e assíncronos • Failure Detectors (FDs) • Problemas que demandam FDs e suas soluções • Consenso • Non-blocking Atomic Commit • Quiescent Communication • Considerações finais
Introdução - Sistemas Assíncronos • Em sistemas assíncronos, não existe um limite de tempo para que um processo execute uma determinada tarefa, ou para que uma mensagem seja enviada ou recebida dentro de um certo tempo. • A combinação entre defeito de processos e sistemas assíncronos cria um contexto no qual um processo não sabe se outro processo falhou ou não.
Introdução - Exemplo • Seja p e q dois processos assíncronos que se comunicam, para o processo p, o problema está em saber o processo q falhou ou não: • Processo p pode parar esperando uma mensagem de q, entretanto esta mensagem não chegará pois o processo q parou. • Caso p pense que o processo q parou, no entanto o problema foi apenas a demora no envio da mensagem pela rede.
Introdução - Sistemas Síncronos • Em sistemas síncronos, é relativamente simples a detecção de um defeito de um determinado processo. • Se o processo p pára em um instante t, então em um instante (t + timeout) todos os processos saberão que p parou.
p DFp Lista de suspeitos q DFq Introdução - Solução • Pergunte a um oráculo!!! rede q q r q
Introdução – Detectores de Defeitos • Um Failure Detector (FD) é um oráculo que tenta adivinhar o status operacional de outros processos. • No entanto, • Estas dicas podem ser incorretas. • O oráculo pode “mudar de opinião” sobre o status operacional de um processo. • Protocolos de detecção de defeitos devem existir!!
Propriedades de um FD • Completude (Completeness) • Precisão (Accuracy)
Classificação quanto a completude • Forte: Qualquer processo falho em algum momento é suspeitado permanentemente por todos os processos corretos. • Fraca: Qualquer processo falho em algum momento é suspeitado permanentemente por algum processo correto.
Classificação quanto a precisão • Forte: Qualquer processo correto nunca é apontado suspeito de falha por algum outro processo • Fraca: Algum processo correto nunca é suspeito de falha • Event Forte: Depois de certo tempo, qualquer processo correto não é apontado (suspeito) de falha por algum outro processo. • Event Fraco: Depois de certo tempo, algum processo correto não será suspeito por algum outro processo.
Questões sobre implementação • Devem ser tão simples quanto a necessidade da aplicação • Evitar overhead, funções desnecessárias. • Recomenda-se que seja um sub-sistema síncrono que NÃO interfera e nem possa ser acessado diretamente pelo sistema principal. • Funciona como um oráculo somente.
Modelos de Sistemas Assíncronos Abordados • FLP - processos propensos a defeitos e links de comunicação confiáveis • FLL – processos propensos a defeitos e links de comunicação não confiáveis
Problemas abordados pelo artigo • Problema do Concenso • Efetivação Atômica Não Bloqueante • Comunicação inerte
Problema do Consenso • Considera um cenário FLP • Permite que vários processos atinjam decisões em comum. • cada processo Pi propõe um único valor vi. • todos os processos interagem para a troca de valores. • em algum momento, os processos entram no estado “decidido” em que atribuem um valor para a variável de decisão di (que não é mais alterada)
Impossibilidade • A impossibilidade de consenso em sistemas assíncronos com defeitos foi apresentada em 1985 por Fischer. • Devido às incertezas no envio e na entrega das mensagens, é impossível distinguir entre um processo que falhou ou um que está muito lento.
Resolução do Problema do Consenso • O problema da impossibilidade da resolução do consenso em sistemas assíncronos com defeitos foi resolvido através da utilização de detectores de defeitos. • Cada processo do grupo terá associado a ele um detector de defeitos, que irá informar se um determinado processo está ou não com defeito.
Classificação do Algoritmo • Classe S • Abrangência Forte: Em algum momento, todos os processos falhos serão considerados suspeitos por todos os processos corretos. • Exatidão fraca eventual: Depois de um certo tempo, o detector garante a exatidão fraca.
Resolução do consenso • Para chegar-se ao consenso, o algoritmo é executado por um número indefinido de rodadas, onde em cada rodada um dos N processos faz o papel do coordenador. • Cada processo decide o seu valor vi e envia para o coordenador. • O coordenador verifica o valor que mais se repetiu e atribui a uma variável g. • Em cada processo Pi pode acontecer: • Recebe do coordenador o valor g -> adota como seu novo valor e retorna um ack para o coordenador. • Ou o DF de Pi suspeita que o coordenador falhou, e manda um nack para C. • O algoritmo termina quando o coordenador recebe (n+1)/2 acks. Então, ele faz um multicast confiável para os processos informando o novo valor.
Efetivação Atômica não Bloqueante • Problema típico de banco de dados para garantir a propriedade de atomicidade; • Um dos mais antigos problemas conhecidos na computação distribuída
NBAC - Funcionamento • É iniciado ao fim de uma computação distribuída (uma transação) com o objetivo de coletar a intenção de cada participante em validar (votar sim) ou anular (votar não) um conjunto de ações já realizadas. • O resultado da transação depende dos votos coletados: • COMMIT - A transação é validada se tudo correr bem; • ABORT - Se pelo menos um processo vota em não.
NBAC - Propriedades • NBAC_Terminação: Todos os processos corretos eventualmentem decidem; • NBAC_Integridade: Um processo decide no máximo uma vez; • NBAC_Acordo_Uniforme: Dois processos não decidem diferentemente; • NBAC_Validade: A Decisão é COMMIT ou ABORT, salvo: • NBAC_Justificativa: Se um processo decide COMMIT é porque todo mundo votou SIM • NBAC_Obrigação: Se todos votaram Sim e não existem falhas então a decisão é COMMIT
NBAC – Resultados Teóricos • Problema NBAC não tem solução num modelo assíncrono FLP, mesmo se ele é estendido com detectores de defeitos. • Na verdade, é mais difícil de resolver que o problema do concenso • Mesmo parecendo similares o concenso aceita qualquer valor proposto como valor de decisão, a confirmação atômica tem restrição quanto ao valor a ser decidido, em especial, caso não ocorram falhas, a decisão deverá ser necessáriamente COMMIT.
FD para NBAC • Transformar num problema de consenso
Comunicação inerte (Quiescent Communication) • Considera-se dois processos Pi e Pj: • Ambos não entram em crash • Porém estão num modelo FLL • O problema encontra-se na camada de comunicação • Solução: Construir uma camada de comunicação confiável sobre uma não confiável • Implementar FLP sobre FLL
Solução • Implementar mecanismos de retransmissão e acknowledgement através de um FD • Porém tal FD não pode ser implementado sobre um sistema FLL • Protocolo Heartbeat FD implementa uma camada FLD
Considerações Finais • Detectores de Falha permitem que problemas sem solução em caso de falha de um processo passam a ser solúveis • Designados para sistemas assíncronos • Funcionam como módulos auxiliares • Em sistemas síncronos: • Permitem a diminuição da complexidade do tempo de espera ao limite mais baixo possível.