Publicado el 21 de Enero del 2019
844 visualizaciones desde el 21 de Enero del 2019
492,1 KB
25 paginas
’HVDUUROORGH$SOLFDFLRQHV
FRQ-DYD50,
/DERUDWRULRGH,QJHQLHUtDGHO6RIWZDUH
&RQWHQLGR
• Antecedentes
•
•
Introducción a los Sistemas Distribuidos
– Sockets
– RPC
Java RMI
– Características
– Modelo de Objetos Distribuidos
– Visión del Sistema RMI
– Arquitectura RMI
– Pasos para desarrollar aplicaciones en RMI
– Ejemplos:
• P1) Cronometrar transferencia de datos
• P2) Cliente Descarga Códigos de un servidor
• P3) P2 + Polimorfismo y Sobrecarga
1
8QSRFRGHKLVWRULD
a
a
•
James Gosling, Patrick Naughton y Mike Sheridan
... (First Person Inc.)
http://java.sun.com/people/jag/index.html
................ 2$. ................ -$9$
• Sun Microsystems
........ Sistemas Distribuidos: CORBA
“A Note on Distributed Computing”
http://www.sunlabs.com/technical-reports/1994/abstract-29.html
¢ 4Xp EXVFDED681"
• Las diferencias entre la computación local y la
computación distribuida.
• En el caso de CORBA, “no existe” diferencia.
• SUN concluyó que los sistemas distribuidos deben tratar
de forma diferente a los objetos locales y a los remotos:
• Latencias
• Fallos en las comunicaciones
• Concurrencia
• Acceso a memoria
2
6LVWHPDV’LVWULEXLGRV
• Los sistemas distribuidos requieren la ejecución de
tareas en diferentes máquinas con capacidad de
comunicarse entre ellas.
• Desarrollo de Sistemas Distribuidos:
• Sockets
• Remote Procedure Calls (RPC)
• Remote Method Invocation (RMI)
6RFNHWV
• Permite las comunicaciones entre dos máquinas con IP.
• Existen varias alternativas:
– UDP
– TCP
– Java ..... Buffered, Typed, etc.
• Es necesario un protocolo sincronizado entre cliente y servidor
DEPENDIENTE de cada aplicación.
• Requiere gran cantidad de operaciones a la hora de un simple
intercambio de datos.
3
6RFNHWV
%!&
%
$
(
(
Envía datos al cliente
sesión TCP
Espera
nuevo
cliente
Envía datos al servidor
Cliente
&%"%
!"
$
#
Servidor
nuevo thread
!"
$
#
5HPRWH3URFHGXUH &DOO 53&
• Las RPC permiten la abstracción del sistemas de comunicaciones
a una simple llamada a un procedimiento.
• En lugar de trabajar con VRFNHWV, el programador cree que está
haciendo llamadas a métodos locales. Los parámetros de las
llamadas son empaquetados y enviados al destino.
• RPC utiliza la codificación XDR el envío y recepción de los datos.
• Principal inconveniente: NO ORIENTADO A OBJETOS
)
4
#
'
5HPRWH3URFHGXUH &DOO 53&
&OLHQWH
*&+
-.0/
23
@AB
C DE F
GH
LNM"O
P"QSRUT
V"W
R"W"XY
M&Z&VW
-07:7-<;08 =>2.,
;0?0;,
8 .-
6HUYLGRU
EHIJ
AK GH
4-5
6,
78 5
23
¢ 4Xp HV-DYD50,"
• Es una especificación desarrollada por JavaSoft desde la
implementación del JDK 1.1
– Permite la ejecución de métodos localizados en objetos remotos que a su
vez se ejecutan en una máquina virtual Java diferente.
– La invocación de métodos no es más que paso de mensajes.
Cliente
Servidor
Máquina Virtual Java
r e d
Máquina Virtual Java
[
5
,
-
1
/
1
/
9
1
B
B
F
O
O
T
&DUDFWHUtVWLFDVGH50,
• Orientado a Objetos: Java.
• Permite la invocación de métodos de objetos remotos Java entre
diferentes máquinas virtuales.
•
Incorpora el modelo de objetos distribuido en el modelo Java
manteniendo su semántica.
• Uso de las APIs de Java, con todas sus posibilidades.
• Permite un desarrollo sencillo de las aplicaciones distribuidas.
• Permite que un DSSOHW pueda llamar a un programa Java en el
servidor.
• Mantiene el esquema de seguridad de Java.
0RGHORGH2EMHWRV’LVWULEXLGRV50,
• Aplicaciones de Objetos Distribuidos:
– Servidor:
– Crear objetos
– Permitir referencias a ellos
– Esperar por peticiones de los clientes
– Cliente:
– Obtener referencia a los objetos remotos
– Invocar a los métodos de los objetos remotos
• RMI ofrece el mecanismo de comunicaciones para el paso de
información entre el cliente y el servidor
0
0
0
6
0RGHORGH2EMHWRV’LVWULEXLGRV50,
• Las aplicaciones de Objetos Distribuidos requieren:
– Localizar objetos remotos:
– El servidor debe registrar el objeto remoto para que los
clientes obtengan sus referencias.
– Comunicarse con objetos remotos:
– El sistema RMI lleva a cabo todas las comunicaciones
existentes en las llamadas y retornos de resultados entre
cliente y servidor.
– Cargar los bytecodes de las clases de los objetos que son
pasados como argumentos o devueltos como resultados.
– Liberar objetos no referenciados a través del JDUEDJH
FROOHFWRU distribuido.
– Excepciones nuevas: “Remote Exception”
9LVLyQGHOVLVWHPD50,
2 5
0 ,
registry
0 ,
5
1
Cliente
3
5
0 ,
5/\
8
Servidor web
Servidor
85/]
Servidor web
0
0
7
$UTXLWHFWXUDGHO6LVWHPD50,
Cliente
resultados=obj.metodo(parametros)
UHVXOWDGRV
SDUiPHWURV
Servidor
Stub
`
%
ab
% $"(
c"dfeg
Esqueleto
`
%
ab
% $"(
c"dfeg
^
0
Arquitectura:........&DSDVWXE \HVTXHOHWR
Cliente
Servidor
Stub
Esqueleto
• Características:
de una serialización.
– Los objetos se transmiten entre emisor y receptor a través
– El VWXE implementa la inicialización de la llamada a la capa
de referencia remota, la serialización de los argumentos del
método remoto llamado y la deserialización de los
resultados.
– El esqueleto cumple la función complementaria para el
programa servidor responsable del objeto.
• El compilador UPLF genera tanto el VWXE como el esqueleto a
partir de la definición del objeto en el programa fuente Java.
0
8
_
_
_
_
c
h
e
c
h
e
i
j
k
j
l
j
m
n
o
p
i
j
q
r
s
p
i
j
k
j
l
j
m
n
o
p
i
j
q
r
s
p
t
l
p
m
u
v
r
l
s
j
t
w
x
y
z
x
t
l
p
m
u
v
r
l
s
j
t
w
x
y
z
x
{
|
}
~
}
}
|
Arquitectura:........&DSDGH5HIHUHQFLD5HPRWD
Cliente
Servidor
Stub
Esqueleto
• Responsable de los detalles de transmisión de la llamada a los
métodos remotos.
•
Implementa varios protocolos de comunicaciones. Estos
permiten:
– Invocación punto a punto.
– Invocación a un grupo de objetos.
– Soporte de persistencia y activación de objetos remotos en
el servidor.
– Estrategias de Recuperación de conexión.
0
Arquitectura:........&DSDGH7UDQVSRUWH
Cliente
Servidor
Stub
Esqueleto
• La capa de transporte se encarga de crear y mantener las
conexiones existentes entre las capas de referencia de
diferentes máquinas virtuales Java.
• Además mantiene las tablas de correspondencias entre
máquinas virtuales y objetos disponibles en una dirección
URL dada.
)
0
9
i
j
k
j
l
j
m
n
o
p
i
j
q
r
s
p
i
j
k
j
l
j
m
n
o
p
i
j
q
r
s
p
t
l
p
m
u
v
r
l
s
j
t
w
x
y
z
x
t
l
p
m
u
v
r
l
s
j
t
w
x
y
z
x
{
|
}
~
}
}
|
i
j
k
j
l
j
m
n
o
p
i
j
q
r
s
p
i
j
k
j
l
j
m
n
o
p
i
j
q
r
s
p
t
l
p
m
u
v
r
l
s
j
t
w
x
y
z
x
t
l
p
m
u
v
r
l
s
j
t
w
x
y
z
x
{
|
}
~
}
}
|
3DVRVSDUDHVFULELUDSOLFDFLRQHVFRQ-DYD50,
0
^
^
0
N
<
^U
0
0U0^
N
0
<
N
^
^
0
0
0^
±²U³<²
§
¨ª©
0^
^¢^¢£
¬0
^¢^¢£
¢¯¬0
^
^¢^¢£
0
0
^¢^¢£
0
,QVWUXFFLRQHVSDUD&203,/
¶ $5ODVDSOLFDFLRQHV
• Compilar Interfaz, Implementación, Servidor y Cliente:
MDYDF PL,QWHUID]MDYD PL,PSOMDYD PL&OLHQWHMDYD PL6HUYMDYD
• Crear el VWXE y el esqueleto:
UPLF PL,PSO
Cliente
Servidor
Stub
Esqueleto
µ
0
10
¡
¤
¡
¥
¤
¦
«
¡
®
¡
°
«
´
i
j
k
j
l
j
m
n
o
p
i
j
q
r
s
p
i
j
k
j
l
j
m
n
o
p
i
j
q
r
s
p
t
l
p
m
u
v
r
l
s
j
t
w
x
y
z
x
t
l
p
m
u
v
r
l
s
j
t
w
x
y
z
x
{
|
}
~
}
}
|
,QVWUXFFLRQHVSDUD(-(&87$5ODVDSOLFDFLRQHV
• Ejecutar el servicio de registro de objetos:
VWDUW UPLUHJLVWU\ (windows),
UPLUHJLVWU\ (unix)
• Ejecutar servidor:
MDYD’MDYDVHFXULW\SROLF\ PLMDYDSROLF\ PL6HUY
• Ejecutar cliente:
MDYDPL&OLHQWH
miCliente
2
º0»
3¹
º0»
rmiregistry
º0»
1
miServidor
Servidor web
Servidor web
·0¸
0
6HJXULGDGHQ50,
• Directiva a la máquina virtual ‡’MDYDVHFXULW\SROLF\· indicando el
fichero con la política de seguridad: ‡PLMDYDSROLF\·
• Ejemplos de fichero de seguridad:
grant {
// permitir todo
permission java.security.AllPermission;
};
grant {
permission java.net.SocketPermission "*:1024-65535","connect, accept";
permission java.net.SocketPermission "*:80", "connect";
}
·
0
11
¹
¹
¼
¹
½
¾
¿
À
(MHPSORV3UiFWLFRV
30HGLUWLHPSRVHQWUDQVIHUHQFLDGHGDWRV
3&OLHQWHGHVFDUJDFyGLJRVGHXQVHUYLGRU
333ROLPRUILVPR\6REUHFDUJD
·0·
0
30HGLUWLHPSRVHQWUDQVIHUHQFLDGHGDWRV
• 2%-(7,92
– Transferencia de datos entre dos ordenadores haciendo uso
de RMI.
• 3$626:
– Crear el servicio para el cliente ---> interfaz
– Implementar los servicios ---------> implements ...
– Crear el servidor
– Crear e
Comentarios de: Desarrollo de Aplicaciones con Java RMI (0)
No hay comentarios