Actualizado el 21 de Marzo del 2018 (Publicado el 6 de Marzo del 2018)
1.444 visualizaciones desde el 6 de Marzo del 2018
177,6 KB
31 paginas
Creado hace 23a (04/03/2002)
Middleware
] Introducción
] Representación externa de datos y empaquetado
] Protocolos de petición respuesta
] Comunicación en grupo
] Comunicación entre objetos distribuidos
] Llamada a un procedimiento remoto
] Eventos y notificaciones
] Caso de estudio: Java RMI
USAL-DIA
Ampliación de Sistemas Operativos 3.1
Introducción: capas de middleware
Aplicaciones, servicios
RMI y RPC
Protocolo petición-respuesta
Capas de
0LGGOHZDUH
Empaquetado y representación externa de datos
UDP y TCP
USAL-DIA
Ampliación de Sistemas Operativos 3.2
1
Representación externa de datos y empaquetado (I)
] “Aplanado” de estructuras de datos
\ Estructura de datos (programas en ejecución) Î Secuencia de bytes
(mensajes)
] Problemas
\ Estructuras con distintos tipos de datos primitivos
\ Representación de números en coma flotante
\ Códigos para representar caracteres (ASCII, Unicode)
\ Ordenación de números enteros (big-endian, litte-endian)
USAL-DIA
Ampliación de Sistemas Operativos 3.3
Representación externa de datos y empaquetado (II)
] Posibilidades
\ Los valores se convierte a un formato externo acordado antes de la
transmisión y se revierten al formato local en la recepción
\ Los valores se transmiten según el formato del emisor, junto con una
indicación del formato utilizado, y el receptor los convierte si es necesario
] Representación externa de los datos
\ Estándar acordado para la representación de estructuras de datos y valores
primitivos
] Empaquetado (PDUVKDOOLQJ)
\ Tomar una colección de ítemes de datos y ensamblarlos de un modo
adecuado para la transmisión de un mensaje
] Desempaquetado (XQPDUVKDOOLQJ)
\ Generar lo valores primitivos desde la representación de datos externa y
reconstruir las estructuras de datos
USAL-DIA
Ampliación de Sistemas Operativos 3.4
2
Posibilidades de rep. ext. datos y empaquetado
] XDR
\ eXternal Data Representation
\ RFC1832
\ Sun NFS
] CORBA CDR
\ Common Data Representation
\ Definido en CORBA 2.0
\ Object Management Group (OMG)
] Serialización de objetos en Java RMI
\ Java Object Serializacion Specification
USAL-DIA
Ampliación de Sistemas Operativos 3.5
Tipos en CORBA CDR
] Puede representar todos los tipos de datos que se pueden
utilizar como argumentos o como resultados en las
invocaciones remotas de CORBA
\ Tipos primitivos
[ Short (16 bits), long (32 bits), unsigned short, unsigned long, float (32
bits), double (64 bits), char, boolean, octet (8 bits) y any
\ Tipos compuestos
7LSR
VHTXHQFH
VWULQJ
DUUD\
VWUXFW
HQXPHUDWHG
XQLRQ
5HSUHVHQWDFLyQ
longitud (unsigned long-entero largo sin signo-) seguida de los elementos en
orden.
longitud (unsigned long) seguida de los caracteres en orden (también puede
tener caracteres anchos-2bytes-).
elementos de la cadena en orden (no se especifica la longitud porque es fija).
en el orden de declaración de los componentes.
unsigned long (los valores son especificados por el orden declarado).
etiqueta de tipo seguida por el miembro seleccionado.
USAL-DIA
Ampliación de Sistemas Operativos 3.6
3
Mensaje CDR CORBA
3RVLFLyQ HQODVHFXHQFLD
GHE\WHV
4 bytes
0–3
4–7
8–11
12–15
16–19
20-23
24–27
5
"Pére"
"z___"
6
"Madr"
”id__"
1934
1RWDVVREUH
ODUHSUHVHQWDFLyQ
/RQJLWXG GHOVWULQJ
<<3pUH]>>
/RQJLWXG GHOVWULQJ
<<0DGULG¶>>
8QVLJQHGORQJ
La forma aplanada representa una estructura 3HUVRQD con el valor: { <<Pérez>>, <<Madrid>>, 1934}
USAL-DIA
Ampliación de Sistemas Operativos 3.7
Empaquetado en CORBA: IDL
] Generación automática del empaquetado a partir de las
especificaciones de los tipos de datos de los ítemes que
tienen que ser transmitidos en un mensaje
] CORBA IDL (Interface Definition Language)
struct Persona
string nombre;
string lugar;
long año;
};
] Interfaz del compilador CORBA
USAL-DIA
Ampliación de Sistemas Operativos 3.8
4
Serialización de objetos en Java (I)
] En Java RMI, tanto los objetos como los datos primitivos
pueden ser pasados como argumentos y resultados de la
invocación de métodos
] Objeto = instancia de una clase Java
public class Persona implements Serializable {
private String nombre;
private String lugar;
private int año;
public Persona(String unNombre, String unLugar, int unAño) {
nombre = unNombre;
lugar = unLugar;
año = unAño;
};
USAL-DIA
Ampliación de Sistemas Operativos 3.9
Serialización de objetos en Java (II)
] Serialización
\ Consiste en “aplanar” un objeto o un conjunto relacionado de objetos
para obtener una forma lineal adecuada para ser almacenada en
disco o para ser transmitida en un mensaje, por ejemplo como
argumento o resultado de un RMI
] Deserialización
\ Consiste en restablecer el estado de un objeto o un conjunto de
objetos desde su estado lineal
USAL-DIA
Ampliación de Sistemas Operativos 3.10
5
Serialización de objetos en Java (III)
Persona p = new Persona(“Pérez”, “Madrid”, 1934);
Resultado simplificado
9DORUHVVHULDOL]DGRV
Persona
3
Número de versión de 8-bytes
java.lang.String
nombre:
int año
1934
5 Pérez
6 Madrid
java.lang.String
lugar:
([SOLFDFLyQ
1RPEUH GHODFODVHQ~PHUR
GHYHUVLyQ
1~PHURWLSR \QRPEUH GHODV
YDULDEOHVGHLQVWDQFLD
9DORUHV GHODV YDULDEOHVGH
LQVWDQFLD
(cid:127) Serialización
(cid:127) Crear una instancia de la clase ObjectOutputStream
(cid:127) Invocar al método writeObject, pasando Persona como argumento
(cid:127) Deserialización
(cid:127) Crear una instancia de la clase ObjectInputStream
(cid:127) Invocar al método readObject
USAL-DIA
Ampliación de Sistemas Operativos 3.11
Protocolo petición-respuesta (I)
&OLHQWH
6HUYLGRU
KD]2SHUDFLRQ
(espera)
(continuación)
0HQVDMH
SHWLFLyQ
0HQVDMH
UHVSXHVWD
GDPH3HWLFLRQ
ejecución del
método sobre
el objeto
seleccionado
HQYLD5HVSXHVWD
USAL-DIA
Ampliación de Sistemas Operativos 3.12
6
Protocolo petición-respuesta (II)
SXEOLFE\WH>@KD]2SHUDFLRQ 5HPRWH2EMHFW5HI RLQWLG0HWRGRE\WH>@DUJXPHQWRV
envía un mensaje de petición al objeto remoto y recibe la respuesta.
Los argumentos especifican el objeto remoto, el método a invocar y los
argumentos de ese método.
SXEOLFE\WH>@GDPH3HWLFLRQ
adquiere una petición del cliente a través del puerto del servidor.
SXEOLFYRLGHQYLD5HVSXHVWDE\WH>@UHVSXHVWD,QHW$GGUHVVKRVW&OLHQWHLQWSXHUWR&OLHQWH
envía el mensaje de respuesta al cliente a su dirección de Internet y a su puerto.
tipoMensaje
idPeticion
referenciaObjeto
idMetodo
argumentos
LQW 3HWLFLyQ 5HVSXHVWD
LQW
5HPRWH2EMHFW5HI
LQW R0HWKRG
FDGHQD GHE\WHV
USAL-DIA
Ampliación de Sistemas Operativos 3.13
Modelo de fallos del protocolo petición-respuesta (I)
] Tiempo de espera límite
] Eliminación de mensajes de petición duplicados
] Pérdida de mensajes de respuesta
] Historial
USAL-DIA
Ampliación de Sistemas Operativos 3.14
7
Modelo de fallos del protocolo petición-respuesta (II)
USAL-DIA
Ampliación de Sistemas Operativos 3.15
Modelo de fallos: idempotencia
] Operación idempotente
\ Operación que puede ser llevada
a cabo repetidamente con el
mismo efecto que si hubiera sido
ejecutada exactamente una sola
vez
USAL-DIA
Ampliación de Sistemas Operativos 3.16
8
Modelo de fallos: historial
] Historial o histórico
\ Estructura que contiene el
registro de los mensajes de
respuesta que han sido
transmitidos
\ El propósito es permitir que el
servidor pueda retransmitir los
mensajes de respuesta cuando
los clientes lo soliciten
\ Problemas del coste de
almacenamiento
USAL-DIA
Ampliación de Sistemas Operativos 3.17
Semánticas de invocación
0HGLGDVGHWROHUDQFLDDIDOORV
6HPiQWLFDV
GHLQYRFDFLyQ
5HWUDQVPLVLyQGH
PHQVDMHGHSHWLFLyQ
)LOWUDGR
GHGXSOLFDGRV
5HHMHFXFLyQGHOSURFHGLPLHQWR
RUHWUDQVPLVLyQGHODUHVSXHVWD
No
Sí
Sí
No procede
No procede
3XGLHUDVHU
No
Sí
Reejecutar el procedimiento
$OPHQRVXQDYH]
Retransmitir respuesta &RPRPi[LPRXQDYH]
USAL-DIA
Ampliación de Sistemas Operativos 3.18
9
Protocolos de intercambio de RPC: R
] Protocolo de petición (R: UHTXHVW)
] P.ej. RPCs asíncronas
] Semántica “pudiera ser”
USAL-DIA
Ampliación de Sistemas Operativos 3.19
Protocolos de intercambio de RPC: RR
] Protocolo de petición-respuesta
(RR: UHTXHVWUHSO\)
] Programación de WLPHRXWV y
reintentos
] Semántica “al menos una vez”, si
no se filtran los reintentos
] Semántica “como máximo una
vez” si se filtran los reintentos
USAL-DIA
Ampliación de Sistemas Operativos 3.20
10
Protocolos de intercambio de RPC: RRA
] Protocolo de petición-respuesta
(RRA: UHTXHVWUHSO\
DFNQRZOHGJHPHQW UHSO\)
] Semántica “como máximo una
vez”
] Útil para gestión de historial
USAL-DIA
Ampliación de Sistemas Operativos 3.21
Comunicación en grupo
Comentarios de: Middleware (0)
No hay comentarios