projeto e implementação de middleware

38
Aquiles Burlamaqui Luiz Eduardo

Upload: taber

Post on 16-Jan-2016

28 views

Category:

Documents


0 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Projeto e Implementação de Middleware

Aquiles BurlamaquiLuiz Eduardo

Page 2: Projeto e Implementação de Middleware

Agenda• Motivação• História• Objetivo• Elementos• Passo a Passo

Page 3: Projeto e Implementação de Middleware

Motivação: • Dificuldade em programar para Ambientes

distribuídos• Desvantagem do socket• Foco na aplicação

Page 4: Projeto e Implementação de Middleware

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

Page 5: Projeto e Implementação de Middleware

Objetivo• Tornar fácil a implementação de aplicações

distribuídas• Permitir chamada de procedimento remoto

como se fosse local

Page 6: Projeto e Implementação de Middleware

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

Page 7: Projeto e Implementação de Middleware

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

Page 8: Projeto e Implementação de Middleware

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

Page 9: Projeto e Implementação de Middleware

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.

Page 10: Projeto e Implementação de Middleware

1. Criar aplicação convencional2. Dividir o programa em duas partes3. Criar uma especificação rpcgen4. Executar o rpcgen 5. Criar servidor6. Criar cliente7. Compilar cliente8. Compilar servidor9. Executar servidor e cliente

Page 11: Projeto e Implementação de Middleware
Page 12: Projeto e Implementação de Middleware

Rpcgen IDL

Versão Número do procedimento

Número do programa

Page 13: Projeto e Implementação de Middleware
Page 14: Projeto e Implementação de Middleware
Page 15: Projeto e Implementação de Middleware
Page 16: Projeto e Implementação de Middleware

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

Page 17: Projeto e Implementação de Middleware

Máquina do Cliente Máquina do Servidor

Kernel Kernel

cliente servidor

empacotaparâmetros

desempacotaresultados

desempacotaparâmetros

empacotaresultados

transporte de mensagensvia rede

12

3

4

0 56

7

8

9

1011

Page 18: Projeto e Implementação de Middleware

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

Page 19: Projeto e Implementação de Middleware

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

Page 20: Projeto e Implementação de Middleware

Causa• Problema na rede

Soluções• Temporização para chegada da resposta ou

mensagem de reconhecimento• Tempo expira – retransmissão da

mensagem

Page 21: Projeto e Implementação de Middleware

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

Page 22: Projeto e Implementação de Middleware

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.

Page 23: Projeto e Implementação de Middleware

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

Page 24: Projeto e Implementação de Middleware

Motivação• Problemas com o RPC

Necessidade de aprender uma linguagem IDL Suporte limitado para tipos de dados Fortalecimento das linguagens Orientadas a

Objetos

Page 25: Projeto e Implementação de Middleware

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

Page 26: Projeto e Implementação de Middleware

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.

Page 27: Projeto e Implementação de Middleware

RMI Registry

Servidor

Naming.bind(“servobjA”, ref_obj);

Naming.lookup(“rmi://natalnet.br/servobjA”)

ref_obj:metodo()

ref_obj

Page 28: Projeto e Implementação de Middleware

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.

Page 29: Projeto e Implementação de Middleware

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

Page 30: Projeto e Implementação de Middleware

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

Page 31: Projeto e Implementação de Middleware

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

Page 32: Projeto e Implementação de Middleware

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.

Page 33: Projeto e Implementação de Middleware
Page 34: Projeto e Implementação de Middleware
Page 35: Projeto e Implementação de Middleware

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

Page 36: Projeto e Implementação de Middleware

1. Defina a interface do servidor (estendendo a interface java.rmi.remote)

2. Escreva o código do servidor que implementa a interface (herdando da classe java.rmi.UnicastRemoteObject)

3. Compile o servidor1. Use o compilador javac para produzir o arquivo .class2. Execute o compilador rmic para obter o stub e skeleton

4. Execute o programa servidor (o rmiregister tem de estar executando antes)

5. Execute o cliente

Page 37: Projeto e Implementação de Middleware

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.

Page 38: Projeto e Implementação de Middleware

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