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
Download

Sistemas Distribuídos Introdução Mas, o que é um sistema