Académique Documents
Professionnel Documents
Culture Documents
Introduccin
Protocolos Request Reply
Llamadas a Procedimientos Remotos (RPC)
Invocacin a Mtodos Remotos
Ejemplo: Java RMI
Applications
Remote invocation, indirect communication
Underlying interprocess communication primitives:
Sockets, message passing, multicast support, overlay networks
UDP and TCP
Invocacin Remota,
Mcomunicacin indirecta
Capas
Intermedia
Sncrono
Reconocimientos redundante ya que cada solicitud es
seguido de una respuesta
Establecer una conexin involucar dos pares de mensajes
adems del par solicitud-respuesta
Control del flujo es redundante para la mayora de las
invocaciones, que contienen argumentos pequeos y
respuestas a ellos.
doOperation
Server
Request
message
(wait)
(continuation)
Reply
message
Protocolo Request-reply:
Sncrona: Cliente se bloquea hasta que recibe respuesta
Puede usar TCP o UDP. Para ello pesa
+ Redundancia por reconocimiento
+ Pares de mensajes adicionales por request / reply
+ Redundancia por Control de Flujo
getRequest
select object
execute
method
sendReply
messageType
requestId
int
remoteReference
RemoteRef
operationId
int or Operation
arguments
array of bytes
Nombre
Server
Request
RR
Request
Reply
RRA
Request
Reply
Client
Acknowledge reply
Con UDP:
R: No se espera por respuesta. Se implementa sobre UDP
RR: se basa en el protocolo resquest y reply pero sin los mensajes de reconocimiento
Para UDP sirve para superar su modelo de falla (en cuanto a retransmisin de mensaje)
RR A: solicitud-respuesta- confirmacin.
- No se bloquea el cliente.
- confirmacin contiene el requestId de la solicitud / - Limpiar historial del servidor
TCP: Simplifica la implementacin
method
URL or pathname
GET
//www.dcs.qmw.ac.uk/index.html
HTTP version
HTTP/ 1.1
HTTP version
HTTP/1.1
OK
resource data
Instructors Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
Pearson Education 2012
RPC:
Representa un gran aporte a los sistemas
distribuidos al proporcionar un nivel alto de
transparencia en la distribucin
Extiende la abstraccin de llamadas a
procedimientos para ambientes distribuidos
// In file Person.idl
struct 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();
};
Duplicate
filtering
Call
semantics
Re-execute procedure
or retransmit reply
No
Not applicable
Not applicable
Maybe
Yes
No
Re-execute procedure
At-least-once
Yes
Yes
Retransmit reply
At-most-once
Tal- vez: aplicaciones donde fallas son aceptables (fallas por omisin o caidas)
al-menos-una: el invocador recibe al menos un resultado (respuesta o excepcin).
Fallas por caidas o arbitrarias(el servidor responde a varias retransmisiones)
servidores idempotentes
como-mximo-una: se asegura que una solicitud sea respondida
client process
server process
Request
client
program
client stub
procedure
Communication
module
Reply
server stub
procedure
Communication
dispatcher
module
service
procedure
struct readargs {
FileIdentifier f;
FilePointer position;
Length length;
};
no.procedimiento
program FILEREADWRITE {
version VERSION {
void WRITE(writeargs)=1;
1
Data READ(readargs)=2;
2
}=2;
version
} = 9999;
no.programa
Autenticacin
Solicitudes del cliente contienen las credenciales del usuario cliente
Campo cabecera se identifica que protocolo se usa
Protocolos: Ninguno, Unix, clave compartida, Kerberos
Unix: usa un gid y uid
remote
invocation
A
C
local E
invocation
invocation
local
invocation
D
remote
invocation
remoteobject
remote
interface
Data
m1
m2
m3
implementation
of methods
m4
m5
m6
Interfaz Remota:
- Accin: se inica al invocar un mtodo (*).
- Recolector de basura Distribuido: cooperacin entre el colector local y un
mdulo aadido que colecciona la basura distribuida
- Excepciones: manejo de errores en la distribucin del objeto (timeouts) y
ejecucin de mtodos invocados
Invocacin Dinmica
proporciona al cliente acceso a una representacin genrica de una invocacin remota (con
el mtodo doOperation).
El cliente proporciona una referencia al objeto remoto, el nombre del mtodo y los
argumentos al operador doOperation, espera y recibe resultado
Una alternativa para interfaces que no pueden predecirse en el diseo. Ejm: JAVA RMI
Esqueletos Dinmicos
como consecuencia, el servidor tien interfaces no conocidas en tiempo de compilacin
Mtodos Factory
las interfaces a objetos remotos no tienen constructores. Los CRIADOS se crean cuando se
inicializa o en mtodos diseado para tal fin.
Los Mtodos Factory se llaman a aquellos que crean CRIADOS
Enlazador:
es un servicio separado que mantiene una tabla que mantiene la correspondencia entre el
nombre textual y las referencias a objetos remotos
Hilos del Servidor
Asignacin:
Caso de Estudio Java RMIA continuacin tienen los algoritmos que se usan para
la implementacin de Java-RMI. Explicar como
opera Java-RMI
Explique que es la Reflexin
Conteste los ejercicios:
5.1, 5.2, 5.3, 5.5, 5.6, 5.7, 5.8, 5.9. 5.10, 5.11, 5.12,
5.22, 5.23, 5.24
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;
}
Instructors Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
Pearson Education 2012
Instructors Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
Pearson Education 2012
import java.rmi.*;
public class ShapeListServer{
public static void main(String args[]){
System.setSecurityManager(new RMISecurityManager());
try{
ShapeList aShapeList = new ShapeListServant();
Naming.rebind("Shape List", aShapeList );
System.out.println("ShapeList server ready");
}catch(Exception e) {
System.out.println("ShapeList server main " + e.getMessage());}
}
}
Instructors Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
Pearson Education 2012
1
2
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
private int version;
public ShapeListServant()throws RemoteException{...}
public Shape newShape(GraphicalObject g) throws RemoteException {
1
version++;
Shape s = new ShapeServant( g, version);
2
theList.addElement(s);
return s;
}
public Vector allShapes()throws RemoteException{...}
public int getVersion() throws RemoteException { ... }
}
Instructors Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
Pearson Education 2012
;
2
RemoteObject
RemoteServer
Activatable
UnicastRemoteObject
<servant class>
Instructors Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
Pearson Education 2012