Introdução Professor: Paulo Jorge Marques Email: [email protected] Universidade de Coimbra, Portugal Área de Sistemas Distribuídos Sistemas Distribuídos Professora Práticas: Pinki Meggi Email: [email protected] Aulas práticas começam dia 20 de Agosto Curso de Eng. Informática ISCTEM, Julho 2007 2ª parte Prof. Luís Silva Email: [email protected] Fevereiro de 2007 ISCTEM, Agosto 2007 Mas, o que é um sistema distribuído? “É aquele em que uma avaria numa máquina que você nem sabia que existia faz com que o seu computador deixe de funcionar.” Seriamente… Um sistema distribuído consiste num conjunto de máquinas que trabalham de forma coordenada e conjunta para resolver um determinado problema. A comunicação é feita por troca de mensagens. Exemplos: A Internet O conjunto de servidores num banco que processam as transacções dos clientes Os computadores das redes de telecomunicações que controlam e encaminham as chamadas ISCTEM, Agosto 2007 ISCTEM, Agosto 2007 Plano da Cadeira (I - Agosto) Plano da Cadeira (II - Fevereiro) Introdução aos Sistemas Distribuídos Modelo Cliente/Servidor Programação de Sockets em Java Comunicação Multicast Invocação Remota de Métodos Programação Distribuída com Java RMI Segurança em Sistemas Distribuídos Protocolo HTTP Modelos 2-tier, 3-tier, N-tier Aplicações distribuídas para a Internet Programação web c/ Servlets e JSPs ISCTEM, Agosto 2007 Objectivos da Cadeira ISCTEM, Agosto 2007 Modelo de Avaliação Conhecimentos teóricos sobre tecnologias de sistemas distribuídos Conhecimentos práticos de programação em rede, distribuída (Sockets + RMI) Conhecimentos práticos de programação e tecnologias da Internet (Java Server Pages) Interesse pelas tecnologias emergentes. 2 Testes Escritos (75%) 2 Trabalhos Práticos (25%) 1a Frequência: 8 de Agosto (Quarta-feira) 2a Frequência: ?? de Fevereiro 1o Trabalho: conclusão a 28 de Setembro Programação em Java c/ Sockets e RMI 2o Trabalho: conclusão a ?? de Fevereiro Programação web em Servlets/JSPs ISCTEM, Agosto 2007 ISCTEM, Agosto 2007 Bibliografia Questões… Slides da disciplina! ☺ Quais as principais diferenças entre o protocolo TCP e UDP? O que é uma Firewall? Em Unix, como é que dois processos a executar na mesma máquina podem comunicar entre si? O que é o DNS? Para que serve? Como funciona o protocolo HTTP? E um servidor web? Teórica [Coulouris2001] G. Coulouris et. al., “Distributed Systems, Concepts and Design”, 3rd ed., Addison-Wesley, 2001 Prática [Boger2001] M. Boger, “Java in Distributed Systems: Concurrency, Distribution and Persistence”, Wiley & Sons, 2001 ISCTEM, Agosto 2007 ISCTEM, Agosto 2007 O que é uma Aplicação Distribuída? Componentes OK, Vamos então começar... de aplicação REDE Executam em máquinas diferentes Comunicam por mensagens ISCTEM, Agosto 2007 Comunicação por Mensagens Porquê a existência de Sist. Distribuídos? Necessidade de partilhar dados e recursos entre utilizadores Porque o recursos estão naturalmente em máquinas diferentes (distribuição funcional) Distribuição e balanceamento de carga Capacidade computacional (10.000 CPUs, cada a executar a 50 MIPS resulta em 500.000 MIPS. Neste caso cada instrução deverá ser executada em 0.002 nsec, equivalente à distância da luz de 0.6mm. Um processador deste tamanho derrete imediatamente...) Separação física (questões segurança e fiabilidade) Razões económicas (mainframes: 10 x faster, 1000 x expensive) ISCTEM, Agosto 2007 Modelo Cliente/Servidor ISCTEM, Agosto 2007 Exemplo Cliente/Servidor Cliente Servidor Pedido Resposta Base de Dados ISCTEM, Agosto 2007 ISCTEM, Agosto 2007 Web-based Client/Server Single purpose vs. multi-purpose servers Servidor Email Cliente Servidor Web Cliente Servidor Bases-dedados Servidor Email, web e bases-de-dados Cliente Cliente Single-purpose Servers Transparência Heterogeneidade Flexibilidade Tratamento de falhas Desempenho Escalabilidade Segurança Desenvolvimento de aplicações distribuídas Gestão de sistemas e aplicações distribuídas Integração de diferentes aplicações ISCTEM, Agosto 2007 Cliente Multi-purpose Server ISCTEM, Agosto 2007 Desafios nos Sistemas Distribuídos Cliente ISCTEM, Agosto 2007 Cliente/Servidor com Proxy Web Server Internet Proxy Web Server ISCTEM, Agosto 2007 Proxies Thin and Thick Clients Funcionam como cache Aumento de desempenho no acesso a páginas frequentemente acedidas (as páginas são obtidas de uma máquina perto) Aliviam a carga global na rede (apenas a rede local está a ser utilizada) Permitem mascarar faltas na rede (porque apenas a rede local está a ser utilizada) Muitas vezes são associados a firewalls Aumento de segurança na rede Controlo de acessos Comparar aplicação: - Stand-alone Delphi - Java Applet - WEB based Fat Client GUI Client ISCTEM, Agosto 2007 Peer-to-Peer Computing Fat Server Application Data Server ISCTEM, Agosto 2007 Cliente/Servidor vs. Peer-to-peer Cliente/Servidor Não há clientes e servidores Conceptualmente simples e também simples de implementar na prática Funcionalidade crítica pode ficar no servidor (melhor tolerância a faltas) O servidor pode tornar-se no bottleneck Adequado a muitas aplicações de uso comum (melhor: todos são clientes e servidores!) Peer-to-peer Application components + coordination code ISCTEM, Agosto 2007 Conceptualmente simples, mas mais complicado de implementar na prática Tipicamente menos robusto (não existe uma “máquina especial” onde colocar funcionalidade crítica) Necessidade de um serviço de directório ou de um método distribuído de encontrar pares O serviço de directório/método de encontrar pares e/ou fazer pesquisas torna-se muitas vezes no bottleneck Não adequado a todo o tipo de aplicações ISCTEM, Agosto 2007 Para saber mais… [Coulouris2001] Secções 1.1, 1.2, 1.4, 1.5 Secções 2.1, 2.2 (só até 2.2.3, mas ler a secção de thin clients) ISCTEM, Agosto 2007