Sistemas Distribuídos Introdução
Definição Processos Um sistema distribuído é um conjunto de computadores independentes, interligados por uma rede de conexão, executando um software distribuído. Executados concorrentemente Interagem para alcançar um objetivo comum Coordenação feita através de troca de mensagens, utilizando a rede de conexão
Evolução Computacional Invenção de redes de computadores de alta velocidade (anos 70): Rede local (Local Area Network - LAN) Rede global (Wide Area Network - WAN) Desenvolvimento de microprocessadores potentes (anos 80).
Sistemas Distribuídos É relativamente fácil agrupar um grande número de CPUs, conectando-as por uma rede de alta velocidade. O software para sistemas distribuídos é completamente diferente do software para sistemas centralizados
Por quê SDs? Vantagens: Cooperação e compartilhamento de recursos Benefícios: Redução de custos, aumento da confiabilidade, disponibilidade e desempenho
Qual é a Importância?
Problemas!!!! No pain, no gain!
Mas como lidar com sistemas heterogêneos? Sistemas distribuídos costumam ser organizados por meio de uma camada de software MIDLLEWARE Situado logicamente entre uma camada de nível mais alto, composta de usuários e aplicações, e uma camada adjacente (SOs e comunicação)
Middleware (1/3) Oculta a distribuição, isto é, o fato que a aplicação está sendo executada em diferentes máquinas distribuídas geograficamente Oculta a heterogenidade: diferentes sistemas operacionais, diferentes protocolos de comunicação
Middleware (2/3)
Middleware (3/3) Exemplos: RPC: chamada de procedimento remoto Comunicação orientada a mensagens: WebShere (IBM)
Meta I Acesso a recursos Facilitar aos usuários e aplicações acesso a recursos remotos e o compartilhamento de maneira controlada e eficiente Razão óbvia: Economia Impressoras, computadores, dados, página Web Conectividade e compartilhamento de informações Problema: Segurança
Meta II Transparência da Distribuição (1/5) Consiste em ocultar o fato de que os processos e recursos estão fisicamente distribuídos por vários computadores Tipos: Acesso Localização Migração Replicação Concorrência Falha
Meta II Transparência da Distribuição (2/5) Acesso: Ocultar diferenças em representação de dados, e o modo como os recursos podem ser acessados por usuários Exemplo: representação de inteiros little endian, big endian Localização: Usuários não podem dizer a localização física do recurso. Nomeação! Exemplo: www.google.com (??????)
Meta II Transparência da Distribuição (3/5) Migração: Recursos podem ser movimentados sem afetar o modo como podem ser acessados Exemplo: Mudança de um servidor WEB Relocação: Recursos podem ser relocados enquanto estão sendo acessados Exemplo: uso móvel de laptops (redes wireless)
Meta II Transparência da Distribuição (4/5) Replicação: Ocultar o fato de que existem várias cópias de um recurso Aumentar a disponibilidade ou melhorar o desempenho Concorrência: Ocutar o fato que 2 ou mais usuários estejam acessando um recurso no mesmo instante Consistência?
Meta II Transparência da Distribuição (4/5) Falha: Ocultar do usuário que um recurso deixou de funcionar bem e que o sistema se recuperou da falha
Transparência é sempre requerida? Bela meta no projeto e na implementação de sistemas distribuídos, mas deve ser considerada em conjunto com outras questões, como desempenho e facilidade de compreensão Exemplos??
Meta III Abertura (1/2) Um SD aberto é um sistema que oferece serviços de acordo com regras padronizadas que descrevem a sintaxe e a semântica desses serviços Em redes de computadores: Protocolos Em SDs: Linguagem de definição de interface (IDL) Funções disponíveis, parâmetros, valores de retorno
Meta III Abertura (2/2) Interoperabilidade: Caracteriza até que ponto duas implementações de sistemas ou componentes de fornecedores diferentes devem coexistir e trabalhar em conjunto Portabilidade Caracteriza até que ponto uma aplicação desenvolvida para uma sistema distribuído A pode ser executada, sem modificação, em um sistema distribuído diferente B que implementa as mesmas interfaces que A
Meta IV Escalabilidade (1a/7) Três Dimensões: Tamanho: Facilidade em adicionar mais usuários e recursos ao sistema Geográfico: Usuários e recursos podem estar longes uns dos outros Administrativo: Facilidade de gerenciamento, mesmo que abranja muitas organizações administrativas diferentes
Meta IV Escalabilidade (1b/7)
Meta IV Escalabilidade (2/7) Tamanho - Problemas: Limitações de serviços centralizados, dados, algoritmos Servidores centralizados: Gargalo!! Dados: Novamente, Gargalo!! Algoritmos: - Sobrecarga na rede com todas mensagens enviadas a um nó - Falha de um nó não arruina o algoritmo
Meta IV Escalabilidade (3a/7) Tamanho - Soluções: Servidores centralizados Replicação Dados Distribuição (DNS,Web) Algoritmos: Roteamento (distance-vector) Exclusão Mútua (Ricart e Agrawala)
Meta IV Escalabilidade(3b/7)
Meta IV Escalabilidade (4/7) Geográfico - Problemas: Retardo para propagação das informações Não confiabilidade da rede de conexão LANs Sistemas 'espalhados'geograficamente Como localizar um serviço Comunicação síncrona
Meta IV Escalabilidade (5/7) Geográfico - Soluções: LANs Sistemas 'espalhados' Comunicação assíncrona Evitar comunicação global (applets Java, Javascripts) Retardo Replicar e posicionar servidores em posições estratégicas Não confiabilidade Algoritmos com mecanismo de ACKs e retransmissões
Meta IV Escalabilidade (6/7) Administrativo - Problemas: Políticas de utilização e pagamento dos recursos Gerenciamento Segurança
Meta IV Escalabilidade (7/7) Adminstrativo- Soluções: Mais difícil de todas! Envolve $$$$, leis locais Peer-to-peer: ok: controle feito pelos usuários finais; no entanto: nocivo para os ISPs!
Ciladas!!! Premissas que podem ser adotadas ao se desenvolver uma aplicação distribuída A rede é confiável A rede é segura A rede é homogênea A topologia não muda A latência é zero A largura de banda é infinita O custo de transporte é zero Há somente um administrador
Tipos de SDs Classificação relacionada com a função principal do sistema Computação Distribuída: oferecer computação de alto desempenho Cluster versus Grade Simulação de fenômenos físicos Teste de novos protocos, aplicações distribuídas (PlanetLab, e.x) Sistemas de Informação: banco de dados Sistemas Pervasivos: Redes de Sensores, Redes Celulares
Exemplos Internet Redes de redes interconectadas, que se comunicam através dos protocolos IP Intranet Rede com uma única administração, com políticas de segurança próprias Redes Móveis e Sistemas Pervasivos Laptops, PDAs, celulares Web Disponibilização de serviços e informações via Internet
Internet (1/2)
Internet (2/2) Rede Heterogênea (pela própria definição) Serviços: email,www,voip,tranferência de\ arquivos
Intranet (1/2)
Intranet (2/2) Diversas LANs ligadas por um backbone Serviços: impressoras, emails Geralmente conecta a Internet via roteadores Controle de fluxo de entrada e saída feito por um firewall
Redes Móveis (1/2)
Redes Móveis (2/2) WLANs Conectividade para dispositivos portáteis (laptops, celulares, PDAs)
WWW (1/2)
WWW (2/2) Compartilhamento de informação Baseado em tecnologias como: HTTP URL Arquitetura cliente-servidor Sistema aberto
Resumo Sistemas Distribuídos Altamente difundidos atualmente Baseado em um conjunto de diferentes tecnologias Entendimento dos conceitos e principiais problemas extremamente importantes para gerenciamento, implementação e programação