Sistemas Distribuídos
Carlos Oberdan Rolim
Ciência da Computação
Sistemas de Informação
Metas de projeto
[C2,C3,T1.5]
Propriedades críticas de um SD
Desafios na construção de um SD
Heterogeneidade
Transparência
Flexibilidade
Confiabilidade
Desempenho
Escalabilidade
Mobildade
Heterogeneidade
Diferentes formas de representação de mesmo dado
em diferentes computadores
Ex. Estrutura com bit mais significativos em um e bit menos
significativos em outro
Necessidade de usar mesma representação de tipos
primitivos e de estruturas de dados na troca de
mensagens
Solução uso de middleware
Migração de código ou código móvel
Ex.: Máquinas virtuais / Applets Java
Transparência a paralelismo
Lembrando do conceito de transparência
Esconder do usuário e do programador de aplicações a
separação de componentes em um sistema distribuído, tal que
este seja visto como um sistema centralizado
Paralelismo: divisão de uma tarefa em sub-tarefas
coordenadas e que são executadas simultaneamente
em processadores distintos
Compilador, ambiente de execução e sistema
operacional devem saber tirar vantagem do potencial
paralelismo de um sistema distribuído sem mesmo que
o programador saiba disso
Flexibilidade
Modelos de estrutura de SD:
Núcleo monolítico: inclui gerenciamento de arquivos,
diretórios e processos
Micro-núcleo:
mecanismo para comunicação entre processos
gerenciamento básico de memória
gerenciamento de processos a baixo nível
operações de entrada/saído a baixo nível
Vantagens do micro-núcleo
Modularidade => Flexibilidade
serviços estão disponíveis a todos os clientes,
independentemente de localização
serviços podem ser reparados sem causar parada
total do sistema
os próprios usuários podem adicionar novos serviços
Confiabilidade
Em teoria, como medir?
Aspectos:
disponibilidade: fração do tempo em que o sistema
pode ser usado
exatidão: replicação versus consistência
segurança: Como um servidor pode verificar a origem
de uma mensagem?
tolerância a falhas: replicação versus desempenho
Desempenho
Métodos de medição:
tempo de resposta
número de tarefas por hora
taxa de utilização do sistema
taxa de utilização da rede
Fator crítico em SD: troca de mensagens
Granularidade de computação paralela
Escalabilidade
Sistema é dito escalável se permanece
eficiente quando há um aumento significativo do
número de recursos e de usuários
Evitar:
componentes centralizados (ex: um único servidor de
correio eletrônico para todos os usuários)
tabelas centralizadas (ex: uma única lista telefônica
on-line)
algoritmos centralizados (ex: roteamento baseado em
informação completa)
Mobilidade
Diferentes dispositivos móveis como
smartphones, laptops, tablets
Conectividade fornecida por protocolos Internet
Protocolos Internet desenvolvido para
ambientes fixos
Problemas de intermitência e mobilidade
Endereçamento
Roteamento
Algoritmos Distribuídos
Nenhuma máquina conhece o estado global
Decisões são baseadas somente em informação local
A parada de uma máquina não arruína o algoritmo
Não há qualquer suposição quanto a existência de
tempo (relógio) global
Elementos básicos de um SD
Sistema de nomes
Comunicação
Estrutura de software
Alocação de carga de trabalho
Manutenção de consistência
Sistema de nomes
Nomes permitem que recursos sejam compartilhados
Nomes de recursos devem ser independentes de sua
localização
O esquema de nomes deve escalar bem
Um sistema de interpretação de nomes deve ser
acessível por programa
Comunicação
O sucesso de um SD depende muito do
desempenho/confiabilidade das técnicas de
comunicação usadas em sua implementação
Dilema: otimizar implementação da comunicação e
prover alto nível do modelo de programação dessa
comunicação
Estrutura de software
Extensibilidade requer componentes de software com
interfaces bem definidas
Um serviço é um gerenciador de objetos de um certo
tipo e sua interface é um conjunto de operações
Novos serviços devem interoperar com serviços
existentes e não duplicar suas funções
Alocação de carga de trabalho
Otimização do uso de:
capacidade de processamento
capacidade de comunicação
recursos da rede em geral
Objetivo: bom desempenho
Manutenção de consistência
Consistência de atualização: atomicidade como meio de
atualização instantânea de muitos elementos
Consistência de replicação: cópias de um mesmo
recurso devem ser “idênticas”
Consistência de cache: modificações em um cliente
devem ser propagadas ao gerenciador e aos demais
clientes
Manutenção de consistência
(continuação)
Consistência de falha: deve-se evitar falhas múltiplas
(em cascata); isolamento de falhas
Consistência de relógio: relógios físicos (sincronização
aproximada) e relógios lógicos (timestampings em
mensagens)
Consistência de interface de usuário: atrasos devido a
comunicação podem causar visão inconsistente de
aplicações gráficas
Requisitos no nível do usuário
Funcionalidade: Que serviços esperar de um SD?
Como migrar aplicações de um SC para um SD ?
adaptar SO ?
adaptar applicação?
emulação de SO antigo?
Reconfigurabilidade: substituição de máquinas que
falham, rearranjo de carga, transferência de atividades
e dados para minimizar comunicação
Requisitos no nível do usuário
(continuação)
Qualidade de serviço:
desempenho
confiabilidade e disponibilidade
segurança
Download

Sistemas Distribuídos