UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de...
Transcript of UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICAfmc/DS-MSc2006/Aula09.pdf · Instituto de...
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
Instituto de Informática - UFG
Camadas do MiddlewareCamadas do Middleware
Applications
Middlewarelayers Request reply protocol
External data representation
Operating System
RMI, RPC and events
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
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
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();
};
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
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
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)
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
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.
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
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
Instituto de Informática - UFG
Instanciação de objetos remotos Instanciação de objetos remotos
C
NM
K
invocationremote
invocationremote
L
instantiate instantiate
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
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
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
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
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
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;
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
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
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;
}
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.
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());}}
}
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 { ... }}
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());}
}}
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