Buscar

SD 04 - Invocação Remota de Procedimentos e Métodos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Sistemas Distribuídos
Invocação Remota de Procedimentos e de Métodos
Joinvile Batista Junior
UFGD - SD 04 - Joinvile Batista Junior 2
Invocação Remota de Procedimentos e de Métodos
 A : Programação Estendida para Sistemas Distribuídos
 B : Chamada de Procedimento Remoto
 C : RMI (Remote Method Invocation) 
UFGD - SD 04 - Joinvile Batista Junior 3
A : Programação Estendida para Sistemas Distribuídos
1. Comente transparência de localização e independência de protocolos 
na invocação remota.
2. Comente as semelhanças e diferenças entre o RPC e o RMI
UFGD - SD 04 - Joinvile Batista Junior 4
Camadas do Middleware
Applications
Middleware
layersRequest reply protocol
External data representation
Operating System
RMI, RPC and events
UFGD - SD 04 - Joinvile Batista Junior 5
Modelos de Programação Estendidos para SDs
• alguns modelos de programação foram estendidos para aplicação em 
SDs
– RPC – Remote Procedure Call
• o mais antigo
• programas clientes chamam procedimentos implementados em 
programas servidores
– RMI – Remote Method Invocation
• objeto invoca método de objeto remoto
• pode ser incorporado a um linguagem: útil quando cliente e 
servidor são implementados na mesma linguagem
– ex: RMI Java
UFGD - SD 04 - Joinvile Batista Junior 6
Middleware
• middleware para processamento remoto utiliza camada baseada em 
mensagens entre processos
– ex: a abstração da RMI é baseada em baseada no protocolo 
requisição-resposta
• transparência de localização
– em RPC e RMI o cliente não sabe se a invocação é local ou remota
– objetos que geram e recebem eventos não conhecem a localização 
uns dos outros
• independência dos protocolos de transporte (UDP ou TCP) e dos SOs
• padrões utilizados na representação externa de dados (CDR do 
CORBA, Serialização de Objetos do Java, XML)
– ocultam diferenças da arquitetura do hardware (ex: ordem dos 
bytes)
• CORBA suporta invocação remota de componentes em várias 
linguagens de programação
– utiliza linguagem IDL (Interface Description Language) para 
determinar a interface com o componente em cada linguagem
UFGD - SD 04 - Joinvile Batista Junior 7
Interfaces
• interface especifica os métodos/procedimentos chamados pelo cliente e 
executados remotamente
– embora a IDL CORBA permita especificar atributos
• eles só podem ser acessados através dos métodos
• mecanismos de passagem de parâmetros do RMI
– parâmetros passados por valor
• valores de tipos simples e objetos
– referências para objetos remotos
• não confundir com ponteiros (referências a objetos locais)
– pois não se referem a uma posição específica de memória
• IDL especifica interfaces em CORBA
– para encapsular componentes de várias linguagens
UFGD - SD 04 - Joinvile Batista Junior 8
B : Chamada de Procedimento Remoto
1. Comente o papel dos stubs na chamada para o RPC.
2. Comente as tarefas do compilador de interfaces para o RPC.
3. Comente o registro de interfaces e a busca de endereços de interfaces 
no servidor de nomes.
UFGD - SD 04 - Joinvile Batista Junior 9
Chamada de Procedimento Remoto
• mecanismo que torna transparente ao programador
– chamada de procedimentos em outras máquinas
• integra modelo de comunicação cliente/servidor
– com uma linguagem de programação procedural
• RPC é muito parecida com RMI
– um processo servidor define em sua interface de serviço os 
procedimentos que estão disponíveis para chamada remota
– implementada sobre um protocolo requisição-resposta
• simplificado pela ausências das referências de objetos remotos 
nas requisições
– diferença fundamental
• não tem a capacidade de criar novas instâncias de objetos
– portanto: não suporta referências de objetos remotos
UFGD - SD 04 - Joinvile Batista Junior 10
Procedimento Remoto
UFGD - SD 04 - Joinvile Batista Junior 11
Passagem de Parâmetros
• há uma definição de parâmetros
– de entrada e de saída
• parâmetros podem ser passados
– por valor
– por referência
• devem ser especificados se são
– de entrada, de saída, ou ambos
• estruturas que contém ponteiros
– não podem ser passadas como argumento
• interdição de acesso a variáveis globais
– da entidade chamadora
UFGD - SD 04 - Joinvile Batista Junior 12
Stubs do cliente e do servidor - RPC
client 
Request
Reply
CommunicationCommunication
modulemodule dispatcher
service 
client stub server stub
procedure procedure
client process server process 
procedureprogram 
UFGD - SD 04 - Joinvile Batista Junior 13
Stubs do Cliente
• código associado a cada procedimento chamado
• converte chamada local em remota
• uso de interface de definição comum
• funções
– empacotar argumentos
– gerar mensagem
– enviar mensagem ao servidor
– esperar pelo reply
– desempacotar mensagem
– retornar resultado ao programa local
UFGD - SD 04 - Joinvile Batista Junior 14
Programa Servidor
• Dispatcher
– mapeia identificador de procedimento
• em stub do servidor
• Stub do Servidor
– associado a cada procedimento chamado
• desempacotar argumentos
• chamar procedimento associado ao serviço
• esperar pela execução do serviço
• empacotar argumentos em uma mensagem de reply
UFGD - SD 04 - Joinvile Batista Junior 15
Chamada de Procedimento Remoto
UFGD - SD 04 - Joinvile Batista Junior 16
Tarefas do Compilador de Interfaces
• gerar procedimentos stubs para o cliente
– um para cada procedimento de interface
– compilado e linkado ao código do cliente
• gerar procedimentos stubs para o servidor
– um para cada procedimento de interface
– compilado e linkado junto com o dispatcher ao código do 
servidor
• gerar rotinas de marshalling/unmarshalling
• gerar código para ser usado nas aplicações
– cabeçalhos de procedimentos de serviços
UFGD - SD 04 - Joinvile Batista Junior 17
Localizando o Servidor
• Utiliza servidores de nomes
– servidor registra procedimentos com o servidor de nomes
UFGD - SD 04 - Joinvile Batista Junior 18
Binding (Associação)
• utiliza servidor de nomes (Binder)
• interface para o servidor
– registro de interfaces (serviços)
• register (serviceName, serverPort, version)
– destruição de registros de interfaces
• withdraw (serviceName, serverPort, version)
• interface para o cliente
– consulta de endereços de interfaces
• lookup (serviceName, version) returns serverPort
• servidor exporta interface
– e cliente importa interface
UFGD - SD 04 - Joinvile Batista Junior 19
Servidor de Nomes (Binder)
• diversos servidores
– podem oferecer o mesmo serviço
• serviço de autenticação para servidores
• tolerante a falhas
• localização
– binder em endereço de máquina e porta fixos
• localização em tempo de compilação (estático)
– uso de recursos do SO (variáveis de ambiente)
• para configurar endereço do binder
– localização em tempo de execução (dinâmico)
– uso de mensagens de broadcast
• localização em tempo de execução (dinâmico)
UFGD - SD 04 - Joinvile Batista Junior 20
C : RMI (Remote Method Invocation)
1. Compare a utilização de RMI com a comunicação por sockets.
2. Explique a utilização do conceito de interface para cliente e servidor no 
RMI. Suponha um cenário com 3 clientes, 3 interfaces e um servidor.
3. Explique como funciona a coleta de lixo distribuída.
UFGD - SD 04 - Joinvile Batista Junior 21
Comunicação entre Objetos Distribuídos
• modelo de objetos distribuídos
– interface remota
• todo objeto remoto tem uma interface que especifica a 
assinatura dos seus métodos que podem ser acessados de 
forma remota
– nome, tipos dos argumentos, tipo do retorno, exceções
• em Java RMI
– uma interface remota deve estender a interfaceRemote
– referência de objeto remoto
• objetos podem invocar os métodos de um objeto remoto se 
tiverem acesso à referência do objeto remoto
• pode ser passada como argumento ou resultado de invocação 
de métodos remotos
UFGD - SD 04 - Joinvile Batista Junior 22
Objeto Remoto e sua Interface Remota
interface
remote
m1
m2
m3
m4
m5
m6
Data
implementation
remoteobject
{ of methods
UFGD - SD 04 - Joinvile Batista Junior 23
Invocações de Métodos em RMI
• ação em um SD é iniciada pela invocação de um método e pode 
resultar na invocação de métodos de outros objetos
– objetos envolvidos podem estar em diferentes processos ou em 
diferentes computadores
• quando uma invocação cruza o limite de um processo ou de um 
processador
– a referência remota do objeto deve estar disponível para o 
invocador
• instanciação de um objeto com interface remota gerará uma referência 
a um objeto remoto
• coleta de lixo (garbage colletion) distribuída é realizada pela 
cooperação dos coletores de lixo locais e um módulo adicional de 
controle
• invocações de objetos em outros processos ou computadores pode 
causar exceções
UFGD - SD 04 - Joinvile Batista Junior 24
Invocações de Métodos Locais e Remotos
invocation invocation
remote
invocation
remote
local
local
local
invocation
invocation
A B
C
D
E
F
UFGD - SD 04 - Joinvile Batista Junior 25
Proxy (Stub) e Skeleton – RMI Java
object A object B
skeleton
Request
proxy for B
Reply
CommunicationRemote Remote referenceCommunication
modulemodulereference module module
for B’s class
& dispatcher
remote
client server
UFGD - SD 04 - Joinvile Batista Junior 26
Componentes da Implementação de RMI
Módulo de Comunicação
• dois módulos de comunicação cooperam para envio/recepção de 
mensagem conforme o protocolo requisição-resposta
– mensagem: tipo, requestId, referência_remota_objeto
• seleciona o Despachante para a classe do objeto a ser invocado
Módulo de Referência Remota
• responsável pela transformação entre referências de objeto local e 
remoto
– e pela criação de referências de objeto remoto
• contém tabela para registrar a correspondência entre as referência 
locais e remotas
– no cliente: mantém entradas para os proxies locais
– no servidor: mantém entradas para os objetos remotos
• cria referência na primeira vez e armazena na tabela para reutilização
Servente
• instância de classe que implementa o corpo de um objeto remoto
UFGD - SD 04 - Joinvile Batista Junior 27
Componentes da Implementação de RMI
Software RMI
• middleware responsável pela identificação do objeto remoto, 
empacotamento e desempacotamento da mensagem (enviada/recebida 
pelos Módulos de Comunicação)
• componentes: Proxy, Despachante, Esqueleto
Proxy
• torna a invocação do método remoto transparente para o cliente, 
ocultando os detalhes de
– criação/conversão de referência do objeto remoto (Módulo de 
Referência Remota)
– empacotamento dos argumentos
– desempacotamento dos resultados
– e envio/recepção da mensagem (Módulos de Comunicação)
UFGD - SD 04 - Joinvile Batista Junior 28
Componentes da Implementação de RMI
Despachante
• recebe a mensagem de requisição do Módulo de Comunicação
• utiliza methodId para selecionar o método apropriado no Esqueleto 
• repassa a mensagem para o Esqueleto
Esqueleto
• desempacota os argumentos da mensagem,
• invoca o método no Servente
• empacota o resultado e as exceções em mensagem de resposta
• envia mensagem para o método do proxy que fez a requisição
Compilador RMI Java
• gera as classes Proxy, Despachante e Esqueleto a partir de classe que 
implementa o objeto remoto
Vinculador (Binder)
• mantém tabela mapeando nomes textuais para referências a objetos 
remotos para registro e pesquisa de objetos remotos
UFGD - SD 04 - Joinvile Batista Junior 29
Carregamento Dinâmico de Classes
• baseado na anotação de classes durante a serialização
• a anotação indica de onde conseguir as classes
UFGD - SD 04 - Joinvile Batista Junior 30
Ativação de Objeto Remoto
• evita o consumo de CPU por objetos inativos
• suporta referências persistentes de objetos
UFGD - SD 04 - Joinvile Batista Junior 31
Coleta de Lixo Distribuída
• objetivo da Coleta de Lixo Distribuída
– remover objeto remoto para o qual não haja mais nenhuma 
referência
• algoritmo
– cada servidor mantém um conjunto dos processos clientes que tem 
proxies para um dado objeto remoto R: R.ClientesRemotos
– quando recebe, pela primeira vez, uma referência remota
• cliente C invoca addRef (R) no servidor
– servidor adiciona C a R.ClientesRemotos
• e cria proxy para o objeto remoto R
– quando Coletor de Lixo do cliente C percebe que o proxy para o 
objeto remoto R já não é mais necessário
• invoca removeRef (R) no servidor
– servidor remove C de R.ClientesRemotos
• exclui o proxy para o objeto remoto B
– quando B.Clientes estiver vazio e não existirem clientes locais
• Coletor de Lixo Local do servidor recupera o espaço ocupado 
por R
UFGD - SD 04 - Joinvile Batista Junior 32
C : RMI (Remote Method Invocation)
1. Explique os passos e as saídas do Projeto e Compilação no RMI.
2. Explique os passos e as saídas da Execução no RMI.
3. Explique os tipos de passagem de parâmetros no RMI.
UFGD - SD 04 - Joinvile Batista Junior 33
RMI Java – Projeto e Compilação
UFGD - SD 04 - Joinvile Batista Junior 34
RMI Java – Execução
UFGD - SD 04 - Joinvile Batista Junior 35
RMI Java – Visão Geral da Execução
UFGD - SD 04 - Joinvile Batista Junior 36
RMI Java – Compilador rmic
• Gera os stubs (proxies) e skeletons
– para cada classe que implementa uma interface remota
• exemplo : rmic HelloImpl // extensão class
– cria os arquivos
• para servidor : HelloImpl_Skel.class
• para o cliente : HelloImpl_Stub.class
UFGD - SD 04 - Joinvile Batista Junior 37
RMI Java – Passagem de Parâmetros
• Objeto não Remoto
– objetos cujas instâncias podem ser copiadas entre espaços de 
endereços diferentes
• deve implementar interface java.io.Serializable
• cópia passada por valor
– como parâmetro ou endereço de retorno
• Objeto Remoto
– objeto cujas instâncias podem ser usadas remotamente
• deve implementar interface java.rmi.Remote
• referência do objeto é passada
– como parâmetro ou endereço de retorno
– correspondente ao seu stub
UFGD - SD 04 - Joinvile Batista Junior 38
C : RMI (Remote Method Invocation)
1. Explique as principais características do código de uma interface e de 
um servidor no RMI.
2. Explique as principais características do código de um cliente no RMI, 
incluindo o módulo de segurança obrigatório
UFGD - SD 04 - Joinvile Batista Junior 39
RMI Java – Aplicação para Ilustração
• Impressão de mensagens em um servidor
– Interface
• ServidorInt.java
– Servidor
• Servidor.java
– Cliente
• Cliente.java
UFGD - SD 04 - Joinvile Batista Junior 40
Interface ServidorInt.java
UFGD - SD 04 - Joinvile Batista Junior 41
Programa Servidor.java
UFGD - SD 04 - Joinvile Batista Junior 42
Programa Cliente.java
UFGD - SD 04 - Joinvile Batista Junior 43
RMI Java – Módulo de Segurança Obrigatório
• todos os programas que usam RMI
– devem instalar um módulo de segurança para
• carregar objetos passados como parâmetros, valores 
retornados ou exceções
– para garantir que o código carregado
• obedece a requisitos de segurança
– módulo de segurança
• RMISecurityManager
UFGD - SD 04 - Joinvile Batista Junior 44
Cliente utilizando Módulo de Segurança
UFGD - SD 04 - Joinvile Batista Junior 45
RMI Java – Passos para Criar a Aplicação
• compilar os arquivos
– javac ServidorInt.java Servidor.java Cliente.java
•gerar stub e skeleton
– rmic Servidor
• resultado : Servidor_Stub.class e Servidor_Skel.class
• ativação do serviço de nomes
– rmiregistry
• ativação das aplicações
– java Servidor
– java Cliente
UFGD - SD 04 - Joinvile Batista Junior 46
RMI Java – The Naming class of Java RMIregistry
• void rebind (String name, Remote obj)
• método utilizado pelo servidor para registrar o identificador de 
um objeto remoto
• void bind (String name, Remote obj)
• método alternativo utilizado pelo servidor para registrar um 
objeto remoto pelo nome
• se o nome já está ligado a um objeto remoto : propaga uma 
exceção
•void unbind (String name, Remote obj)
• método remove uma associação (binding) entre um nome e 
um objeto
•Remote lookup(String name)
• método utilizado por clientes para localizar um objeto remoto 
por nome : retorna uma referência ao objeto
•String [] list()
• método retorna um array de Strings contendo os nomes 
associados no registro

Outros materiais