Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub...

36
Sistemas Distribuídos Comunicação Objetos Distribuídos e RMI - Parte 2 - Instituto de Informática – UFG Verão 2005 Baseado em: Tanenbaum, Capítulo 2

Transcript of Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub...

Page 1: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Sistemas Distribuídos

ComunicaçãoObjetos Distribuídos e RMI

- Parte 2 -

Instituto de Informática – UFGVerão 2005

Baseado em: Tanenbaum, Capítulo 2

Page 2: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Chamadas de Objetos:Chamadas Remotas e Chamadas Locais

invocation invocationremote

invocationremote

locallocal

localinvocation

invocationA B

C

D

E

F

Page 3: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Um Objeto Remoto e sua Interface Remota

interfaceremote

m1m2m3

m4m5m6

Data

implementation

remoteobject

{ of methods

Page 4: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Objetos Distribuídos

Organização típica de um sistema de objetos distribuídosbaseado em proxy e skeleton.

Operação de binding: cliente obtém um proxy para o objeto remoto.

2-16

Page 5: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Conceitos de Implementação

• Objeto de linguagem• Objeto remoto

• Adaptador de objeto• Servidor

Máquina

Processo servidor

Objetosremotos

Objetos delinguagem:

instâncias de classes que

implementam os objetos remotos

Máquina

Cliente

Adaptador de Objeto

Page 6: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Binding de um Cliente com um Objeto

a) Exemplo de binding implícito – utiliza apenas referências globais.b) Exemplo de binding explícito – utiliza referências globais e locais.

Distr_object* obj_ref; //Declare a systemwide object referenceobj_ref = …; // Initialize the reference to a distributed objectobj_ref-> do_something(); // Implicitly bind and invoke a method

(a)

Distr_object objPref; //Declare a systemwide object referenceLocal_object* obj_ptr; //Declare a pointer to local objectsobj_ref = …; //Initialize the reference to a distributed objectobj_ptr = bind(obj_ref); //Explicitly bind and obtain a pointer to the local proxyobj_ptr -> do_something(); //Invoke a method on the local proxy

(b)

Page 7: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Referências de Objetos• Permitem a um cliente referenciar e interagir com

objetos remotos de maneira transparente• Exemplo de implementação:

• Podem ser tratados como ponteiros ou referências locais na implementação do cliente

– na verdade, um ponteiro ou referência local para o proxy!

Internet address port number time object number interface of remote object

32 bits 32 bits 32 bits 32 bits

Page 8: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Protocolo entre Cliente e Servidor

Request

ServerClient

doOperation

(wait)

(continuation)

Replymessage

getRequest

executemethod

messageselect object

sendReply

Page 9: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Formato Geral das Mensagens

O mesmo formato geral é utilizado tanto para requisições quanto para respostas.

messageType

requestId

objectReference

methodId

arguments

int (0=Request, 1= Reply)

int

RemoteObjectRef

int or Method

array of bytes

Page 10: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Passagem de Parâmetros em RMI

Diferença entre passagem por referência e passagem por valor.Há várias formas de se determinar o tipo de passagem a ser usado

(e.g., em Java, objetos do tipo Remote são sempre passados por ref.)

2-18

Page 11: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Um Modelo para Implementação de RMI

(Compare com o modelo de implementação de RPC.)

object A object BRequestproxy for B

Reply

CommunicationRemote Remote referenceCommunication module modulereference module module

remoteclient server

skeletonfor B’sclassdi

spat

cher

Page 12: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

RMI Estática vs. RMI Dinâmica• Chamada estática de métodos remotos

– a interface do objeto remoto é compilada para gerar um proxy específico

– o cliente é programado para utilizar o proxy– Ex.: result = object1.method1(param1, param2);

• Chamada dinâmica de métodos remotos– a chamada é construída em tempo de execução– o cliente pode ser genérico

• independente de quais interfaces utilizará• pode descobrir as interfaces em tempo de execução

– o proxy (stub cliente) é genérico– Ex.: invoke(object, method, input_params, output_params)

Page 13: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Semântica de Chamadas Remotas• At-most-once

– a chamada é executada (no servidor) 0 ou 1 vez• At-least-once

– a chamada é executada pelo menos uma vez• mas pode ser executada várias vezes

• Best-effort– a chamada pode ou não ser executada

• i.e., 0 ou mais vezes

• Exactly once– a chamada é sempre executada uma e somente uma vez

Page 14: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Modelos de Objetos Distribuídos

Atualmente, cada sistema de middleware adota um modelo de objetos distribuídos particular.

Mas alguns conceitos são comuns.

No futuro, sistemas de middleware tenderão a ser independentes de modelo.

Mas, por enquanto, precisamos de algum modelo de objetos canônico, definido em conjunto com o middleware

• representativo de qualquer modelo de objetos distribuído conhecido• veja a seguir...

Page 15: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Conceitos Utilizados na Definição de um Modelo de Objetos Distribuídos

• Interfaces• Tipos

• Classes• Templates

• Modelos de Interação

• Definições no Modelo de Referência para Processamento Distribuído Aberto da ISO

ISO RM-ODP

Page 16: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Características de Objetos

Interfaces– Objetos podem interagir apenas através de interfaces

bem definidas

Referência de Interface– Uma ou mais referências para identificação do objeto,

através de sua(s) interface(s)

Ciclo de vida– Objetos são criados e posteriormente destruídos

(explícita ou implicitamente)

Page 17: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Interfaces de um Objeto

• Um objeto pode ter várias interfaces• Permitem abstrair a implementação interna do objeto

• Múltiplas visões ou formas de acesso ao mesmo objeto– Para uso por clientes diferentes

ObjetoInterfaceFuncional

Interface de Gerenciamento

Exemplo:

Page 18: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Especificação de Objetos

TemplateDescrição completa das características de um objeto

– Interfaces e implementação

Contém tudo o que é necessário para criar um objeto de um certo tipo

– Um modelo ou fôrma para criação de objetos

Ex.: classes em Java e C++

Page 19: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Tipos e Classes em RM-ODP

Tipo• Predicado definindo as propriedades de um ou mais objetos

• Dois objetos são do mesmo tipo sse o predicado é verdadeiro para ambos

• Geralmente, pode ser expresso em termos das interfaces que um objeto oferece

• Define o serviço oferecido por um objeto

ClasseConjunto de objetos do mesmo tipo

Page 20: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Tipos e Classes em RM-ODP

PredicadoÉVermelho: O → {V,F}

Tipo Vermelhoobj é do tipo Vermelho

ÉVermelho(obj) = V

Classe Vermelho{obj | ÉVermelho(obj)=V}

Conjunto de objetos O

Classe Vermelho

Templates

instanciação

Page 21: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Sub-tipos e Sub-classesC1, C2

C1 é subclasse de C2 C1 C2

T1, T2

T1 é um sub-tipo de T2 P(T1) => P(T2)

onde P(T) denota o predicado que define o tipo T

Page 22: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Sub-tipos e Sub-classesSub-classes e sub-tipos são conceitos relacionados

Podem ser usados para formar hierarquias

Predicados

ÉVermelho

ÉQuadradoVermelho

T2

T1

C2

C1

define

define

sub-tipo de

Tipos

Classes

Page 23: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Herança em Sistemas Distribuídos Herança de ImplementaçãoTemplate definido em termos

de um ou mais templates base

– O código do objeto pode não estar todo localizado no mesmo lugar

– Pode precisar ser fazer acesso remoto ao código (download) antes de executar algum método

– Problemas de desempenho que podem tornar este tipo de mecanismo impróprio para uso em sistemas distribuídos

Herança de InterfaceA interface de um objeto pode ser definida como extensão de uma ou mais interfaces base

– Apenas a definição do tipo é envolvida – a implementação continua local

– Permite implementar sub-tipagem

– Permite explorar polimorfismo

– Seu uso é bastante vantajoso em sistemas distribuídos

– Pois permite o uso de serviços equivalentes (embora não idênticos)

Page 24: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Modelos de Interação entre Objetos

Três tipos de interaçãoOperações

FluxosSinais

Page 25: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

OperaçõesPadrão de interação do tipo cliente / servidor

– Cliente requisita a um objeto servidor a realização de alguma operação

– Servidor processa a requisição

– Servidor pode retornar um resultado (resposta)

Objetos envolvidos podem assumir dois papéis distintos: cliente ou servidor

Page 26: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Operações: Interrogações

Operações com resposta

Requisição

Resposta

ObjetoCliente

ObjetoServidor

Page 27: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Operações: Anúncios

Operações sem resposta

Requisição

ObjetoCliente

ObjetoServidor

Page 28: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

FluxosPadrão para interações em que:

– Há um fluxo contínuo de unidades de dados entre dois ou mais objetos

– Com relacionamento temporal entre as unidades de dados transmitidas

– Modelo mais adequado à transferência de dados baseados em mídias contínuas (i.e., com dependência temporal)

• Ex.: áudio e vídeo

Objetos podem assumir dois papéis: produtor e/ou consumidor

Page 29: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Fluxos

Unidades de dados

ObjetoProdutor

ObjetoConsumidor

Page 30: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Sinais

ObjetoEmissor

ObjetoReceptor

Emissão deSinal

Recepção deSinal

Uma forma de interação mais primitiva– Permite que um objeto sinalize a outro objeto a

ocorrência de um evento– Outras formas de interação podem ser construídas como

uma série de sinais coordenados

Page 31: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Uma Consideração Final sobre o Conceito Fundamental de Objeto Distribuído

Implementação Distribuída dos objetos•Estado distribuído•Código distribuído

Implementação Centralizada e Interfaces Remotas

•Estado e código localizados no mesmo processo

•Interfaces localizadas junto aos clientes

Processo1

Processo2

Máquina A Máquina B

Estado do Objeto

Código dos Métodos

Máquina A Máquina B

Objeto

Proxy

Cliente

InterfaceRemota

Modelo mais utilizado em sistemas de middleware de uso prático

Modelo utilizado em sistemas de middleware experimentais.

•Especialmente aqueles que empregam algum modelo de composição de

componentes (em lugar de objetos convencionais)

Page 32: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Java RMI

• Modelo de objetos distribuído integrado como parte linguagem Java

• Dependente de linguagem• Independente de SO, hardware, rede

• Duas categorias de objetos: locais e remotos– Muito parecidos, mas com algumas diferenças

fundamentais decorrentes da distribuição

Page 33: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Diferenças entre Objetos Locaise Objetos Remotos

Clonagem de objetos• Pode-se criar uma cópia idêntica de um objeto, mas esta não será

imediatamente acessível aos clientes do objeto original• i.e., a referência de objeto (ou o proxy) não é clonado – é necessário

um novo binding

Semântica de bloqueio na chamada de métodos declarados como synchronized

• o bloqueio deveria ocorrer no proxy, antes da chamada – muito complexo, não implementado

• bloqueio no servidor é problemático, pois um cliente que ganha acesso ao método e, em seguida, falha nunca liberará o acesso para

outros objetos

Page 34: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Características de Java RMI

Passagem de parâmetros• Qualquer objeto, primitivo ou não, pode ser passado

como parâmetro– a classe do objeto precisa ser declarada como serializable

– exceções: descritores de arquivos e sockets• Objetos locais são passados por valor

• Objetos remotos são passados por referência– a referência de objeto (proxy) é passada por valor!

Page 35: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Modelo em Camadas de Java RMI

O proxy contém todo o “conhecimento” específico necessário para fazer chamadas a um objeto remotoEm Java, basta serializá-lo e enviá-lo no lugar da

própria referência de objeto!!!

Programa Cliente

Camada deReferências Remotas

Proxy

Camada de Transporte

Programa Servidor

Camada deReferências Remotas

Skeleton

Camada de TransporteA Internet

Caminho lógicode comunicação

Page 36: Comunicação Objetos Distribuídos e RMI - inf.ufg.brfmc/SD2005/Cap2b.pdf · – o proxy (stub cliente) é genérico – Ex.: invoke(object, method, ... Processamento Distribuído

Próxima Parte...

Middleware Orientado a Mensagens