Sistemas Distribuídos
Francisco Brasileiro
Aula 2: Modelos de Sistemas Distribuídos
As figuras que aparecem nesses slides são de Veríssimo&Rodrigues, reproduzidas com o
consentimento dos mesmos.
Como aumentar a nossa intuição
para resolver problemas?
• Experimentação
– abordagem prática baseada no acúmulo de informação
– pode ser usada para construir coisas similares a outras
já construídas
• Modelagem e análise
– abordagem teórica baseada na simplificação do objeto
de estudo (“mundo real”) = criação do modelo
– seguida de análise - matemática ou lógica - para inferir
propriedades
• Modelagem e simulação
– criação do modelo
– simulação do modelo no computador
Trade-offs
• modelagem oferece mais “controle” sobre a
intuição adquirida
• modelagem só é útil se o modelo caracteriza o
objeto de estudo de forma apropriada
• simulação é mais poderosa e menos genérica que
análise
• experimentação é muito importante para validar
modelos
Simulação
• Alternativa à experimentação
– Mais próximo do sistema real, com um custo
muito menor que o sistema real
• Alternativa à analise
– Permite analisar situações que não podem ser
modeladas de forma tratável/representativa
• Precisa ser validada
– Testes automáticos são fundamentais para se
reduzir a chance de bugs
O que é um bom modelo?
• Preciso
– a análise do modelo deve levar a conclusões
verdadeiras sobre o objeto de estudo
• Tratável
– um modelo que não permite a execução de
uma análise ou simulação é inútil
– em um modelo tratável, as regras que
governam o comportamento dos atributos do
modelo são normalmente definidas através de
fórmulas matemáticas ou lógicas
Que respostas um bom modelo
pode dar?
• Viabilidade
– Que classes de problemas podem ser resolvidos
• Custo
– Para as classes que podem ser resolvidas, quão cara
(em termos de recursos, tempo de processamento, etc.)
uma solução precisa ser
• Perfomance
– Como uma solução se compara com outra
• As respostas têm valor prático e teórico
Modelos para sistemas
distribuídos: um exemplo
• O problema da coordenação
– Dois processos, A e B, se comunicam através
de troca de mensagens. Nenhum processo
falha, mas o canal de comunicação pode perder
mensagens. Construa um protocolo que
permita que ou a ação a ou a ação b possa
ocorrer, mas (i) A e B executam a mesma ação,
e (ii) nenhum executa ambas as ações.
Prova de impossibilidade
• suponha que existe um protocolo que resolve o problema
• tal protocolo envolve troca de mensagens entre A e B
• vamos escolher o protocolo que resolve o problema com o
número mínimo de trocas de mensagens (i.e. não existe
um protocolo que use menos mensagens) e, sem perda de
generalidade, assumir que m, a última mensagem enviada
no protocolo, foi enviada por A
• mas m poderia ter sido perdida!!!
• as ações tomadas por A e B não dependem de m, portanto
m é supérflua e é possível construir um protocolo com uma
mensagem a menos; uma contradição!
Vamos entender melhor o que
fizemos
• Nós concluímos que o Problema da Coordenação
não tem solução para o modelo definido usando
duas observações:
– todos os protocolos distribuídos entrem os dois
processos são equivalentes a uma série de trocas de
mensagens; e
– ações tomadas por um processo dependem apenas da
seqüência de mensagens recebidas.
• A partir desse modelo, nossa “intuição” sobre o
problema pode ser refinada
Quais são os atributos mais
importantes de um sistema
distribuído?
• Atrasos no escalonamento e na transmissão
de mensagens
– síncronos x assíncronos
• Semântica de falha dos componentes
– crash
– omissão
– desempenho
– valor
– arbitrária (Bizantina)
Sistemas distribuídos
assíncronos
• Nenhuma restrição em relação aos atrasos de
escalonamento e de transmissão de mensagens
• Falhas arbitrárias
• Resultado de impossibilidade de Fischer, Lynch e
Patterson (FLP, FLP85)
– Não há como obter acordo, mesmo que só um
processo falhe e mesmo que a semântica seja crash
– Esse modelo assíncrono serve para alguma coisa?
Modelo síncrono
• Características do modelo
– Atrasos máximos conhecidos para
escalonamento (s), para transmissão de
mensagens (d) e drift dos relógios locais (r)
• Sistemas construídos assumindo esse
modelo são:
– menos portáveis
– potencialmente menos seguros
Modelos parcialmente
assíncronos
• Assumem que há algum sincronismo no sistema
• Duas “escolas” principais
– Sincronismo no tempo
• Sistemas que não são sempre assíncronos
• Ex. timed asynchronous model (Fetzer&Cristian), quasesynchronous (Veríssimo&Almeida)
– Sincronismo no espaço
• Sistemas que não são completamente assíncronos
• Ex. timely computing base (Veríssimo&Casimiro&Fetzer),
GMDC (Fubica&Ely&Andrey), detectores de falha
(Chandra&Toueg)
Encapsulando Sincronismo:
Detectores de falhas
• Exatidão do detector: que erros podem acontecer
– Forte: Nenhum processo correto é considerado falho
– Fraca: Pelo menos um processo correto nunca é
considerado falho
• Abrangência do detector: que falhas são
detectadas
– Forte: Uma falha é detectada por todos os processos
– Fraca: Uma falha é detectada por pelo menos um
processo
• Eventualidade
– Condição só se aplica depois de um certo tempo
Classes de Detectores de Falha
• O detector perfeito só pode ser
implementado em um sistema síncrono!!
• Mas vários problemas podem ser resolvidos
se o sistema assíncrono for complementado
por detectores de falha imperfeitos!!
– Em particular S é de grande interesse prático
Como escolher um modelo?
• Características do ambiente de execução
– Tipos dos componentes
– Qualidade dos componentes
– Controle sobre o ambiente
• Requisitos da aplicação
– Aplicações críticas
Download

Aplicações Distribuídas - Francisco "Fubica" Vilar Brasileiro