1 / 30

Desenvolvimento de Aplicações Distribuídas

Desenvolvimento de Aplicações Distribuídas. Walfredo Cirne Universidade Federal de Campina Grande http://walfredo.dsc.ufcg.edu.br. Roteiro. Conceitos e características Arquiteturas Modelos de programação Problemas. aplicação centralizada. aplicação distribuída. máquina 1. máquina 1.

dian
Download Presentation

Desenvolvimento de Aplicações Distribuídas

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande http://walfredo.dsc.ufcg.edu.br

  2. Roteiro • Conceitos e características • Arquiteturas • Modelos de programação • Problemas

  3. aplicação centralizada aplicação distribuída . . . máquina 1 máquina 1 máquina 2 máquina n 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

  4. Exemplo: Web

  5. 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

  6. É 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

  7. Roteiro • Conceitos e características • Arquiteturas • Cliente-servidor • Várias camadas • Peer-to-peer • Híbridas • Modelos de programação • Problemas

  8. Cliente-Servidor

  9. Aplicações em Várias Camadas Browser Web Servidor Web Servidor BD

  10. Peer-to-Peer

  11. Modelos Híbridos (Exemplo: Email) Mail Transfer Agent User Agent

  12. 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

  13. 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

  14. 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

  15. 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

  16. Pequeno Exemplo RMI • Interface • Servidor • Cliente • rmic Aritmetica.class gera: • Aritmetica_Stub.class • Aritmetica_Skel.class • Objetos precisam ser Serializable para poderem ser transferidos

  17. Arquitetura Java RMI Servidor deObjetos 1. cria e registraobjeto objeto Gerente de objetos eServiço de nomes(rmiregistry) skeleton criados pelocompilador destubs (rmic) 4. comunicação 3. retornareferência stub cliente Cliente 2. requisita objeto

  18. 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

  19. 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

  20. 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

  21. 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

  22. 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)

  23. 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();

  24. <command> SimpleClient 1. Send Command 2. Read Response SimpleServer 1. Read Command 2. Send Result <response> Exemplo de Troca de Mensagem • Protocolo • GET <arg> • POST <arg> • DONE • Servidor • Cliente

  25. Roteiro • Conceitos e características • Arquiteturas • Modelos de programação • Problemas • Novos modos de falha • Testes difíceis • Firewalls e endereços privados

  26. 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

  27. 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

  28. 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?

  29. Servidor Firewall+ NAT IP privado 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

  30. 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!!!

More Related