Tolerância a Falhas
Carlos Oberdan Rolim
Ciência da Computação
Sistemas Distribuídos
Motivação
Técnicas de tolerância a falhas em sistemas distruídos são
muitas vezes insatisfatórias
Sistemas distribuídos tempo-real diferem dos sistemas
convencionais por apresentarem restrições de tempo e
tratarem, em muitos casos, com situações críticas.
Qualquer falha,inclusive temporal pode ter sérias
conseqüências
Necessidade de novas implementações passíveis de
implementação em vários níveis de software e hardware
precisam ser desenvolvidas e validadas quanto a correção e
temporização
Classificação das técnicas de tolerância a
falhas em camadas
Níveis - Jalote 94
Sistemas distribuídos
características de SD
modelo físico
modelo lógico
modelo de falhas
comunicação entre processos
ordenação de eventos
clock lógico
Sistemas distribuídos
Sistemas distribuídos se diferenciam dos demais
computadores pelo acoplamento fraco entre os
processadores, ou seja, os computadores não tem
acesso a uma memória comum. Toda a interação deve
ser realizada por troca de mensagens através de canais
de comunicação
Apresentam um problema intrínseco: o de garantir a
integridade e consistência dos dados distribuídos pelos
vários processadores
Sistemas distribuídos
sem memória compartilhada
sem relógio global
modelos
modelo físico
processador
relógio local
memória local volátil
armazenamento não volátil
interface de rede
software
nodos e rede
modelo lógico
Processos e canais
Sistemas distribuídos: modelos
Sistemas distribuídos: modelos
Modelo físico
Comunicação: topologias ponto a ponto
Topologia barramento
bus, barra ou via
Modelo lógico...
cada processo pode estar
em um nodo diferente
aplicação distribuída
conjunto de processos concorrentes
processos cooperam para realizar uma computação
cada processo é seqüencial
todos os processos avançam na execução
progresso finito
nada pode ser dito sobre velocidades relativas entre os processos
Modelo lógico...
Rede completamente conectada
topologia não é considerada
Processos e canais
existe um canal entre quaisquer dois processos que interagem
canais com buffer infinito e livres de erros
canais entregam mensagens na ordem que foram enviadas (ordem
preservada no canal)
carac. não necessariamente válidas para o meio físico
Modelo lógico...
ordenação de mensagens
ordem das mensagens é preservada em um canal
nada é estabelecido sobre mensagens que chegam a um nodo vindos de
diferentes canais
não existe ordenação total de mensagens, apenas ordenação parcial
razão: retardos nos canais (delay)
Canal
Canais entre múltiplos processos
Sistemas síncronos e assíncronos
definidos pela existência de limites de tempo
sistema síncrono
bounded-time model
existe um limite de tempo finito e conhecido
sistema correto opera dentro desse limite
sistema assíncrono
time-free model
não existe um limite de tempo
impossível determinar se o sistema está simplesmente atrasado por
sobrecarga ou se está com defeito
Limites de tempo
canal de comunicação síncrono
retardo (delay) máximo é conhecido
processador síncrono
tempo de execução de um conjunto de instruções é conhecido e limitado
existem limites de tempo que podem ser estabelecidos para
determinar a conclusão de uma atividade
tais suposições precisam ser justificadas e provadas sistemas operacionais convencionais e processadores
convencionais não apresentam esses limites
Vantagem do modelo síncrono
detecção de falha
falha de um componente do sistema pode ser deduzida pela
ausência de resposta
time-out
usado para detectar defeitos em
nodos e perda de mensagens
se um nodo não responde após certo intervalo de tempo
sistema síncrono - nodo com defeito
sistema assíncrono - nada se pode afirmar
Vantagem do modelo assíncrono
algoritmos desenvolvidos para esse modelo são mais
“genéricos” e portáveis
independem de sistema operacional
independem de rede
na prática os sistemas são geralmente assíncronos
mas assume-se que são síncronos
time-outs superdimensionados
aplicações não são críticas e colapsos podem ser ignorados
Timed asynchronous
assíncrono temporizado
modelo intermediário
assume que processos possuem clocks locais com valores próximos ao tempo real
monitora tempo de transmissão e recepção de mensagens e computa
limites de pior-caso
enquanto o sistema se comporta dentro desses limites
é considerado síncrono
períodos de operação no qual o comportamento não pode ser
garantido síncrono são tratados de forma especial
modelo ideal
para fail-safe
Modelo de falhas
crash
mais restritiva de todas as classes
uma falha que causa a parada de um componente ou a perda do seu
estado interno
omissão
um componente não responde a determinadas entradas
engloba crash
temporização
também chamada falha
de desempenho
o componente responde ou muito cedo ou muito tarde
engloba omissão
Modelo de falhas
resposta
computação incorreta, o componente produz respostas incorretas para
algumas entradas
considerada caso
não engloba as anteriores
especial de bizantinas
bizantinas (arbitrárias ou maliciosas)
falha arbitrária que provoca um comportamento totalmente arbitrário e
imprevisível do componente durante o defeito
engloba todas as classes de falhas
Modelo de falhas
Exemplos
Processador:
crash ou bizantinas
Rede de comunicação: todos os tipos
Clock:
temporização ou bizantinas
Meio de armazenamento
temporização, omissão ou resposta
Software: resposta
Classificação de falhas
Fred B. Schneider
mais restritiva que crash, o
estado interno não é perdido
failstop
crash
crash + link
omissão de recepção
omissão de envio
omissão geral
comportamento bizantino
várias classificações
diferentes na literatura,
mas que não diferem
muito das de Christian
e Schneider
Particionamento
particionamento é falha?
um grupo de processos é dividido em subgrupos sem
comunicação entre si
operação normal
computação móvel (por exemplo)
defeitos dos componentes do sistema
crashs de processos
sobrecargas de nodos
problemas na rede
comum em WANs
modelos síncrono e assíncrono excluem particionamento
melhor tratado no modelo timed asynchronous
Comunicação entre processos
troca de mensagens
SEND e RECEIVE
vamos usar apenas
troca de mensagens
primitivas de comunicação e sincronização
RPC (remote procedure call)
mais alto nível que SEND e RECEIVE
interação cliente / servidor
invocação remota de métodos
orientação a
objetos
Comunicação entre processos
troca de mensagens
assíncrona
síncrona (sem buffer - CSP)
troca de mensagens assíncrona
buffer infinito
transmissor nunca bloqueia
buffered message passing
buffer finito
opera assincronamente até buffer ficar cheio
Comunicação entre processos
RPC
call service (value_args, result_args)
comunicação síncrona
falhas executando RPC
órfãos
execuções indesejadas de procedimento remoto, ocasionada
por defeito durante invocação
ordem de chamadas
Orientação a objetos
modelo orientado a objetos
outro paradigma de comunicação de alto nível
atualmente muito popular
um processo executa um método em um objeto particular
objeto pode residir em qualquer nodo
processo envia mensagem ao objeto
objeto executa uma ação e retorna resultado
Ordenação de eventos
dificuldade de determinar relações temporais
RAZÃO: inexistência de clock global
problema
determinar ordenação temporal de eventos que ocorrem em nodos
diferentes, medidos por relógios diferentes
global time
físico (sincronização de relógios) ou lógico
Ordenação parcial de eventos
relação: a “aconteceu antes de” b : a → b
ordem parcial
se a e b são eventos do mesmo processo e a é
executado antes de b então a → b
se a é send e b é receive da mesma mensagem
então a → b
a → b e b → c então a → c
eventos concorrentes: nem a → b, nem b → a
Clocks lógicos
relógios lógicos
Lamport (78)
meio de assinalar um número a um evento
nenhuma relação com o tempo físico
sistema de clock lógico
Ci - clock local ao proc Pi, C - sistema de clock
um sistema de clock lógico é correto se é consistente com a
relação →
para quaisquer eventos a e b,
se a → b então C(a) < C(b)
Clocks lógicos
clock lógico
a maior parte dos problemas de ordenação
podem ser resolvidos com clocks lógicos, sem
necessidade de relógios físicos sincronizados
carimba um evento de forma que a relação de ordem parcial é
mantida
pode ser facilmente implementado
usando contadores
numerando mensagens com numeração crescente
exemplo de implementação: timestamp T
Timestamps
Pi inclui seu timestamp nas mensagens m que
envia
Tm: timestamp da mensagem m
2 condições:
Ci - clock local ao processo Pi
cada Pi incrementa Ci entre 2 eventos sucessivos
recebendo mensagem m com Tm , Pj torna Cj maior ou igual ao
seu valor atual e maior que Tm
Timestamps
as 2 condições asseguram realização da ordem parcial
implementação:
um contador por nodo é suficiente
impossível assinalar timestamps consistentes com a relação de ordem
parcial puramente usando relógios Físicos
clocks físicos precisariam ser sincronizados para assegurar a relação de
ordem parcial
Ordenação total com clock lógico
relógio lógico pode ser usado para ordenação
total (Lamport 78)
mensagens de diferentes processos podem possuir o mesmo
timestamp
se duas mensagems possuem o mesmo timestamp devem ter
sido originadas em diferentes processos
para estabelecer uma ordem, basta ordenar os processos de
alguma forma
a mesma forma de ordenação deve ser
seguida por todos os processos
Ordenação total
uma implementação possível
eventos com mesmo timestamp são ordenados pela ordem
lexicográfica dos nomes dos processos
preserva a relação de ordem parcial →
todos os nodos classificam os eventos na mesma ordem,
não assegura preservação de ordem temporal dos eventos
concorrentes
se a ordem temporal for importante, clocks
lógicos não podem ser empregados
Exemplo
Download

Tolerância a Falhas