1 / 38

Projeto e Implementação de Middleware

Projeto e Implementação de Middleware. Aquiles Burlamaqui Luiz Eduardo. RPC & RMI. Agenda Motivação História Objetivo Elementos Passo a Passo. Chamada de Procedimentos Remotos (RPC). Motivação: Dificuldade em programar para Ambientes distribuídos Desvantagem do socket

taber
Download Presentation

Projeto e Implementação de Middleware

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. Projeto e Implementação de Middleware Aquiles Burlamaqui Luiz Eduardo

  2. RPC & RMI • Agenda • Motivação • História • Objetivo • Elementos • Passo a Passo

  3. Chamada de Procedimentos Remotos (RPC) • Motivação: • Dificuldade em programar para Ambientes distribuídos • Desvantagem do socket • Foco na aplicação

  4. RPC • História • 1976 – Descrito na RFC 707 • 1981 – Uso Comercial Xerox • Sun’s RPC para Unix(ONC RPC) – base para o Sun NFS • DCE/RPC para Unix, usada pela OSF • Microsoft RPC adota o DCE/RPC

  5. Chamada de Procedimentos Remotos (RPC) • Objetivo • Tornar fácil a implementação de aplicações distribuídas • Permitir chamada de procedimento remoto como se fosse local

  6. Visão geral • Um processo A chama um procedimento p de um processo B, entrando em estado de espera • O processo B passa a executar o procedimento p, e ao seu término faz um reply para o processo A • O processo A volta à sua execução normal após ter recebido o reply

  7. Transmissão de dados • Dados em programas são estruturados enquanto que mensagens carregam informação sequencial: » Linearização/Restauração de dados • Heterogeneidade na representação de dados em computadores: » Uso de um formato externo comum » Inclusão de uma identificação de arquitetura na mensagem

  8. Marshalling/Unmarshalling • Marshalling: • Linearização de uma coleção de itens de dados estruturados • Tradução dos dados em formato externo • Unmarshalling: • Tradução do formato externo para o local • Restauração dos itens de dados de acordo com sua estrutura

  9. RPC – Como? • Esconde o código das chamadas a rede em procedimentos chamados stubs. • Stubs – procedimentos que contem código de chamadas de rede • Esconde detalhes como socket. • XDR ( External Data Representation ) – padrão IETF, RFC 4506 • RPCGEN é uma ferramenta utilizada para gerar os stubs.

  10. Passo a Passo RPC Criar aplicação convencional Dividir o programa em duas partes Criar uma especificação rpcgen Executar o rpcgen Criar servidor Criar cliente Compilar cliente Compilar servidor Executar servidor e cliente

  11. RPCGEN

  12. RPC Número do procedimento Versão Número do programa Rpcgen IDL

  13. Chamadas e mensagens em RPC

  14. Portmapper

  15. Portmapper

  16. Funções dos Stubs • Client stub • intercepta a chamada • empacota os parâmetros (marshalling) • envia mensagem de request ao servidor • Server stub • recebe a mensagem de request • desempacota os parâmetros (unmarshalling) • chama o procedimento, passando os parâmetros • empacota o resultado • envia mensagem de reply ao cliente • Client stub • recebe a mensagem de reply • desempacota o resultado • passa o resultado para o cliente

  17. Chamadas e mensagens em RPC Máquina do Cliente Máquina do Servidor 2 4 1 empacota parâmetros 5 desempacota parâmetros 0 6 cliente servidor desempacota resultados empacota resultados 7 11 10 8 Kernel Kernel 3 transporte de mensagens via rede 9

  18. Falhas em RPC • O cliente não é capaz de localizar o servidor • A mensagem de request do cliente para o servidor é perdida • A mensagem de reply do servidor para o cliente é perdida • O servidor pára após ter recebido a mensagem de request • O cliente pára após ter enviado a mensagem de request

  19. RPC – Cliente não consegue localizar o servidor • Causas • Servidor está fora do ar • Cliente está usando versão antiga do servidor • Soluções • Variáveis com código de retorno indicando erro • Exceções

  20. RPC – Perda das Mensagens de Solicitação • Causa • Problema na rede • Soluções • Temporização para chegada da resposta ou mensagem de reconhecimento • Tempo expira – retransmissão da mensagem

  21. Perda das mensagens de resposta • Causa • Perda da solicitação • Perda da resposta • Servidor • Soluções • Fácil de tratar quando a operação é idempotente • Atribuir número sequencial as solicitações

  22. RPC • Uma maneira de fazer comunicação em sistemas distribuídos de uma forma transparente. • Proposta por Birrel e Nelson em 1984. • Birrell & Nelson 1984: A. D. Birrell and B. J. Nelson. ``Implementing remote procedure calls.'' ACM Transactions on Computer Systems, 2(1):39-59 • Um procedimento numa máquina A chama um procedimento numa máquina B. • Para o programador, tudo se parece como se os dois procedimentos fizessem parte do mesmo programa.

  23. RPC • O sistema (middleware) se encarrega da comunicação entre as máquinas. • Implementação popular: Sun rpcgen desenvolvido no final dos anos 80. • Desenvolvimentos da idéia de RPC: • CORBA • Java RMI • DCOM

  24. RMI • Motivação • Problemas com o RPC • Necessidade de aprender uma linguagem IDL • Suporte limitado para tipos de dados • Fortalecimento das linguagens Orientadas a Objetos

  25. RMI API Java que permite a execução de chamadas remotas no estilo RPC Permite objetos Java invocar transparentemente métodos de outros objetos (que podem estar em máquinas diferentes – objetos remotos) Java RMI libera o programador de tratar de detalhes como endereçamento e codificação/ decodificação de mensagens

  26. Localização de Objetos Seria impraticável se para cada invocação de método remoto fosse necessário incluir o par (máquina,porta) para identificar onde se encontra o objeto que contém o método RMI oferece um Serviço de Nomes (RMI Registry) que oferece informações sobre a localização de objetos remotos. rmiregistry executa em um endereço bem conhecido.

  27. RMI Registry ref_obj Naming.lookup(“rmi://natalnet.br/servobjA”) RMI Registry Naming.bind(“servobjA”, ref_obj); ref_obj:metodo() Servidor

  28. RMI • O modelo RMI: • O servidor define objetos que o cliente pode usar remotamente • Os clientes podem invocar métodos nesse objeto remoto como se ele estivesse executando localmente. • RMI esconde o mecanismo subjacente de transporte, via rede, de argumentos dos métodos e valores de retorno.

  29. RMI • Definir uma interface que declara os métodos remotos • O programa servidor • deve incluir uma class que implementa essa interface. • deve criar um objeto remoto e registrá-lo no serviço de nomes (rmi register) • O programa cliente • deve perguntar ao serviço de nomes pela referência do objeto remoto.– deve invocar o método sobre o objeto remoto

  30. RMI • Interface • Similar a classe • Não há implementação, apenas declaração de métodos • Tudo é público • É uma API que pode ser implementada por uma classe

  31. RMI • Servidor • A interface definida pelo servidor deve declarar que os métodos da interface serão invocados por clientes remotos • A interface deve estender a interface Java Remote que o pacote java.rmi oferece

  32. RMI • Criar uma classe que implementa a interface. A classe deve estender UnicastRemoteObject • O código main() deve: • Criar um objeto remoto • Registrar esse objeto no serviço de Nomes • A classe precisa definir um construtor para RemoteException ! • A classe será usada pelo compilador rmic paracriar o código do stub e do skeleton.

  33. RMI – Servidor

  34. RMI - Cliente

  35. RMI Uma aplicação RMI distribuída usa o "rmiregistry" para obter uma referência ao objeto remoto.

  36. RMI – Passo a Passo • Defina a interface do servidor (estendendo a interface java.rmi.remote) • Escreva o código do servidor que implementa a interface (herdando da classe java.rmi.UnicastRemoteObject) • Compile o servidor • Use o compilador javac para produzir o arquivo .class • Execute o compilador rmic para obter o stub e skeleton • Execute o programa servidor (o rmiregister tem de estar executando antes) • Execute o cliente

  37. Exercício • 1) Construir dois exemplos simples que utilizem cada uma das tecnologias vistas em aula(RPC e RMI) • Com base na experiência adquirida fazer um comparativo entre eles.

  38. Referencias http://en.wikipedia.org/wiki/Remote_procedure_call http://www.dimap.ufrn.br/~thais/ www.ppgia.pucpr.br/~alcides www.cin.ufpe.br/~if677 virtual01.lncc.br/~licht http://www.cs.cf.ac.uk/Dave/C/node33.html

More Related