Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande...
Transcript of Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande...
![Page 1: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/1.jpg)
Desenvolvimento de Aplicações Distribuídas
Walfredo CirneUniversidade Federal de Campina Grande
http://walfredo.dsc.ufcg.edu.br
![Page 2: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/2.jpg)
Roteiro
• Conceitos e características
• Arquiteturas
• Modelos de programação
• Problemas
![Page 3: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/3.jpg)
O que é uma Aplicação Distribuída?
• Uma aplicação que executa simultaneamente em várias máquinas
• Um grupo de processos que executa em máquinas distintas e trabalha de forma coordenada e cooperativa para realizar uma determinada tarefa
aplicação centralizada
máquina 1
aplicação distribuída
máquina 1 máquina 2 máquina n
. . .
![Page 4: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/4.jpg)
Exemplo: Web
Requisição HTTP
Resposta à requisiçãoHTTP
BrowserServidorWeb
![Page 5: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/5.jpg)
Por que Aplicações Distribuídas?
• Quando o problema é distribuído– Dados e usuários distribuídos– O computador como meio de comunicação
• Tolerância a falhas
• Melhor desempenho via paralelismo
• Melhor aproveitamento do hardware
![Page 6: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/6.jpg)
É só para Software Básico?
• Não!!!
• Acesso ao banco de dados remoto
• Sistemas que rodam em várias localidades
• Comunicação com fornecedores, parceiros e governo
• Applet se comunicando com um servlet
![Page 7: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/7.jpg)
Roteiro
• Conceitos e características
• Arquiteturas– Cliente-servidor– Várias camadas– Peer-to-peer– Híbridas
• Modelos de programação
• Problemas
![Page 8: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/8.jpg)
Cliente-Servidor
Requisição
Resposta à requisição Cliente Servidor
![Page 9: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/9.jpg)
Aplicações em Várias Camadas
Servidor Web
Servidor BD
Browser Web
![Page 10: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/10.jpg)
Peer-to-Peer
![Page 11: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/11.jpg)
Modelos Híbridos (Exemplo: Email)
Mail Transfer Agent
User Agent
![Page 12: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/12.jpg)
Roteiro
• Conceitos e características
• Arquiteturas
• Modelos de programação– Acesso remoto ao Banco de Dados– Objetos distribuídos– Invocação de métodos remotos– Troca de mensagens
• Problemas
![Page 13: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/13.jpg)
Acesso Remoto ao Banco de Dados
• A forma mais simples de se construir uma aplicação distribuída– Separação entre o cliente e o servidor é natural– Não se implementa o servidor
• Por exemplo, em Delphi, ao instanciar TDataBase setando os atributos para referenciar um Banco de Dados remoto, está se criando uma aplicação distribuída
![Page 14: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/14.jpg)
Objetos Distribuídos
• Objetivos– Poder interagir com um objeto localizado em
uma máquina remota como se ele fosse local– Poder construir um objeto em uma máquina e
transmiti-lo para outra
• Sistema de Suporte a Objetos Distribuídos (SSOD) – Java RMI– CORBA– DCOM
![Page 15: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/15.jpg)
Endereços e Portas
• Cada máquina na Internet possuí um endereço IP único– 150.165.98.38 = minha máquina
• Os processos que rodam em uma dada máquina são endereçados por portas– 80 = web– 25 = email
![Page 16: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/16.jpg)
Pequeno Exemplo RMI
• Interface
• Servidor
• Cliente• rmic Aritmetica.class gera:
– Aritmetica_Stub.class– Aritmetica_Skel.class
• Objetos precisam ser Serializable para poderem ser transferidos
![Page 17: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/17.jpg)
Arquitetura Java RMI
Servidor deObjetos
Gerente de objetos eServiço de nomes(rmiregistry)
Cliente
objeto
stub cliente
skeleton
2. requisita objeto
1. cria e registraobjeto
3. retornareferência
criados pelocompilador destubs (rmic)
4. comunicação
![Page 18: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/18.jpg)
Componentes de um SSOD
• Mecanismo para especificação das interfaces dos objetos e geração de skeletons e stubs– IDL, Java, COM Language, etc.
• Gerente de objetos– ORB, Registry Service
• Serviço de Nomes– bind, lookup
• Protocolo de comunicação entre objetos remotos
![Page 19: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/19.jpg)
RMI CORBA
• O fato do RMI ser baseado em Java trás todos os benefícios da linguagem Java– Integração Java + RMI é muito mais “limpa”– Independência de plataforma
• O RMI é mais fácil de ser dominado, CORBA tem um grande número de interfaces e detalhes que dificultam o domínio
![Page 20: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/20.jpg)
RMI CORBA
• RMI é totalmente baseado em Java, dificultado a integração com código escrito em outra linguagem– A única forma de realizar essa integração é através do
uso de uma interface de código nativo Java
• CORBA foi desenvolvido para ser independente de linguagem– As interfaces dos objetos são especificadas em uma
linguagem independente de linguagem de programação– A descrição da interface pode ser compilada para
qualquer linguagem de programação
![Page 21: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/21.jpg)
Invocação de Procedimentos Remotos
• Permite a chamada a procedimentos que executam em uma máquina remota– Parecido com objetos distribuídos– Só que para linguagens que não suportam
orientação a objetos
• Comumente chamado de RPC
![Page 22: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/22.jpg)
Troca de Mensagens
• Processos que compõem a aplicação distribuída podem também se comunicar pela troca de mensagens
• Nível de abstração mais baixo que outras formas de desenvolver aplicações distribuídas
• Base de implementação de vários protocolos importantes (ex: HTTP, SMTP)
![Page 23: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/23.jpg)
Estabelecendo a Conexão
• Servidor “escutando” por conexões na porta 5000:ServerSocket s = new ServerSocket(5000);while (true) {
Socket clientConn = s.accept();InputStream in = clientConn.getInputStream();OutputStream out = clientConn.getOutputStream();
}
• Cliente:InetAddress addr = InetAddress.getByName(“anjinho.dsc.ufpb.br”);Socket s = new Socket(addr, 5000);InputStream in = s.getInputStream();OutputStream in = s.getOutputStream();
![Page 24: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/24.jpg)
Exemplo de Troca de Mensagem
• Protocolo– GET <arg>– POST <arg>– DONE
SimpleClient
1. Send Command
2. Read Response
SimpleServer
1. Read Command
2. Send Result
<command>
<response>
• Servidor
• Cliente
![Page 25: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/25.jpg)
Roteiro
• Conceitos e características
• Arquiteturas
• Modelos de programação
• Problemas– Novos modos de falha– Testes difíceis– Firewalls e endereços privados
![Page 26: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/26.jpg)
Novos Modos de Falhas
• Em uma aplicação distribuída, parte da aplicação pode falhar– Software tem que lidar com novas exceções
• Há situações em que se quer fazer progresso mesmo com falhas– Mas como garantir a reintegração dos
componentes que falharam, uma vez que estes tenham sido consertados
![Page 27: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/27.jpg)
Tolerância a Falhas
• Um sistema distribuído tem mais componentes que um sistema centralizado
• Se a quebra de qualquer componente derruba o sistema, a disponibilidade será ruim em um sistema distribuído
• Há técnicas de replicação para resolver isso, mas raramente são usadas– Problema resolvido para redes locais– Mas tem um custo
![Page 28: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/28.jpg)
Testes Difíceis
• Testes automáticos tem se mostrado fundamentais para produção de software de boa qualidade– Se você estiver interessado sobre o assunto,
veja minha palestra sobre XP
• Em uma aplicação distribuída:– Como montar o cenário para o teste de forma
automática?– Como lidar com o não-determinismo intrínseco
da distribuição?
![Page 29: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/29.jpg)
Firewalls e Endereços Privados
• Firewalls e endereços privados impedem a comunicação fim-a-fim sem gateways a nível de aplicação
• A Internet está ficando mais complicada
Firewall+ NAT
IP privadoServidor
![Page 30: Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande .](https://reader035.fdocument.pub/reader035/viewer/2022062318/552fc10b497959413d8c2f49/html5/thumbnails/30.jpg)
Extra: Exemplos do Estado-da-Arte
• Consistent Hashing
• Distributed Data Structures
• Os créditos vão para meus alunos de Aplicações Distribuídas
• Obrigado!!!