Sistemas Distribuídos Prof. Msc. André Luiz Nasserala Pires nassserala@gmail.com! EMENTA: Plano de Curso! Conceitos. Comunicação entre processos (IPC). Programação de aplicações cliente- servidor. Sincronização em sistemas distribuídos. Algoritmos distribuídos. Sistemas distribuídos tolerantes a falhas. Sistemas operacionais distribuídos. Objetos distribuídos.! CARGA HORÁRIA: 60 h/a! OBJETIVO GERAL: Apresentar ao aluno os principais conceitos de sistemas distribuídos e suas aplicações.! OBJETIVOS ESPECÍFICOS: Plano de Curso 1. Compreender a evolução, os aspectos de projeto e a arquitetura das plataformas de sistemas distribuídos. 2. Compreender as características de funcionamento da comunicação e sincronização em sistemas distribuídos. 3. Instrumentalizar o aluno em técnicas de projeto e desenvolvimento de sistemas de informação distribuídos. 4. Apresentar tecnologias de hardware e software utilizadas em ambientes distribuídos. 1
Introdução! Desenvolvimento dos microprocessadores;! Redução do custo e do tamanho dos computadores;! Invenção das redes (locais) de computadores. Introdução! Observe:! Poder de processamento local ( CPU + MEMORIA,...) +! Rede de Computadores - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -! Sistema Distribuído Introdução! Sistemas de computação compostos por um grande número de processadores ligados através de redes de alta velocidade;! Contraste com sistemas centralizados, compostos por um único processador, memória, periféricos e terminais. 2
Motivação dos SD! Barateamento da plataforma de hardware:! Compartilhamento de recursos 1 ;! Maior poder de processamento;! Melhor relação custo x desempenho. 1. Coisas que podem ser compartilhadas em uma rede (discos, impressoras, arquivos, bancos de dados, etc). Motivação dos SD! Avanço das redes de computadores! Maior confiabilidade;! Maiores taxas de transferência;! Menores custos de implementação;! Surgimento e popularização da Internet. Vantagens SD/Centralizados 1. Economia: Melhor relação preço/performance; 2. Compartilhamento de recursos: Permite que mais de um usuário acesse dados e dispositivos em comum; 3. Velocidade: Poder de processamento maior; 4. Confiabilidade: Se uma máquina pára, o serviço continua executando. 3
Vantagens SD/Centralizados 5. Distribuição inerente: Algumas aplicações envolvem máquinas separadas fisicamente; 6. Crescimento incremental: O poder computacional pode crescer em doses moderadas; 7. Comunicação: Torna mais simples a comunicação entre as pessoas (ex., correio eletrônico) 8. Flexibilidade: Distribui a carga de trabalho por todas as máquinas disponíveis na rede Limitações dos SD! Software: Complexidade de projeto, implementação e utilização;! Ligação em rede: Perda de mensagens e sobrecarga de tráfego.! Segurança: Conseqüência do compartilhamento de recursos. Definições! Um sistema distribuído é uma coleção de computadores independentes que aparecem para os usuários do sistema como um único computador. (TANENBAUM, 2007)! Um sistema distribuído é algo que não deixa você trabalhar por causa da falha de uma máquina da qual nunca se ouviu falar. (Leslie Lamport) 4
Definições! Um sistema distribuído é um sistema composto de vários computadores interconectados através de uma rede e que hospedam processos que usam um conjunto comum de regras (protocolos distribuídos) para ajudar a execução coerente de suas atividades. (VERÍSSIMO e RODRIGUES, 2000)!... aquele no qual os componentes localizados em computadores interligados em rede se comunicam e coordenam suas ações apenas passando mensagens. (COULOURIS, 2007) Paradigmas! Falsas premissas adotadas pelo desenvolvedor inexperiente de aplicações distribuídas: 1. A rede é confiável; 2. A rede é segura; 3. A rede é homogênea; 4. A topologia não muda; 5. A latência é zero; 6. A largura de banda é infinita; 7. O custo de transporte é zero; 8. Há só um administrador. Características de um SD! Comunicação através de troca de mensagens:! Necessidade de infra- estrutura de comunicação.! Ausência de relógio global:! Visão independente dos eventos;! Coordenação e sincronização;! Estado compartilhado.! Estado = trânsito de mensagens + valores das variáveis 5
Características de um SD! Execução concorrente de programas:! A norma em uma rede de computadores;! Coordenação de programas em execução concorrente e que compartilham recursos.! Falhas independentes / Tolerância a falhas:! Cada componente do sistema pode falhar independentemente, deixando os outros ainda em funcionamento. Arquitetura de um SD Arquitetura de um SD! Um sistema distribuído organizado como um middleware. A camada do middleware se extende sobre múltiplas máquinas;! Middleware: Camada de software que fornece uma abstração de programação, ocultando a heterogeneidade das redes, do hardware, de sistemas operacionais e linguagens de programação. 6
Middleware! Oculta o fato de que as mensagens passam por uma rede de computador para enviar o pedido de invocação e suas respostas. Exemplos de SD! Internet;! Intranet;! Computação móvel e ubíqua/pervasiva;! Sistemas de computação distribuídos;! Sistemas de informação distribuídos; Internet! Conjunto de redes de computadores de tipos diferentes e interligadas;! Programas interagem enviando mensagens em um meio de comunicação comum, com auxílio dos protocolos apropriados. 7
Internet Computação Móvel! execução de tarefas de computação, enquanto o usuário está se deslocando de um lugar a outro ou visitando lugares diferentes de seu ambiente usual.! Ex:! Aplicações que usem GPS;! Rastreamento de Veículos; Computação Ubíqua! Utilização de vários dispositivos computacionais pequenos e baratos, que estão presentes nos ambientes físicos dos usuários.! Ex:! Sistemas de RFID s;! Reconhecimento Facial;! Controle remoto da iluminação da casa. 8
Computação Pervasiva! Pequenos e/ou energia limitada e/ou móveis e/ou comunicação através de redes sem fio;! Deve se acomodar a mudança de contexto, composição do sistema completamente adhoc, se organizam principalmente para compartilhar recursos. Sistemas de Computação Distribuída! Alto desempenho! Cluster (alto grau de homogeneidade):! Mesmo sistema operacional, mesmo hardware e mesma LAN etc.! Grid (alto grau de heterogeneidade):! Diferentes sistemas operacionais, diferentes hardware, diferentes redes LANs etc. Exemplo de um sistema de computação em cluster 9
Sistemas de informação distribuídos! Sistema de processamento transacional: Sistemas de informação distribuídos! Integração de Aplicações Coorporativas: Compartilhamento de Recursos! Hardware: impressoras, discos, etc.! Redução dos custos.! Dados: arquivos, bancos de dados, etc.! Informações necessária às aplicações ou ao trabalho. 10
! Gerencia um conjunto de recursos relacionados;! Apresenta sua funcionalidade para usuários e aplicativos.! Ex.: sistema de arquivos, serviço de impressão, etc.! O acesso a um serviço através de suas operações:! Exemplo: leitura, escrita e exclusão de arquivos.! Cada recurso deve ser gerenciado por um programa que ofereça uma interface de comunicação, permitindo ao recurso ser acessado e atualizado de forma confiável e consistente.! Servidor: programa em execução (um processo) em um computador interligado em rede, que aceita pedidos de programas em execução em outros computadores para efetuar um serviço e responder apropriadamente.! Os processos que realizam os pedidos são referidos como clientes. 11
! Uma interação completa entre um cliente e um servidor, desde o envio do pedido até o recebimento da resposta, é chamada de requisição remota.! Um navegador web em execução é um exemplo de cliente.! O navegador se comunica com um servidor web para solicitar páginas web.! A Web é baseada em três componentes tecnológicos padrão principais: 1. HTML (HyperText Markup Language): Linguagem para especificar o conteúdo e o layout de páginas a serem exibidas pelos navegadores web. 2. URLs (Uniform Resource Locators): Identificam os documentos e outros recursos armazenados como parte da web. 3. HTTP (HyperText Transfer Protocol): Protocolo que permite a interação entre navegadores e clientes, buscando documentos e outros recursos web. 12
! Aspectos de Evolução da Web: 1. Páginas dinâmicas (.NET, JSP, PHP etc); 2. Padrões de interoperabilidade (XML); 3. s web (web services); 4. Web Semântica; Bibliografia! COULOURIS, George; DOLLIMORE, Jean; KINDBERG, Tim. Sistemas Distribuídos: conceitos e projeto. 4. ed. Porto Alegre: Bookman, 2007.! TANENBAUM, Andrew S. Sistemas Operacionais Modernos. Rio de Janeiro: Prentice- Hall, 1992.! TANENBAUM, Andrew S. Sistemas Distribuídos: princípios e prática. 2. ed. São Paulo: Bookman, 2007.! VERÍSSIMO, Paulo; RODRIGUES, Luís. Distributed Systems For Architects. Kluwer Academic Publishers, 2001. 13