universidade federal de goiÁs instituto de informÁticafmc/ds-msc2006/aula09.pdf · instituto de...

27
UNIVERSIDADE FEDERAL DE GOIÁS UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA INSTITUTO DE INFORMÁTICA Sistemas Distribuídos Sistemas Distribuídos Mestrado em Ciência da Computação Mestrado em Ciência da Computação 1o. Semestre / 2006 Prof. Fábio M. Costa [email protected] www.inf.ufg.br/~fmc/DS-MSc2006 Aula 09: Middleware: Objetos Distribuídos e Chamadas Remotas

Upload: others

Post on 16-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

UNIVERSIDADE FEDERAL DE GOIÁSUNIVERSIDADE FEDERAL DE GOIÁSINSTITUTO DE INFORMÁTICAINSTITUTO DE INFORMÁTICA

Sistemas DistribuídosSistemas Distribuídos

Mestrado em Ciência da ComputaçãoMestrado em Ciência da Computação

1o. Semestre / 2006

Prof. Fábio M. [email protected]

www.inf.ufg.br/~fmc/DS-MSc2006

Aula 09: Middleware: Objetos Distribuídos e Chamadas Remotas

Page 2: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

Camadas do MiddlewareCamadas do Middleware

Applications

Middlewarelayers Request reply protocol

External data representation

Operating System

RMI, RPC and events

Page 3: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

InterfacesInterfaces

● Provê acesso às características externamente visíveis de um objeto ou módulo– métodos e variáveis

● Papel fundamental no encapsulamento● Em sistemas distribuídos: apenas métodos são

acessíveis através de interfaces● Passagem de parâmetros: copy-restore

– parâmetros de entrada e saída

– ponteiros não são permitidos

– objetos passados como parâmetros: ref. de objeto

Page 4: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

Linguagens de Definição de Interfaces (IDL)Linguagens de Definição de Interfaces (IDL)

● Sintaxe (e semântica associada) para a definição de:– operações e seus parâmetros e valores de retorno

– exceções

– atributos

– tipos primitivos e construídos (para os parâmetros e valores de retorno)

● Exemplos:– CORBA IDL

– DCOM IDL

Page 5: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

Exemplo de definição em CORBA IDLExemplo de definição em CORBA IDL

// In file Person.idlstruct Person {

string name; string place;long year;

} ;interface PersonList {

readonly attribute string listname;void addPerson(in Person p) ;void getPerson(in string name, out Person p);long number();

};

Page 6: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

Comunicação entre objetos distribuídosComunicação entre objetos distribuídos

● Modelo de objetos básico● Conceitos de objetos distribuídos● Extensões do modelo de objetos distribuídos● Questões de projeto● Implementação● Coleta de lixo distribuída

Page 7: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

Modelo de objetos básicoModelo de objetos básico

● Referências de objetos● Interfaces● Ações● Exceções● Coleta de lixo

Page 8: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

Objetos distribuídos: características Objetos distribuídos: características adicionaisadicionais

● Arquitetura típica: cliente-servidor● Encapsulamento mais estrito● Mais fácil garantir controle de acesso● Efeitos da concorrência● Uso de diferentes formatos de dados entre

cliente e servidor (transparentemente)

Page 9: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

Chamadas locais e remotasChamadas locais e remotas

invocation invocationremote

invocationremote

local

local

local

invocation

invocation

A B

C

D

E

F

Page 10: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

O modelo de objetos distribuídos: uma O modelo de objetos distribuídos: uma extensão ao modelo de objetos básicoextensão ao modelo de objetos básico

● Objetos remotos vs. objetos locais● Chamadas de métodos remotos (RMI)● Referência de objeto remoto

– funcionalmente semelhante a referências locais

– estruturalmente diferente: identificador válido em todo o sistema distribuído

● Interface remota– define os métodos remotamente acessíveis

– geralmente independente da linguagem de implem.

Page 11: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

Um objeto com interfaces local e remotaUm objeto com interfaces local e remota

interface

remote

m1m2m3

m4m5m6

Data

implementation

remoteobject

{ of methods

Page 12: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

O modelo de objetos distribuídos: uma O modelo de objetos distribuídos: uma extensão ao modelo de objetos básico (2)extensão ao modelo de objetos básico (2)

● Exemplos de ações:– requisição para executar alguma operação em um

objeto remoto

– obtenção de referências de objetos remotos

– instanciação de objetos remotos (através de fábricas)

● Coleta de lixo distribuída– requer contagem de referências explícita

– rastreamento de todas as referências trocadas

– pouco eficiente ou difícil de ser implementada

Page 13: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

Instanciação de objetos remotos Instanciação de objetos remotos

C

NM

K

invocationremote

invocationremote

L

instantiate instantiate

Page 14: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

O modelo de objetos distribuídos: uma O modelo de objetos distribuídos: uma extensão ao modelo de objetos básico (3)extensão ao modelo de objetos básico (3)

● Exceções– erros de aplicação: gerados pela lógica do servidor

– erros de sistema: gerados pelo middleware

– conduzidos de volta ao cliente sob a forma de mensagens

Page 15: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

Questões de projeto para RMIQuestões de projeto para RMI

● Semântica de chamadas– talvez executada

– executada pelo menos uma vez

– executada no máximo uma vez

● Transparência– ideal, mas não exatamente prática

● falhas parciais● latência

– sintaxe transparente, mas semântica explicitamente distinta

Page 16: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

Semântica de chamadas em RMISemântica de chamadas em RMI

Fault tolerance measures Invocation semantics

Retransmit request message

Duplicate filtering

Re-execute procedure or retransmit reply

No

Yes

Yes

Not applicable

No

Yes

Not applicable

Re-execute procedure

Retransmit reply At-most-once

At-least-once

Maybe

Page 17: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

Implementação de RMIImplementação de RMI

object A object BskeletonRequestproxy for B

Reply

CommunicationRemote Remote referenceCommunication

module modulereference module module

for B’s class

& dispatcher

remoteclient server

servant

Page 18: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

Implementação de RPCImplementação de RPC

client

Request

Reply

CommunicationCommunication

module module dispatcher

service

client stub

server stubprocedure procedure

client process server process

procedureprogram

Page 19: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

Exemplo de definição de interface em Sun Exemplo de definição de interface em Sun XDRXDR

const MAX = 1000;typedef int FileIdentifier;typedef int FilePointer;typedef int Length;struct Data {

int length;char buffer[MAX];

};struct writeargs {

FileIdentifier f;FilePointer position;Data data;

};

struct readargs {FileIdentifier f;FilePointer position;Length length;

};

program FILEREADWRITE { version VERSION {

void WRITE(writeargs)=1; 1Data READ(readargs)=2; 2

}=2;} = 9999;

Page 20: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

Eventos e notificações: ExemploEventos e notificações: Exemplo

Dealer’s computer

Informationprovider

Dealer

Externalsource

Externalsource

Informationprovider

Dealer

Dealer

Dealer

Notification

Notification

Notification

Notification

NotificationNotification

Notification

Notification

Dealer’s computer

Dealer’s computerDealer’s computer

NotificationNotification

Page 21: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

Arquitetura para notificação de eventos Arquitetura para notificação de eventos distribuídadistribuída

subscriberobserverobject of interest

Event service

object of interest

object of interest observer

subscriber

subscriber

3.

1.

2. notification

notification

notification

notification

Page 22: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

Java RMI: Exemplo de interfaceJava RMI: Exemplo de interface

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; 2Vector allShapes() throws RemoteException;int getVersion() throws RemoteException;

}

Page 23: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

Java RMI: a classe Java RMI: a classe NamingNaming do RMIregistry do RMIregistry

void rebind (String name, Remote obj) This method is used by a server to register the identifier of a remote object by name, as shown in Figure 15.13, line 3.

void bind (String name, Remote obj) This method can alternatively be used by a server to register a remote object by name, but if the name is already bound to a remote object reference an exception is thrown.

void unbind (String name, Remote obj) This method removes a binding.

Remote lookup(String name) This method is used by clients to look up a remote object by name, as shown in Figure 15.15 line 1. A remote object reference is returned.

String [] list() This method returns an array of Strings containing the names bound in the registry.

Page 24: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

Java RMI: Implementação do servidorJava RMI: Implementação do servidor

import java.rmi.*;public class ShapeListServer{

public static void main(String args[]){System.setSecurityManager(new RMISecurityManager()); try{

ShapeList aShapeList = new ShapeListServant(); 1 Naming.rebind("Shape List", aShapeList ); 2

System.out.println("ShapeList server ready"); }catch(Exception e) {

System.out.println("ShapeList server main " + e.getMessage());}}

}

Page 25: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

Java RMI: Implementação de objeto Java RMI: Implementação de objeto ((servantservant))

import java.rmi.*;import java.rmi.server.UnicastRemoteObject;import java.util.Vector;public class ShapeListServant extends UnicastRemoteObject implements ShapeList {

private Vector theList; // contains the list of Shapes 1 private int version;

public ShapeListServant()throws RemoteException{...}public Shape newShape(GraphicalObject g) throws RemoteException { 2

version++; Shape s = new ShapeServant( g, version); 3 theList.addElement(s); return s;

}public Vector allShapes()throws RemoteException{...}

public int getVersion() throws RemoteException { ... }}

Page 26: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

Java RMI: ClienteJava RMI: Cliente

import java.rmi.*;import java.rmi.server.*;import java.util.Vector;public class ShapeListClient{ public static void main(String args[]){

System.setSecurityManager(new RMISecurityManager());ShapeList aShapeList = null;try{

aShapeList = (ShapeList) Naming.lookup("//bruno.ShapeList") ; 1Vector sList = aShapeList.allShapes(); 2

} catch(RemoteException e) {System.out.println(e.getMessage());}catch(Exception e) {System.out.println("Client: " + e.getMessage());}

}}

Page 27: UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de Informática - UFG Interfaces Provê acesso às características externamente visíveis

Instituto de Informática - UFG

Classes que dão suporte a Java RMIClasses que dão suporte a Java RMI

RemoteServer

UnicastRemoteObject

<servant class>

Activatable

RemoteObject