Sistemas Distribuídos Conceito Aplicações Exemplos de sistemas distribuídos Relação dos sistemas distribuídos e as redes Tipos de Sistemas Distribuídos 1 Fonte: https://sites.google.com/site/firsistemasdistribuidos/
Sistemas Distribuídos Conceitos Um sistema distribuído consiste de um conjunto de computadores autônomos que trabalham juntos para dar aparência de um único sistema coerente O objetivo principal é oferecer ao usuário uma visão transparente e independente da estrutura de rede e de hardware 2
Conceitos Comumente uma camada de software é responsável por obter essa transparência. O usuário destes sistemas comumente vê apenas uma aplicação executando remotamente O desenvolvedor dessa aplicação vê um recurso de rede que pode ser utilizado Esse recurso pode ser Processamento Armazenamento Largura de Banda Serviços de banco de dados Serviços WEB 3
Histórico 4
Redes x Sistemas Distribuídos Redes de Computadores Sistemas interconectados, que utilizam um protocolo de comunicação Podem ser ad hoc ou cliente/servidor LANs, MANs, WANs, PANs Sistemas Distribuídos Foco nas aplicações (ex: onde vamos utilizar?) Utiliza serviços oferecidos pelas redes de computadores Rede de computadores descentralizada 5
Aplicações É comum o uso de sistemas distribuídos em aplicações que exigem grande poder de processamento Historicamente os grandes centros de processamento eram máquinas enormes construídas para um único fim Hoje a maioria dos super-computadores é um aglomerado de várias máquinas de médio porte Esses aglomerados são conhecidos como clusters 6
Aplicações Os sistemas distribuídos permitem agrupar em um único sistema, várias aplicações que executam em computadores diferentes O crescimento das redes de computadores hoje é exponencial, a cada dia agrega-se mais serviços à rede Com um SD bem planejado é possível expandir a capacidade dessa rede mais facilmente, sem alterações nas aplicações atuais 7
Classes de Aplicações Distribuídas 8
Classes de Aplicações Distribuídas 9
Aplicações distribuídas para aumento de desempenho 10
Aplicações distribuídas para aumento de desempenho 11
Aplicações distribuídas para aumento de desempenho 12
Cluster x Grid Computação em Cluster Computadores fortemente acoplados Imagem de um sistema único Gestão centralizada Usado para computação de alto desempenho e alta disponibilidade Computação em Grid Computadores fracamente acoplados Não há uma imagem única do sistema Gestão distribuída Usado tanto para highthroughput computing (HTC) como para high-performance computing (HPC). 13
Exemplos de SDs Computação Móvel, Pervasiva e Ubíqua A computação móvel (ou nômade) é a execução de tarefas computacionais enquanto o usuário está se deslocando de um lugar a outro, ou visitando lugares diferentes de seu ambiente usual. A computação pervasiva é a utilização de vários dispositivos computacionais pequenos e baratos, que estão presentes nos ambientes físicos dos usuários, incluindo suas casas, escritórios e até na rua. A computação ubíqua é a junção da computação móvel com a computação pervasiva, permitindo a comunicação à distância, sem fio, com dispositivos que o usuário pode vestir (Ex: Google Glass) 14
Exemplos de SDs: Computação Pervasiva e Ubíqua Ubíqua: Aparelhos acoplados ao corpo, como relógios de pulso inteligente, com funcionalidade semelhante à de um PDA (Smartphone) Pervasiva: Dispositivos incorporados em aparelhos, como máquinas de lavar,aparelhos de som de alta fidelidade, carros, geladeiras, etc 15
Exemplos de SDs: Compartilhamento de Recursos e Web 16
Construção de SD Comumente existe uma camada de software que oferece os serviços de um SD Essa camada de software se apresenta como uma biblioteca para os desenvolvedores Ela pode também estar implementada no próprio Sistema Operacional, o que permite maior integração dos sistemas Quando a camada de software é separada é comumente chamada de middleware 17
Middleware O software que está no meio 18
Construção de um SD Criar um novo SD não é uma tarefa simples Como o objetivo é oferecer integração total dos sistemas há muitos detalhes envolvidos: Sistemas Operacionais diferentes Representação de dados diferentes Padrões de codificação e comunicação diferentes Padrões e limitações da rede etc. 19
Exemplos Google Twitter Skydrive Dropbox Yahoo 20
Tipos de SD Há muitas classificações de Sistemas Distribuídos Uma delas é como segue: Orientados a suporte de computação Orientados a processamento de informação Pervasivos 21
Características dos SDs Heterogeneidade Abertura (openness) Segurança Escalabilidade Tratamento de Falhas Concorrência Transparência 22
Características dos SDs: Heterogeneidade Componentes heterogêneos devem ser capazes de interoperar Sistemas Operacionais Arquiteturas de hardwares Arquiteturas de comunicação Linguagens de programação Interfaces de Software Medidas de segurança Representação da Informação 23
Características dos SDs: Abertura (Openness) Um sistema que implementa suficientemente especificações abertas para interfaces, serviços, e outros padrões, de modo a possibilitar portabilidade às aplicações com mínimas alterações possíveis. Interfaces devem estar disponível publicamente para que novos componentes possam ser adicionados facilmente. 24
Características dos SDs: Abertura (Openness) Diz-se que um sistema computacional é aberto quando ele pode ser estendido e reimplementado de várias maneiras. Determinada pelo grau com que novo serviços podem ser adicionados e disponibilizados. Mecanismos de comunicação uniformes e interfaces publicadas para acesso aos recursos compartilhados. 25
Características dos SDs: Segurança Os recursos são acessíveis aos usuários autorizados e devem ser utilizados para a finalidade para a qual foram projetados. Muitos recursos de informação que são mantidos em sistemas distribuídos têm um alto valor intrínseco para seus usuários, o que faz com que sua segurança seja de extrema importância. A segurança de recursos de informação tem três componentes Confidencialidade Integridade Disponibilidade. 26
Confidencialidade Características dos SDs: Segurança Garantir que a informação seja acessível somente para aqueles que tenham a devida autorização Ex: ACLs (access control lists) para prover acesso autorizado às informações Integridade Qualidade de integro; estado do que não sofreu alteração ou degradação Garantir a precisão das informações e dos métodos de processamento aos quais ela é submetida Ex: Mudar o número da conta ou valor em dinheiro em um pedido 27
Disponibilidade Características dos SDs: Segurança Garantir que os usuários autorizados tenham acesso às informações e ativos associados quando necessário. Ex: ataques de negação de serviço Não-repúdio Não-repúdio Conceito de que a autoria de determinada ação/operação não possa ser negada pelo seu executor Ex: Assinatura digital 28
Características dos SDs: Segurança Mecanismos de Segurança Criptografia Ex: Blowfish, RSA Autenticação Ex: senha, autenticação de chave pública Autorização Ex: access control lists (ACL) Integridade Ex: SHA 29
Características dos SDs: Escalabilidade O trabalho envolvido no processamento de qualquer requisição de acesso a um recurso compartilhado independe do tamanho da rede. O sistema deve trabalhar eficientemente em diferentes escalas, desde uma pequena intranet até toda a Internet. Um sistema é descrito como escalável se permanece eficiente quando há um aumento significativo no número de recursos e no número de usuários. 30
Características dos SDs: Escalabilidade O projeto de sistemas distribuídos escaláveis apresenta os seguintes desafios: Controlar os custos dos recursos físicos O custo deve crescer linearmente com o tamanho do sistema Controlar a perda de desempenho Impedir que os recursos de software se esgotem: IP de 32bits para IP de 128 bits Evitar gargalos de desempenho Utilizar algoritmos descentralizados (DNS centralizado para o descentralizado) 31 Técnicas: replicação, caching, servidores múltiplos
Características dos SDs: Tratamento de falhas As falhas em um sistema distribuído são parciais, isto é, alguns componentes falham, enquanto outros continuam funcionando. Portanto, o tratamento de falhas é particularmente difícil, e envolve as seguintes técnicas: Detecção de falhas Checksums, Mascaramento de Falha Retransmissão de mensagem corrompidas, 32
Técnicas: Características dos SDs: Tolerância a falhas Tratamento de falhas Tratamento de exceções, timeouts, Recuperação de falhas Mecanismos de Rollback, Recuperação por software: manter dados permanentes consistentes Redundância Redundância de hardware (Ex: banco de dados replicado em diversos servidores) OBS: O assunto Tratamento de Falhas será melhor abordado em aulas subsequentes... 33
Características dos SDs: Concorrência Tanto os serviços como os aplicativos fornecem recursos que podem ser compartilhados pelos clientes. O processo que gerencia um recurso compartilhado poderia aceitar e tratar um pedido de cliente por vez, mas isso limitaria o desempenho do tratamento de pedidos. Portanto, os serviços e aplicativos geralmente permitem que vários pedidos de cliente sejam processados concorrentemente. 34
Características dos SDs: Concorrência Mais de um processo em execução a cada instante Utilização de Threads Atividades separadas de usuários Independência de recursos Localização de processos servidores em computadores distintos Acesso concorrente a recursos compartilhados requer sincronização Prover e gerenciar acesso concorrente aos recursos compartilhados: Escalonamento justo (Fair scheduling) Evitar deadlocks OBS: O assunto Concorrência será melhor abordado em aulas subsequentes... 35
Características dos SDs: 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 Formas de transparência Acesso Localização Concorrência Replicação Falha Mobilidade Desempenho Escala 36
Características dos SDs: Transparência de Acesso Transparência Operações de acesso a objetos de informação são idênticas para objetos locais e remotos. Exemplo: Operação de envio de uma mensagem eletrônica especificando o destinatário através de seu endereço Internet. Transparência de Localização Acesso a um objeto ocorre sem que seja necessário o conhecimento de sua localização. Exemplo: Operação de envio de uma mensagem eletrônica especificando o destinatário através de seu endereço Internet. 37
Características dos SDs: Transparência Transparência de Concorrência Processos operam concorrentemente usando objetos de informação comuns sem interferência entre eles. Sistemas Centralizados (paralelismo lógico) e Distribuídos (paralelismo físico). Transparência de Replicação Várias instâncias de um objeto de informação são usadas sem requerer o conhecimento das réplicas pelos usuários e aplicações. Exemplo: Lotus Notes 38
Características dos SDs: Transparência de Falha Transparência Mascaramento de falhas de hardware e software. Exemplo: retransmissão de mensagens, falha em nodo do Web Server não deve derrubar todo Website. Transparência de Mobilidade Permite o movimento de recursos e clientes no sistema sem afetar as operações dos usuários e aplicações Exemplo:Troca de servidor por outro em tempo de execução; migração de processo de nodo para outro 39
Características dos SDs: Transparência Transparência de Desempenho Reconfiguração do sistema para melhorar o desempenho conforme a carga varia. Exemplo: Adição/deleção dinâmica de componentes, comutando de estruturas lineares para estruturas hierárquica quando o número de usuários aumenta. Transparência de Escala O sistema e as aplicações podem expandir em escala sem requerer modificações na estrutura do sistema ou nos algoritmos das aplicações. 40
Vantagens dos SDs Separação funcional Computadores com diferentes capacidades e funcionalidades Ex: Armazenamento de dados e processamento de dados. Distribuição de recursos Informação Informações são criadas e mantidas por diferentes pessoas. Pessoa Computadores suportam trabalho colaborativo (equipes virtuais, engenharia, cirurgia virtual) 41
Vantagens dos SDs Balanceamento de carga Computação distribuída por diferentes computadores. Economia Melhor relação custo x benefício quanto ao desempenho (supercomputador virtual). Tolerância a falhas Um problema em uma máquina não necessariamente pára todo o sistema. Normalização Necessária à integração. 42
Vantagens dos SDs Compartilhamento de recursos Base de dados e periféricos podem ser compartilhados. Disponibilidade e Confiabilidade Se uma máquina falha, o sistema permanece funcional. Backup de dados em diferentes locais (replicação). Escalabilidade Poder computacional adicionado de forma incremental. 43
Desvantagens dos SDs Desenvolvimento de aplicações é mais complexo 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. 44
Desvantagens dos SDs Desenvolvimento de aplicações é mais complexo Propagação de efeito Efeito cascata de falhas pode derrubar um sistema inteiro se não houver cuidados no projeto. Escala Um sistema que funciona bem com 10 nós pode falhar se crescer para centenas de nós. 45
Desvantagens dos SDs Desenvolvimento de aplicações é mais complexo Propagação de efeito Efeito cascata de falhas pode derrubar um sistema inteiro se não houver cuidados no projeto. Escala Um sistema que funciona bem com 10 nós pode falhar se crescer para centenas de nós. 46
Desvantagens dos SDs Pouca disponibilidade de ferramentas de suporte (Ex: compiladores, middleware). Segurança: várias portas de entrada. Utilização de uma rede para comunicação Comunicação Tratamento e recuperação de mensagens. Segurança Compartilhamento de dados implica em esquemas especiais para proteção de dados sigilosos. 47
Sistemas Distribuídos x Sistemas Paralelos 48
Sistemas Paralelos Paralelismo: vários processos executando simultaneamente em vários computadores, compartilhando memória ou não. Pseudo-paralelismo: vários processos compartilhando um processador ou outros recursos de um computador: ilusão de vários programas rodando simultaneamente (multitarefa). 49
Sistemas Paralelos: Sistemas Multiprocessadores Sistemas Multiprocessadores baseados em barramento Consiste em um número de CPUs (que pode ter alguma memória local - cache) ligadas através de um barramento Memória compartilhada 50
Sistemas Paralelos: Sistemas Multiprocessadores Sistemas Multiprocessadores baseados em switch Memória compartilhada Memórias são localizadas de um lado e os processadores do outro Número de switches pode tornar custo do sistema proibitivo 51
Sistemas Distribuídos: Sistemas Multicomputadores Sistemas Multicomputadores baseado em barramento Conjunto de CPUs com memória local trocando mensagens através de um barramento Rede local ou CPUs conectadas com um barramento rápido Sem memória compartilhada 52
Sistemas Distribuídos: Sistemas Multicomputadores Sistemas Multicomputadores baseado em switch CPUs tem um certo número de conexões para outras CPUs e mensagens são trocadas através de CPUs que intermediam a comunicação, quando necessário Sem memória compartilhada Grid (a) e Hipercubo (b) 53