A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande

Apresentações semelhantes


Apresentação em tema: "Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande"— Transcrição da apresentação:

1 Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande

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

3 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 1máquina 2máquina n...

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 Servidor Web Servidor BD Browser Web

10 Peer-to-Peer

11 Modelos Híbridos (Exemplo: ) 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 – = minha máquina Os processos que rodam em uma dada máquina são endereçados por portas –80 = web –25 =

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 de Objetos Gerente de objetos e Serviço de nomes ( rmiregistry ) Cliente objeto stub cliente skeleton 2. requisita objeto 1. cria e registra objeto 3. retorna referência criados pelo compilador de stubs ( rmic ) 4. comunicação

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 Exemplo de Troca de Mensagem Protocolo –GET –POST –DONE SimpleClient 1. Send Command 2. Read Response SimpleServer 1. Read Command 2. Send Result 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 XPminha 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 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

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 Aplicações Distribuídas Obrigado!!!


Carregar ppt "Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande"

Apresentações semelhantes


Anúncios Google