210 likes | 303 Views
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.
E N D
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