Modelos de Sistemas
Distribuídos
Andrey Brito, Lívia Sampaio Campos Sistemas Distribuídos – 2012.3
Plano de aula
• Motivação
• Um modelo de sistema distribuído
• Tipos de modelo
– Modelo arquitetural: cliente-servidor e variações, p2p
– Modelos fundamentais: interação, falhas, segurança
Motivação
• O que são modelos?
– Descrição abstrata e simplificada do mundo real
• Um bom modelo deve ser...
– Preciso
• Quão verdadeiro ele é
– Tratável
• Passível de análise
• Usar algum formalismo (matemático ou lógico) para representar os atributos do modelo
Motivação
• Um bom modelo serve para...
– Viabilidade: resultados de possibilidade e impossibilidade
– Custo: quão cara uma solução pode ser
Um modelo de sistema distribuído
• Um sistema distribuído consiste de um conjunto de processos em diferentes computadores que estão conectados através de uma rede de comunicação seguindo uma organização cliente-servidor. A rede provê facilidades para a troca de mensagens entre os processos, sendo assíncrona. Não há relógio global. Não há memória global. Mensagens podem ser
entregues fora de ordem. Podem ocorrer falhas na
rede (links quebrados, mensagens perdidas/duplicadas ou corrompidas) e nos processos. O sistema pode ser modelado como um grafo direcionado onde os vértices são processos e os arcos são os canais unidirecionais de comunicação.
Tipos de modelos
• Arquitetural
– Foco nos componentes, como se relacionam, como serão mapeados na rede
• Cliente-servidor, p2p (par-a-par, entre pares)
• Fundamental
– Foco em propriedades fundamentais (comuns em qualquer arquitetura
Modelo arquitetural: cliente-servidor
• Definição
– Papéis assimétricos: cliente (consumidor) e servidor (provedor)
• Exemplos
– Web, banco de dados, sistema de arquivos
• Características
– Simplicidade de gerência e manutenção
• Dificuldades
– Centralização (sobrecarga do servidor), escala, ponto único de falhas
C
C
C
Cliente-servidor em 3 camadas
• Resolvendo o problema do cliente “gordo”
• Muito comum para aplicações web
Cliente-servidor em 3 camadas:
exemplo
• Serviço de comércio eletrônico
Cliente-servidor com código móvel
• Versão intermediária entre o cliente “fino” e o
cliente “gordo”
– Responsabilidades de processamento para o cliente
• Ambientes Java provêm suporte para código
móvel via applets em páginas web
Cliente-servidor com dispositivos
móveis
• Hardware+software se movem na rede entre
diferentes localizações
– Mobilidade de dispositivos: celulares, laptops, tablets
• Podem encapsular clientes* ou servidores
• Atenção para...
– Transparência de mobilidade – Conectividade variável
Modelo arquitetural: p2p
• Definição
– Papéis simétricos entre os participantes: “pares”
– Participantes autônomos
• Características
– Escala, ausência de visão global, descentralização, robustez
• Exemplos
– Kazaa (compartilhamento de arquivos), bittorrent (download colaborativo), set@home (computação voluntária), skype (voip)
P
P
Modelo arquitetural: p2p
• Dificuldades:
– Descoberta de recursos sem ter uma visão global do sistema
– Segurança (participantes não confiáveis) – Escala (carga dos participantes)
Modelos fundamentais: interação
• Através da interação entre os processos de um
programa distribuído é que a computação
progride
– Algumas notações
• Quais fatores afetam a interação:
– Atrasos na comunicação e processamento – Ausência de tempo global
Modelos fundamentais: notações
• Um programa distribuído consiste de
– M processos (p1, p2, ..., pm) que executam sobre N processadores
– Processadores são conectados por canais de comunicação
• A execução de um processo equivale à execução sequencial de eventos atômicos
– Eventos internos ou externos (send/receive) – Considere ex
i o evento x do processo pi
– A ocorrência de um evento modifica o estado do processo correspondente ou da rede
– Hi = (hi, →i) descreve a execução de um processo pi como uma sequência de eventos (hi) organizados a partir de uma relação de precedência (→i)
Modelos de interação: Síncrono
• Certeza na comunicação– Atrasos limitados e conhecidos para atrasos na comunicação
velocidade de processamento e transmissão de mensagens) e drift dos relógios locais
• Benefícios
– Implementação de sistemas baseados em temporizadores ou outra abordagem dependente de tempo
• Desvantagens
– Dificuldade para garantir certeza na comunicação: sincronismo do ambiente ou pior cenário de carga das aplicações são imprevisíveis – Pouco portáveis
Modelos de interação: Assíncrono
• Incerteza na comunicação– Nenhuma restrição sobre os atrasos na comunicação • Benefícios
– Maior portabilidade; semântica simples
– Um sistema distribuído é normalmente assíncrono! • Desvantagens
– Não é possível distinguir entre processos falhos ou lentos
– Impossibilidade de resolver problemas importantes • Ex. consenso [FLP85]
Modelos de interação: Parcialmente
Assíncronos
• Parcialmente assíncrono = assíncrono + alguma noção de sincronismo
– Objetivo é contornar resultados de impossibilidade
• Duas “escolas” principais
– Sistemas que não são sempre assíncronos
• Suposição: existem períodos onde a detecção de falhas é confiável • Ex. modelo assíncrono com detectores de falhas não-confiáveis
[CT96]
– Sistemas que não são completamente assíncronos
• Suposição: existem limites para algumas propriedades (atrasos na transmissão de mensagens ou escalonamento ou sincronização de relógios)
Modelos fundamentais: falhas
Para assegurar o correto funcionamento de um sistema é preciso compreender porque e como elefalha.
• Falhas por omissão (benignas)
– O sistema deixa de realizar ações esperadas – Processos falham por parada
– Processos fail-stop
Modelos fundamentais: falhas
• Falhas de temporização (benignas)
– O sistema deixa de realizar ações dentro do tempo esperado
– Aplicável a sistemas síncronos
Modelos fundamentais: falhas
• Falhas por valor (benignas)
– O sistema deixa de realizar alguma ação da maneira esperada
– Resultados incorretos pela construção ou significado
Modelos fundamentais: falhas
• Falhas arbitrárias (maliciosa, Bizantina)
– Qualquer tipo de falha pode ocorrer
– Processos falham gerando valores inesperados ou parando
– A rede falha...
• corrompendo mensagens
• gerando mensagens inesperadas ou • duplicando mensagens
Modelos fundamentais: hierarquia de
falhas
Nível de restrição parada omissão valor temporização arbitráriaModelos fundamentais: segurança
Para assegurar o correto funcionamento de um sistemaé preciso compreender porque e como ele torna-se inseguro.
– Insegurança é causada por ataques realizados por atacantes explorando vulnerabilidades do sistema de forma maliciosa.
Modelos fundamentais: segurança
• Modelo de segurança implica em conhecer às
ameaças ao sistema (recursos computacionais
e de comunicação além da informação):
– Uso de recursos de forma não autorizada
– Mal funcionamento dos serviços providos pelos recursos
– Uso da informação de forma não autorizada – Modificação da informação de forma não
Modelos fundamentais: segurança
• Propriedades de segurança e como garanti-las
– Confidencialidade
• Proteger o sistema dos “olhos” dos atacantes • Como? Encryption
– Integridade
• Proteger o sistema de modificações impróprias • Como? Controle de acesso
– Autenticidade
• Proteger o sistema de forjamentos • Como? Assinatura digital
– Disponibilidade
• Proteger o sistema de interrupções no seu funcionamento • Como? Controle de acesso, redundância
Criptografia: paradigma fundamental
para segurança
• Criptografia consiste de:
– Encryption: algoritmo de criptografia + chave(s) • Entrada: dado original (plaintext)
• Saída: dado criptografado (ciphertext) – Decryption: processo reverso
• Criptografia de chave privada (simétrica)
– Usa a mesma chave para os processos de encryption e
decryption
• Criptografia de chave pública (assimétrica)
• Importância das chaves na criptografia
Referências
• [FLP85]
– Impossibility of Distributed Consensus with One Faulty Process
• [CT96]
– Unreliable Failure Detectors for Reliable Distributed Systems
• [CF98]
– The Timed Asynchronous System Model
• [VA95]
– Quase-synchronism: a step away from the traditional fault-tolerant real-time system models