Sistemas Distribuídos Prof. Eriko Werbet [email protected] Introdução aos Sistemas Distribuídos Capítulo 1 – Aula 1 Introdução aos Sistemas Distribuídos Material baseado no livro Distributed Systems: Principles and Paradigms Prentice Hall Copyright © Andrew S. Tanembaum, Maarten van Steen, 2001 Sistemas Distribuídos – Capítulo 1 – Introdução aos Sistemas Distribuídos Introdução Computadores de grande porte (1945) Desenvolvimento de microprocessadores (1980) Sistemas Distribuídos – Capítulo 1 – Introdução aos Sistemas Distribuídos Redes de Computadores Definição de Sistemas Distribuídos (1) Algumas definições encontradas na literatura: • • • • Um sistema composto por processadores que se comunicam através de várias linhas de comunicação como barramentos de alta velocidade ou linhas telefônicas. Cada processador possui sua memória local particular, inacessível aos outros processadores [Peterson 85] Um conjunto de elementos de computação que cooperam entre si através da troca de informações [Lages 86] Um sistema executando em uma coleção de computadores sem memória compartilhada, e que é percebido por seus usuários como um único computador [Tanenbaum 92] Um sistema no qual componentes de hardware e/ou software, localizados em diferentes computadores conectados em rede, se comunicam e coordenam suas ações apenas através da troca de mensagens [Coulouris et al. 01] Sistemas Distribuídos – Capítulo 1 – Introdução aos Sistemas Distribuídos Definição de Sistemas Distribuídos (2) Um Sistema distribuído é: • “Uma coleção de computadores independentes que parecem aos usuários como um único computador” [Tanenbaum &van Steen 01] Sistemas Distribuídos – Capítulo 1 – Introdução aos Sistemas Distribuídos Definição de Sistemas Distribuídos (3) Características chaves • As diferenças entre os vários computadores que • • • compõem o SD e o modo como eles se comunicam não são visíveis aos usuários Usuários e aplicações podem interagir com o sistema distribuído de forma consistente e uniforme, independente de onde e como interações acontecem Sistema modular e escalável Continuamente disponível Sistemas Distribuídos – Capítulo 1 – Introdução aos Sistemas Distribuídos Definição de Sistemas Distribuídos (4) 1.1 Um sistema distribuído organizado como middleware. Observe que a camada de middleware se estende por múltiplos computadores. Sistemas Distribuídos – Capítulo 1 – Introdução aos Sistemas Distribuídos Exemplo de Sistemas Distribuídos Conjunto de processadores alocados dinamicamente Sistema de arquivos único Balanceamento de carga para execução de comandos O sistema como um todo é visto e age como um único sistema de tempo compartilhado clássico. Sistemas Distribuídos – Capítulo 1 – Introdução aos Sistemas Distribuídos Objetivos de um Sistema Distribuído Conectar usuários e recursos Transparência Flexibilidade Escalabilidade • Recursos podem ser qualquer coisa • Necessidade de aumento de segurança • Aumento de comunicação indesejada Sistemas Distribuídos – Capítulo 1 – Introdução aos Sistemas Distribuídos Transparência em Sistema Distribuídos Transparência Descrição Acesso Oculta diferenças em representação de dados e como um recurso é acessado Localização Oculta onde um recurso está localizado Migração Oculta que um recurso pode ser movido para outra localização Relocação Oculta que um recurso pode estar se movendo para outra localização Replicação Oculta que um recurso pode ser replicado Concorrência Oculta que um recurso pode ser compartilhado por vários usuários concorrentes Falha Oculta falha e recuperação de um recurso Persistência Oculta se um recurso (software) está em memória ou disco Diferentes formas de transparência em um sistema distribuído Sistemas Distribuídos – Capítulo 1 – Introdução aos Sistemas Distribuídos Transparência em Sistema Distribuídos Exemplos de transparência: • • Ferramenta para “exploração” de arquivos que mantêm as mesmas opções de navegação para pastas locais e remotas API para acessar dados que utiliza as mesmas operações para dados locais e remotos Exemplos de falta de transparência: • • Sistema distribuído onde só é possível acessar arquivos remotos via FTP Serviço de jogos on-line que precisa ser tirado do ar para acrescentar ou trocar um servidor Classificação quanto à dificuldade de implementação (hierarquia de dependência) e nível (usuário ou programador) Sistemas Distribuídos – Capítulo 1 – Introdução aos Sistemas Distribuídos Flexibilidade Um sistema distribuído aberto é um sistema que oferece serviços de acordo com regras padronizadas que descrevem a sintaxe e semântica desses serviços • IDL – Interface Definition Language Um sistema aberto deve ser extensível • Facilidade de extensão e atualização • Adição de novos recursos e serviços • Re-implementação de serviços existentes Sistemas Distribuídos – Capítulo 1 – Introdução aos Sistemas Distribuídos Escalabilidade Capacidade do sistema permanecer operando de forma efetiva mesmo diante de um aumento significativo do número de usuários e/ou dos recursos disponíveis Escalabilidade é um dos mais importantes objetivos de projeto para desenvolvedores de sistemas distribuídos. Escalabilidade • Tamanho do sistema distribuído • Distribuição geográfica • Administração do sistema distribuído Sistemas Distribuídos – Capítulo 1 – Introdução aos Sistemas Distribuídos Problemas de escalabilidade Tamanho do sistema distribuído Conceito Exemplo Serviços centralizados Um único servidor para todos os usuários Dados centralizados Uma única agenda telefônica on-line Algoritmos centralizados Realizar roteamente com base em informações centralizadas Exemplos de limitações de escalabilidade. Sistemas Distribuídos – Capítulo 1 – Introdução aos Sistemas Distribuídos Problemas de escalabilidade Tamanho do sistema distribuído Distribuição • Escalabilidade geográfica • Ampliar sistemas distribuídos projetados para redes locais baseado em comunicação síncrona • Comunicação não-confiável e ponto-a-ponto Administração do sistema distribuído • Domínio de Administração independente • Conflito de políticas • Uso de recursos • Gerenciamento • Segurança Sistemas Distribuídos – Capítulo 1 – Introdução aos Sistemas Distribuídos Técnicas para escalabilidade (1) Ocultar latência de comunicação Distribuição Replicação • Comunicação assíncrona • Reduzir a comunicação geral • Caching • Problema de consistência Sistemas Distribuídos – Capítulo 1 – Introdução aos Sistemas Distribuídos Técnicas para escalabilidade (2) 1.4 Diferença entre permitir que: a) Um servidor ou b) Um cliente verifique os formulários a medida que eles são preenchidos Sistemas Distribuídos – Capítulo 1 – Introdução aos Sistemas Distribuídos Técnicas para escalabilidade (3) 1.5 Exemplo de dividir o espaço de nomes DNS em zonas Sistemas Distribuídos – Capítulo 1 – Introdução aos Sistemas Distribuídos