Baixe o app para aproveitar ainda mais
Prévia do material em texto
Victor Medeiros victor.wanderley@ufrpe.br Projeto de Sistemas Distribuídos Introdução aos Sistemas Distribuídos Victor MedeirosProjeto de Sistemas Distribuídos História • 1945 até 1985: • Computadores corporativos grandes, caros e monolíticos (mainframes) • Sistemas Centralizados • Processador e memória compartilhados • Usuários através de “terminais burros” • Grande porte físico. Limitações de acomodação • Sistemas operacionais únicos: dependência de fabricante 2 Victor MedeirosProjeto de Sistemas Distribuídos História • Meados da década de 80 • Surgimento das redes locais de computadores • Barateamento de processadores • Popularização do computador pessoal 3 Victor MedeirosProjeto de Sistemas Distribuídos História • Dias atuais: • Diversos portes de computadores • Diversos sistemas operacionais • Diversas tecnologias de comunicação • Novas aplicações: • Internet, comércio eletrônico, computação móvel, computação ubíqua/pervasiva, multimídia digital/ TV interativa 4 Victor MedeirosProjeto de Sistemas Distribuídos História • Novo paradigma para implementação de Sistemas Computacionais: • Comunicação, Troca de Informações, Interoperabilidade, Redução de Custos • Sistemas passam a distribuir processamento e controle de informações entre vários nós de comunicação 5 Victor MedeirosProjeto de Sistemas Distribuídos Conceitos • “... um sistema no qual componentes localizados em computadores em rede se comunicam e coordenam suas ações somente por passagem de mensagem.” Coulouris et al 6 Victor MedeirosProjeto de Sistemas Distribuídos Conceitos • “É um sistema que lhe impede obter qualquer serviço quando uma máquina que você nem imagina que exista falhe.” Lamport 7 Visão pessimista Victor MedeirosProjeto de Sistemas Distribuídos Conceitos • “Uma coleção de elementos de processamento interconectados, tanto logicamente como fisicamente, para execução cooperativa de programas de aplicação com o controle geral dos recursos centralizados.” M. Eckhouse 8 Victor MedeirosProjeto de Sistemas Distribuídos Conceitos • “Coleção de computadores autônomos que aparecem para os usuários do sistema como um único computador.” Tanenbaum & van Steen 9 Victor MedeirosProjeto de Sistemas Distribuídos Um típico SD 10 Fonte: Tanembaum, A., Introduction to Distributed Systems Victor MedeirosProjeto de Sistemas Distribuídos Visão Lógica 11 • Sistemas distribuídos são: • coleção de processos/objetos cooperando • distribuição de estado (dados) + distribuição de comportamento (código) • a semântica (?) da aplicação é dada pela cooperação dos processos • os processos não precisam estar necessariamente em máquinas distintas • ausência de um estado global Victor MedeirosProjeto de Sistemas Distribuídos Vantagens • Redução de custos • Microprocessadores X Mainframes • Performance absoluta • Impossível construir um Mainframe com a mesma capacidade de processamento • Compartilhamento de Recursos • Dispositivos e Dados • Tolerância a falhas • Replicação de dados e hardware 12 Victor MedeirosProjeto de Sistemas Distribuídos Vantagens • Escalabilidade • Idealmente, sistemas distribuídos não devem ter qualquer componente centralizado (cuja capacidade impõe limites para o tamanho máximo de um sistema), tal que a restrição ao crescimento não deve existir • Flexibilidade (Interoperabilidade) • Mistura de computadores pessoais e compartilhados • Distribuição das tarefas/aplicações entre as máquinas 13 Victor MedeirosProjeto de Sistemas Distribuídos Desvantagens • Interconexão • Um grande número de problemas de sistemas acontece quando componentes que antes operavam independentemente são interconectados • Interferência • Dois componentes de um sistema, cada um com comportamento razoável quando observados em isolamento, podem exibir comportamento indesejável quando combinados • Propagação de efeito • “efeito cascata” de falhas pode derrubar um sistema inteiro se não houver cuidados no projeto 14 Victor MedeirosProjeto de Sistemas Distribuídos Desvantagens • Efeitos de escala • Um sistema que funciona bem com 10 nós pode falhar se crescer para centenas de nós • Heterogeneidade • Uma maior distribuição geográfica (física) aumenta a variedade de sistemas em comunicação • Pontos de Falha • Mais componentes, maior distribuição geográfica, mais problemas de segurança 15 Victor MedeirosProjeto de Sistemas Distribuídos Exemplos de SD: Internet • Porção típica da Internet: 16 ISP! desktop computer:! backbone! satellite link! server:! ☎" network link:! ☎" ☎" ☎" intranet! Victor MedeirosProjeto de Sistemas Distribuídos Exemplos de SD: Intranets • A Intranet pode ser considerada uma pequena porção da Internet, gerenciada ou administrada separadamente por uma organização ou companhia que apresentam requisitos focados em políticas de segurança normalmente rígidas. • Uma Intranet pode ser conectada a Internet através de roteadores, para permitir que seus usuários possam acessar alguns de seus serviços, como acesso a páginas da web e emails. É possível também que usuários externos acessem o conteúdo interno da Intranet conforme o interesse da compania que o gerencia. • O controle de acesso aos serviços é normalmente realizado pelos firewalls, cuja a função principal é filtrar tipos de dados que entram e saem conforme o interesse da organização. 17 Victor MedeirosProjeto de Sistemas Distribuídos Exemplos de SD: Intranets • As principais características para um projeto de componentes para o uso de Intranets em sistemas distribuídos são: • Serviços de Troca de Arquivos; • Firewalls; • Custo de instalação e Suporte de Software. 18 Victor MedeirosProjeto de Sistemas Distribuídos Exemplos de SD: Computação móvel • Avanços na tecnologia permitiram a redução do hardware dos dispositivos e melhoramento nas técnicas de transmissão de dados sem fios. Um dos resultados mais evidentes é o aparecimento de poderosos dispositivos computacionais móveis: • Laptops; • Handheld, PDA’s; • Smartphones; • Dispositivos Vestíveis (Wearable); • Dispositivos Embarcados. • Características principais: • Portabilidade • Conectividade 19 Victor MedeirosProjeto de Sistemas Distribuídos Ubiquidade/Pervasividade • Ubiquitous Computing, • ... (Weiser 1993) são recursos computacionais que ficam disponíveis no próprio ambiente. São dispositivos pequenos e baratos incorporados nos objetos do dia a dia do lar ou escritório de trabalho. • Weiser(1999) • Criou o conceito de computação omnipresente ou computação presente em “qualquer lugar”. Neste novo cenário, um usuário pode, por exemplo, para conversar diretamente com a máquina de lavar, para pedir para ligar o aparelho de som. Ao mesmo tempo, estes mesmo dispositivos podem enviar mensagem para seus donos através de emails ou smartphones para avisar sobre algum evento. • Seu experimento mais conhecido é o active badge 20 Victor MedeirosProjeto de Sistemas Distribuídos Desafios • Computação móvel: • Limitação da bateria; • Limitação da largura de banda; • Interfaces limitadas; • Computação Ubíqua: • Reconfiguração de acesso; • Complexidade na implementação; • Privacidade e segurança. 21 Victor MedeirosProjeto de Sistemas Distribuídos Caracterização de Sistemas Distribuídos • Exemplos de aplicações: • Casa; • Trabalho; • Hospitais; • Bibliotecas; • etc; 22 Laptop Mobile Printer Camera Internet Host intranet Home intranetWAP Wireless LANphone gateway Host site Victor MedeirosProjeto de Sistemas Distribuídos Características Chaves/Desafios • Compartilhamento de Recursos • Abertura/Flexibilidade • Concorrência • Escalabilidade • Tolerância a Falhas • Transparência Não são conseqüências automáticas da distribuição; software de suporte e aplicação devem ser bem planejados para garanti-las. 23 Victor MedeirosProjeto de Sistemas Distribuídos Compartilhamento de Recursos • “Recurso” é um termo abstrato • Dispositivo físico • Discos, Impressora, CDROM • Dispositivo lógico • Um arquivo, um SGBD • Benefícios: • Redução de custos • Essencial para certas aplicações • Trabalho colaborativo 24 Victor MedeirosProjeto de Sistemas Distribuídos Compartilhamento de Recursos • Um SD necessita um controle sobre recursos compartilhados • Gerenciadores de Recursos • Esquemas de nomeação • Coordenação de acesso concorrente • Sincronização 25 Victor MedeirosProjeto de Sistemas Distribuídos Compartilhamento de Recursos 26 Victor MedeirosProjeto de Sistemas Distribuídos Abertura/Acessibilidade 27 • A acessibilidade de um sistema de computador é a característica que determina se um sistema pode ser estendido e reimplementado de outras formas. • Determina o grau para o qual um novo recurso compartilhado pode ser adicionado e disponibilizado para uso em uma variedade de programas clientes. Victor MedeirosProjeto de Sistemas Distribuídos Abertura/Acessibilidade 28 • A acessibilidade só é possível se a especificação e a documentação relativa as interfaces de software do componente de sistema ficarem disponíveis para os desenvolvedores. Em outras palavras, as interfaces chaves devem se tornar públicas; • A publicação é somente um primeiro passo necessário para permitir a adição e extensão dos serviços em Sistemas Distribuídos. Victor MedeirosProjeto de Sistemas Distribuídos Abertura/Acessibilidade 29 • Exemplo de publicação: • A Internet, para poder oferecer um padrão uniforme de serviço de rede para os desenvolvedores, oferece uma série de documentos específicos que são chamados de RFCs – Requests For Comments, os quais são identificados por números. Este conjunto de documentos especificam entre outras coisas, como os aplicativos deverão utilizar o protocolo de Internet para utilizar os seus serviços [www.ietf.org]. • UNIX Victor MedeirosProjeto de Sistemas Distribuídos Abertura/Acessibilidade 30 • Sistemas Distribuídos Abertos • Sistemas heterogêneos compostos por diferentes máquinas, sistemas operacionais, comunicando- se através de protocolos públicos Victor MedeirosProjeto de Sistemas Distribuídos Abertura/Acessibilidade 31 • Os sistemas abertos são caracterizados pelo fato de terem suas interfaces chaves públicas • Os sistemas distribuídos abertos são baseados na provisão de um mecanismo uniforme de comunicação e de uma publicação de interface para acesso aos recursos compartilhados • Sistemas distribuídos abertos podem ser construídos a partir de hardware e software heterogêneos. Mas os componentes e as técnicas necessárias para permitir a conformidade entre os diversos hardwares e softwares devem ser cuidadosamente testados Victor MedeirosProjeto de Sistemas Distribuídos Concorrência 32 • Os serviços e as aplicações providenciam recursos que podem ser compartilhados pelos clientes nos SDs. Isto pode ser um problema se um determinado recurso for requisitado ao mesmo tempo por vários usuários. • Muitos desses desafios estão relacionados quando um determinado recurso deve ser compartilhado concorrentemente para oferecer melhor desempenho no sistema. • Exemplo: acesso a BD, páginas de Internet etc. Victor MedeirosProjeto de Sistemas Distribuídos Concorrência 33 • O principal problema é a ocorrência de conflitos que podem gerar inconsistências em ambientes concorrentes. • Um exemplo é a ação de armazenamento de dados. Uma primeira ação pode pedir ao BD para armazenar “Smith R$ 1200,00”, e logo em seguida, um outro processo pode solicitar para o mesmo banco de dados gravar “Jones R$ 5000,00”. Neste exemplo, o processo de concorrência do SGBD poderá intercalar o acesso ao BD, misturando as informações Victor MedeirosProjeto de Sistemas Distribuídos Escalabilidade 34 • Todo SD deve operar efetivamente e eficientemente em várias e diferentes ESCALAS. • Um sistema é dito escalável se ele permanecer efetivo e íntegro enquanto há um aumento significativo de recursos e de usuários Victor MedeirosProjeto de Sistemas Distribuídos Escalabilidade 35 • Software de sistema e aplicação não precisam mudar quando a escala do sistema aumenta. • O processamento deve ser independente do tamanho da rede • Filosofia de projeto • Se a demanda por um recurso aumentar, deve ser possível estender o sistema para atender à mesma. Victor MedeirosProjeto de Sistemas Distribuídos Escalabilidade 36 • O exemplo da Internet: Date Computers Web servers 1979, Dec. 188 0 1989, July 130,000 0 1999, July 56,218,000 5,560,866 Victor MedeirosProjeto de Sistemas Distribuídos Desafios de escalabilidade 37 • Controle de Custo de Recursos Físicos • Um SD deve ter a possibilidade de crescer sem aumentar os custos significativamente. Em geral, um SD deve ter um crescimento na ordem de O(n). • Servidores Web; • Controle de Perda de Desempenho • Um sistema que mantém dados que pode crescer proporcionalmente a “n” usuários, não deve ter perda de desempenho pior que O(log(n)). • Estrutura de dados hierárquico é melhor que a linear; Victor MedeirosProjeto de Sistemas Distribuídos Desafios de escalabilidade 38 • Perda de Escalabilidade por Software • Um projeto mal feito pode limitar a escalabilidade de um SD • IPv4. • Evitando Gargalos de Desempenho • Em um projeto de SD, os algoritmos devem descentralizar o acesso aos recursos para evitar gargalos • Páginas de Internet que são muito acessadas podem ter seus dados duplicados em mais servidores para evitar os gargalos. Victor MedeirosProjeto de Sistemas Distribuídos Técnicas para prover escalabilidade 39 • Caching • Replicação • Clustering • Computação em Grade Pesquisar sobre cada uma das técnicas. Trazer na próxima aula. Victor MedeirosProjeto de Sistemas Distribuídos Tolerância a falhas 40 • Em SD, quando uma falha acontece, somente aquele componente deve parar, enquanto que os outros componentes do sistema devem continuar funcionando. • Técnicas de sistemas tolerantes à falha: • Detecção de falhas • Algumas falhas podem ser detectadas. Esta possibilita o sistema isolar o problema e tratá-lo. • Checksum. • Outras situações não permitem uma detecção simples, como por exemplo, saber quando um servidor está fora do ar na Internet. • Ocultação de falhas • Permite que o sistema corrija a falha escondendo a sua ocorrência, por exemplo, do usuário. • Retransmissão de mensagens, escrita redundante a disco, etc. Victor MedeirosProjeto de Sistemas Distribuídos Tolerância a falhas 41 • Tolerar Falhas • Na Web os browsers são projetados para tolerar falhas. Quando um servidor não pode ser conectado, o browser não fica eternamente tentando estabelecer uma conexão, ao invés disso, ele encerra a tentativa de conexão e em seguida avisa o usuário sobre a desistência • Recuperação de Falhas • Dependendo do software, um projeto adequado permite que um sistema possa recuperar um estado consistente de dados até o momento antes da falha • Rolled back usado em BDs • Sistemas com Redundâncias • Os sistemas podem também oferecer componentesredundantes para evitar falhas • BDs com replicação de dados, Servidores de DNS e Roteadores. Victor MedeirosProjeto de Sistemas Distribuídos Tolerância a falhas 42 • Disponibilidade: • Quando um componente falha em um SD, apenas a parte que usa este componente é afetada • O componente pode ser reinicializado em outro computador. • Um SD tem mais partes disponíveis por mais tempo Victor MedeirosProjeto de Sistemas Distribuídos Transparência 43 • Transparência em SD é definido como a capacidade de ocultar do usuário e do programador a separação existente entre os componentes dentro do sistema, fazendo com que um sistema seja percebido como um todo e não como um conjunto de componentes independentes. Victor MedeirosProjeto de Sistemas Distribuídos Transparência 44 • A ANSA Reference Manual [ANSA 1989] e a ISO [ ISO 1992] identificaram oito formas de transparência: • Transparência de Acesso • É a capacidade de permitir acesso remoto ou local sempre da mesma maneira. • Interface gráfica de pastas e FTP • Transparência de Localização • É a capacidade de permitir acesso aos recursos sem o conhecimento da localização da mesma. • A técnica usada no URL • Transparência de Concorrência • É capacidade de permitir acesso aos recursos compartilhados de forma concorrente para vários usuários, sem que haja interferência entre eles • Web Server, FTP e BD Victor MedeirosProjeto de Sistemas Distribuídos Transparência 45 • Transparência de Replicação • É capacidade de permitir instâncias múltiplas de um componente para aumentar a confiabilidade e desempenho sem o conhecimento do usuário ou da aplicação. • DNS • Transparência à Falhas • É a capacidade de encobrir as falhas ocorridas, mas permitindo que usuários e/ou aplicações completem suas tarefas a despeito das falhas ocorridas de hardware ou de software • E-mail • Transparência de Mobilidade • É a capacidade de permitir que os recursos e usuários possam ser móveis dentro de um sistema, sem que isto afete as operações do usuário ou programa aplicativo • Telefones Celulares Victor MedeirosProjeto de Sistemas Distribuídos Transparência 46 • Transparência de Desempenho • É a capacidade de permitir que os SDs possam ser reconfigurados para providenciar desempenho mesmo com cargas variáveis. • a Web • Transparência de Escala • É a capacidade de permitir que o sistema cresça sem alterar a estrutura ou os algorítmos do sistema • Internet, Intranet
Compartilhar