Buscar

04 ObjetosDistribuidos (C5)

Prévia do material em texto

Objetos Distribuídos
Sistemas Distribuídos
Bacharelado em Sistemas de Informação
UENP – CLM
1
Prof. MSc. Bruno Miguel – brunomiguel@uenp.edu.br
Roteiro
1. Introdução 
2. Modelo de Objetos X Modelo de Objetos 
Distribuídos
3. Problemas de Projeto para RMI
4. Implementação do RMI
5. Comunicação em grupo
2
Evolução dos sistemas cliente-servidor
• O modelo clássico (pedido-resposta) começou 
por ser implementado por instruções de baixo 
nível 
• Ex. Sockets
3
Evolução dos sistemas cliente-servidor
• Linguagens procedurais -> modelo RPC 
(Remote Procedure Calling). 
• Linguagens OO motivou o aparecimento dos 
sistemas de Objetos Distribuídos -> RMI 
(Remote Method Invocation)
4
Modelo de Objetos x Modelo de Objetos 
Distribuídos
• Referências para objetos locais X referências para 
objetos remotos. 
• Em um sistema OO os objeto são acessados por 
referências . 
• Para invocar um método -> referência do objeto, nome 
do método e argumentos correspondentes.
• Referências, podem ser atribuídas a variáveis, passadas 
como argumentos e devolvidas como resultado de 
métodos
5
Modelo de Objetos x Modelo de 
Objetos Distribuídos
• Referência remota 
– Identificador que pode ser usado no âmbito de um SD para 
se referir a um objeto remoto único;
– Referências remotas são idênticas a referências locais, nos 
seguintes aspectos:
1. o objeto que recebe a invocação do método é 
especificado como o objeto local
2. referências remotas podem ser passadas como 
argumentos e resultados de invocação de métodos 
remotos 
6
Modelo de Objetos x Modelo de Objetos Distribuídos
• Passagem de parâmetros(entre processos 
diferentes) 
cópia versus referência(tipos primitivos são passados 
por cópia)
• Passagem de objetos remotos 
– por referência (são objetos de acesso global) na 
prática uma referência remota “aponta” para um 
objeto local que funciona como um proxy do objeto 
remoto
– Na passagem de um objeto remoto, é passado um 
proxy que é guardado na maquina receptora, e para o 
qual vão ser passadas as futuras invocações ao objeto
7
Modelo de Objetos x Modelo de 
Objetos Distribuídos
• Passagem de objetos locais - por cópia (a 
referência não faz sentido na máquina 
remota)
• Do lado do receptor é criado um novo objeto 
que pode ser guardado localmente
8
Modelo de Objetos x Modelo de Objetos 
Distribuídos
• Interface Especificação sintática de um conjunto de métodos. 
Uma classe que implemente a interface terá obrigatoriamente 
que implementar todos os métodos da interface
• Interface remota - Cada objeto remoto tem uma interface 
remota que especifica quais dos seus métodos podem ser 
invocados remotamente. 
Remota (IR)
Invocação
IR
IL
IL
ILA
B
C
D
E
F
9
Interface
remota m1
m2
m3
m4
m5
m6
Dados
Implementação
Objeto remoto
{
dos métodos
10
Modelo de Objetos x Modelo de Objetos 
Distribuídos
• Métodos locais - A invocação de um método 
local resulta na execução do código 
correspondente no objeto receptor. No final o 
controle de execução retorna ao objeto 
invocador. A invocação de um método pode 
resultar em:
– o estado do objeto é alterado
– outras invocações, de objetos em outro lugar;
11
Modelo de Objetos x Modelo de 
Objetos Distribuídos
• Método remotos
– A invocação de um método remoto pode resultar na 
invocação de outros objetos tal como numa invocação 
local. 
– Eventualmente os objeto envolvidos podem existir em 
máquinas diferentes.
– Quando uma invocação atravessa a barreira de um 
processo ou computador, tem lugar uma invocação de 
um procedimento remoto (Remote Method
Invocation –RMI)
– Para um objeto fazer uma invocação remota sobre um 
objeto tem que possuir a sua referência remota
12
Modelo de Objetos x Modelo de 
Objetos Distribuídos
• Exceções locais - Quando ocorre uma 
situação de erro (recuperável) é gerada 
uma exceção (pelo sistema de execução 
ou pelo próprio código do programador)
– É possível capturar uma exceção e transferir 
o controle de execução para um bloco de 
código que tratará a condição de erro .
13
Modelo de Objetos x Modelo de 
Objetos Distribuídos
• Exceções remotas
– Uma invocação remota além das exceções 
ocorridas no processo receptor, pode 
também gerar exceções devido a: 
• erro na transmissão dos argumentos,
• o processo que contém o objeto remoto 
“falhou” (crashed) está tão ocupado que não 
consegue responder, 
• o resultado da invocação perdeu-se.
14
Modelo de Objetos x Modelo de 
Objetos Distribuídos
• Reciclagem (Garbage Collection-GC)
– Java detecta automaticamente os objetos que já não são 
acessíveis. Em C++ o programador é o responsável por 
liberar esse espaço de memória;
• Reciclagem de Objetos Distribuídos -Extensão do GC 
tradicional
– Geralmente baseada em contagem de referências;
15
Problemas de projeto para RMI
• Falhas na comunicação são tratadas com três 
mecanismos:
– Re-tentativa de mensagem de requisição: retransmitir 
a mensagem até que uma resposta seja recebida ou 
que se presuma que o servidor falhou
– Filtragem de duplicatas: necessária para eliminar 
execução replicada de requisições no servidor
– Retransmissão de resultados: manter histórico de 
resultados enviados para evitar que o servidor tenha 
que re-executar operações no caso de perda de uma 
resposta.
• Semântica de invocação
16
Problemas de projeto para RMI
Talvez
método remoto pode ser executado uma vez ou não
executado. Sujeito à falha por omissão ou por colapso. Não é
possível determinar se o método foi executado ou não. Muitas
coisas podem ter acontecido, incluindo um timeout se o
sistema é assíncrono.
Corba
Pelo-
menosuma-
vez
invocador recebe um resultado quando o método foi
executado pelo menos uma vez, ou uma exceção quando não
se obtém um resultado. Para lidar com as omissões, se
retransmite as mensagens de requisição e resposta. 
SUN
RPC
No-
máximouma-
vez
o invocador recebe um resultado quando o método foi
executado exatamente uma vez ou recebe uma exceção, mas
método nunca será executado mais de uma vez.
RMI 
Java e 
Corba
•Três semânticas de invocação possíveis
17
Problemas de projeto para RMI
• Transparência:
– A idéia é que, assim como RPC, a RMI fosse o mais 
similar possível a uma invocação local
– Entretanto, invocações remotas são mais 
suscetíveis a falhas, pois envolvem a rede, outros 
computadores e outros processos
– Independente da semântica escolhida, existe 
sempre a possibilidade de falhas
– Necessário lidar com essas situações
– Desempenho de chamadas remotas é muito 
inferior às locais
18
Implementação do RMI
Um objeto A invoca um método no objeto remoto B
Módulo de Comunicação
Implementa o protocolo pedido-resposta
Módulo de Referência remota
Mantém uma tabela de referências remotas, que contém a correspondência 
entre referências locais e remotas. 
A tabela do servidor conterá uma entrada para o objeto B
A tabela do cliente conterá uma entrada para o proxy de B
objeto A
skeleton
Requisição
proxy de B
Resposta
Modulo de 
comunicaçãoModulo de Ref.
Remota
Módulo de Referência RemotaMódulo de
Comunicação
Para classes B
& dispatcher
Objeto
Remoto B
cliente Servidor
19
Implementação do RMI
• O software RMI
– Camada de software entre a aplicação e os módulos de 
comunicação e referência
• Proxy
– Torna transparente a invocação do método remoto
– Recebe a invocação, serializa os argumentos e envia a invocação 
através do módulo de comunicação;Quando recebe o resultado, 
desserializa-o e envia-o ao cliente.
• Dispatcher
– Recebe o pedido do módulo de comunicaçãoe encaminha-o 
para um skeleton.
• Skeleton
– Desserializa os argumentos, invoca o método no objeto local, 
recebe o resultado e encaminha-o no sentido inverso.
20
Exemplo: sistema de corretora de ações
• Sistema para corretora cujo objetivo é permitir 
que os operadores tenham acesso aos valores 
correntes de mercado das ações de interesse
• Ações de uma empresa são representadas por 
um objeto contendo variáveis, refletindo seu 
valor 
• Informações chegam de diferentes fontes 
atualizando uma ou mais variáveis de um objeto 
representando as ações de uma empresa
21
Exemplo: sistema de corretora de ações
• Uma modelagem possível com processos com 
dois tipos de tarefas:
– provedor de informação: recebe as atualizações de 
uma única fonte externa e aplica alterações nos 
objetos interessados (existe um para cada fonte 
externa)
– Processo operador: objeto criado para representar 
uma ação que foi solicitada pelo usuário; tal 
objeto se inscreve (assina) no objeto provedor de 
informação relevante
22
Exemplo: sistema de corretora de ações
Dealer’s computer
Information
provider
Dealer
External
source
External
source
Information
provider
Dealer
Dealer
Dealer
Notification
Notification
Notification
Notification
Notification
Notification
Notification
Notification
Dealer’s computer
Dealer’s computerDealer’s computer
Notification
Notification
23
Sistema de corretora de ações - Arquitetura
• Objeto de interesse: trata-se do objeto que sofre mudanças de estado e que 
estas podem ser de interesse de outros participantes
• Evento: ocorre em um objeto de interesse (em função da execução de um 
método)
• Notificação: objeto que contém informações sobre um evento, como por 
exemplo objeto de interesse, método invocado e horário da ocorrência
• Assinante: objeto que se inscreveu em algum tipo de evento em outro 
objeto
• Objetos observadores: seu principal objetivo é desvincular os assinantes dos 
objetos de interesse, para não sobrecarregar estes últimos
24
Sistema de corretora de ações - Arquitetura
subscriberobserverobject of interest
Event service
object of interest
object of interest observer
subscriber
subscriber
3.
1.
2. notification
notification
notification
notification
25
Estudo de caso: RMI Java
• RMI Java estende o modelo de objetos do Java 
para sistemas distribuídos
• Permite que objetos invoquem métodos em 
objetos remotos com a mesma sintaxe de 
invocação local
• Programação distribuída simplificada pela 
transparência e pelo uso de uma única 
linguagem (Java)
26
RMI Java - Transparência
• Objeto invocador sabe que o objeto é remoto, pois precisa 
tratar exceções remotas (RemoteException)
• Objeto invocado sabe que poderá ser acessado por um objeto 
remoto, pois precisa implementar a interface Remote
• Diferenças na semântica da passagem de parâmetros
• Objetos acessíveis externamente devem considerar possíveis 
invocações concorrentes
27
RMI Java – Interfaces Remotas
•GraphicalObject é um objeto que representa um elemento 
gráfico, com atributos posição, tamanho, etc. Sua classe 
deve implementar a interface Serializable
• Em Shape, um método retorna inteiro e o outro, um objeto
•Em ShapeList, método newShape() recebe um objeto e 
retorna um objeto que é acessível remotamente
import java.rmi.*;
import java.util.Vector;
public interface Shape extends Remote {
int getVersion() throws RemoteException;
GraphicalObject getAllState() throws RemoteException; 1
}
public interface ShapeList extends Remote {
Shape newShape(GraphicalObject g) throws RemoteException; 2
Vector allShapes() throws RemoteException;
int getVersion() throws RemoteException;
}
28
RMI Java - Passagem de Parâmetro
• Todos os parâmetros de um método são de entrada, e o 
retorno do método é o único parâmetro de saída
• Qualquer parâmetro que corresponda a um objeto de classe 
serializável pode ser parâmetro de entrada ou saída
• Quando um objeto com Remote é serializado, a referência ao 
mesmo é serializada e não seu conteúdo, anotando-se nome 
da classe
• Informações de classe são registradas com URL de forma a 
permitir que o cliente que acessa o objeto remoto possa 
carregar a definição da classe
29
RMI Java - Passagem de Parâmetro
• Passagem de objetos Remote: quando tipo de parâmetro ou 
retorno corresponde a objeto com interface Remote, então é 
enviada uma referência ao objeto - como o Shape retornado 
por newShape()
• Passagem de objetos não Remote: todos objetos não remotos 
(serializáveis) são copiados e passados por valor -caso do 
GraphicalObject em getAllState() e newShape()
import java.rmi.*;
import java.util.Vector;
public interface Shape extends Remote {
int getVersion() throws RemoteException;
GraphicalObject getAllState() throws RemoteException; 1
}
public interface ShapeList extends Remote {
Shape newShape(GraphicalObject g) throws RemoteException; 2
Vector allShapes() throws RemoteException;
int getVersion() throws RemoteException;
}
30
RMI Java - Download de classes
• Download de classes em Java permite que classes sejam 
carregadas dinamicamente de uma JVM para outra, sob
• Demanda RMIregistry:
– Vinculador do RMI Java: mapeia nomes textuais em referências 
a objetos acessíveis
– Deve rodar uma instância em cada máquina que tenha objetos 
que podem ser acessados por clientes remotos (responsável 
pelos objetos locais)
– Objetos são identificados por //host:porta/nomeObjeto onde 
host e porta se referem ao registry (host também é o local do 
objeto)
31

Continue navegando