Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Comunicación en sistemas
distribuidos (i):
del cliente/servidor al modelo de
objetos
Joan Vila
DISCA / UPV
Departament d’Informàtica de Sistemes i Computadors
Universitat Politècnica de València
Comunicación en sistemas distribuidos
Indice
Diseño Y Aplicaciones de
– Introducción
Sistemas Distribuidos
– El modelo cliente-servidor
– Llamadas a procedimientos remotos (RPC’s)
– El modelo de objetos distribuido
– La arquitectura CORBA
DYA
2
Introducción
p2 Escuchas
Difusor-Escucha
p1
Sistemas Distribuidos
receive p3
receive
receive
Cliente petición
Servidor p4
receive
Difusor
3
Introducción
4
Comunicación en sistemas distribuidos
Indice
Diseño Y Aplicaciones de
– Introducción
Sistemas Distribuidos
– El modelo cliente-servidor
– Llamadas a procedimientos remotos (RPC’s)
– El modelo de objetos distribuido
– La arquitectura CORBA
DYA
5
El modelo cliente-servidor
6
El modelo cliente-servidor
Nodo C Nodo S
petición
Diseño Y Aplicaciones de
Sistemas Distribuidos
C S Recurso
respuesta
SERVIDOR
SERVIDOR
CLIENTE
CLIENTE repeat
repeat
… recv(any,
… recv(any,peticion,
peticion,…);
…);
send(serv,
send(serv,peticion,
peticion,…);
…); respuesta= trabajar(peticion);
respuesta= trabajar(peticion);
recv(serv,
recv(serv,respuesta,
respuesta,…);
…); ret=remite(peticion);
ret=remite(peticion);
DYA
...... send(ret,
send(ret,respuesta,
respuesta,…);
…);
forever;
forever;
7
El modelo cliente-servidor
Tipos de servidores
Un proceso servidor puede adoptar dos estrategias básicas para la gestión del
recurso que custodia:
Diseño Y Aplicaciones de
8
El modelo cliente-servidor
Servidores multi-hilo
– Estructura:
Un distribuidor (dispatcher) de peticiones.
Una hilo dedicado (worker) por cada petición.
Diseño Y Aplicaciones de
Sistemas Distribuidos
Petición Dispatcher
Port
Hilos
DYA
9
El modelo cliente-servidor
Servidores concurrentes
– Modelo de Unix: no se crean hilos para atender las peticiones, sino nuevos
procesos con fork().
Diseño Y Aplicaciones de
Petición
Sistemas Distribuidos
Port ftp
server
10
El modelo cliente-servidor
Sistemas de mensajes
– Para realizar una aplicación cliente-servidor es necesario disponer de un
sistema de mensajería entre procesos, o en otras palabras, un nivel de
transporte.
Diseño Y Aplicaciones de
La interfaz socket
– La interfaz socket en Java
Ver transparencias de Java
DYA
11
Comunicación en sistemas distribuidos
Indice
Diseño Y Aplicaciones de
– Introducción
Sistemas Distribuidos
– El modelo cliente-servidor
– Llamadas a procedimientos remotos (RPC’s)
– El modelo de objetos distribuido
– La arquitectura CORBA
DYA
12
RPC
Concepto de RPC
– RPC (Remote Procedure Call): llamada a procedimiento remoto.
Es una forma de comunicación en sistemas distribuidos basada en extender el uso
de llamadas a procedimiento para invocar servicios sobre objetos o recursos
Diseño Y Aplicaciones de
– Características básicas:
Oculta el sistema de mensajes: hace transparente su uso
Hace transparente la invocación de servicios locales y remotos
DYA
13
RPC
Concepto de RPC
– Esquema de una llamada a procedimiento local
Diseño Y Aplicaciones de
Sistemas Distribuidos
Procedimiento
C
2
DYA
Núcleo
14
RPC
Concepto de RPC
– Esquema de una llamada a procedimiento remota
Diseño Y Aplicaciones de
CLIENTE SERVIDOR
Sistemas Distribuidos
Procedimiento
C
2
DYA
Núcleo Núcleo
15
RPC
Implementación de la RPC
– El método de los stubs
Diseño Y Aplicaciones de
CLIENTE SERVIDOR
Stub del cliente
Sistemas Distribuidos
3 4
Procedimiento
Procedimiento
1 empaquetar recibir
enviar desempaq.
C S
recibir empaquetar
desempaq. enviar
2 6
5
DYA
Núcleo Núcleo
16
RPC
Implementación de la RPC
– El método de los stubs
Diseño Y Aplicaciones de
Sistemas Distribuidos
client.c write.c
write(fd,buffer,nbytes)
C
DYA
17
RPC
Implementación de la RPC
– El método de los stubs
Misma interfaz
Diseño Y Aplicaciones de
Sistemas Distribuidos
write(fd,buffer,nbytes) write(fd,buffer,nbytes)
C S
DYA
Código de red
18
RPC
write.h
Implementación de la RPC
write(fd,buffer,nbytes)
– El método de los stubs
Diseño Y Aplicaciones de
Sistemas Distribuidos
write-clientstub.c write-serverstub.c
write(fd,buffer,nbytes)
S
DYA
Código de red
19
RPC
– Desempaquetar la respuesta
20
RPC
21
RPC
Generación de stubs
Existen dos enfoques básicos para la generación de stubs:
– Generación automática por un preprocesador de RPC
Diseño Y Aplicaciones de
22
RPC
23
RPC
24
RPC
El mensaje es:
Ejemplo de empaquetado “a mano”
“Smith”, “London”, 1934
Diseño Y Aplicaciones de
char * message[1024];
1 Código operación sprintf(message, “%d %d %s %d %s %d”,
PROC1, strlen(name), name, “ “,
5 Long. de secuencia
strlen(place), place, “ “,year);
“Smit” “Smith” msglen = strlen(name) + strlen(place) + ...
“h___” send(socketcli, message,msglen);
recv(socketcli, message,msglen);
6 Long. de secuencia return (int) message;
“Lond “London” }
“on__”
DYA
1934 CARDINAL
25
Comunicación en sistemas distribuidos
Indice
Diseño Y Aplicaciones de
– Introducción
Sistemas Distribuidos
– El modelo cliente-servidor
– Llamadas a procedimientos remotos (RPC’s)
– El modelo de objetos distribuido
– La arquitectura CORBA
DYA
26
El modelo de objetos distribuido
Fundamentos
Se basa en extender el paradigma de objetos a sistemas distribuidos:
– Objetos como forma de encapsular los recursos
– Objetos como unidad de distribución
Diseño Y Aplicaciones de
Métodos Objeto P
Objeto X
Objeto Q
Objeto Y
DYA
27
El modelo de objetos distribuido
28
Referencias a objetos
Referencias a objetos
– Concepto de referencia a objeto:
Determina de forma unívoca la ubicación de un objeto en un sistema distribuido.
Se usa para referenciar un “objeto distribuido”.
Diseño Y Aplicaciones de
remotos.
29
Referencias a objetos
Referencias a objetos
– Utilización de las referencias a objetos: si “X” es una referencia a un objeto
remoto, entonces se pueden utilizar de los siguientes modos:
Invocación estática de métodos remotos: X.method1(arg1,arg2,...)
Diseño Y Aplicaciones de
Objeto X
X Referencia a objeto
X
Objeto Y
DYA
Y .method2( X )
Invocación X
a objeto
30
Referencias a objetos
El problema de binding
– Problema: ¿Como obtener una referencia a un objeto?
– Posibles enfoques:
Binding estático: se resuelve en tiempo de compilación. La ubicación del objeto es
Diseño Y Aplicaciones de
conocida y fija y la referencia es generada por el propio compilador.
Sistemas Distribuidos
Catálogos de servicios
– Existen, fundamentalmente, dos tipos de catálogos:
Servicio de nombres
– Proporciona una base de datos con tuplas:
(nombreObjeto, ReferenciaAObjeto)
– Se implementa como un objeto del sistema con dos métodos fundamentales:
Diseño Y Aplicaciones de
lookup bind
Cliente Servidor
Servicio
nombres
DYA
32
Servicio de nombres
Nombres de objetos
Existen diferentes opciones para el espacio de nombres de objetos:
– Nombres no transparentes a la ubicación:
Diseño Y Aplicaciones de
33
Invocación de métodos remotos
– Terminología
Sistemas Distribuidos
Java-RMI:
– Stub del cliente: stub
– Stub del servidor: skeleton cliente servidor cliente
CORBA:
– Stub del cliente: proxy
– Stub del servidor: stub
proxy stub
DYA
Misma interfaz
34
Invocación de métodos remotos
Serialización de objetos
– La serialización de objetos es mucho más compleja cuando existe herencia,
ya que ello implica serializar, recursivamente, todos los atributos que el objeto
DYA
35
Invocación de métodos remotos
correspondientes.
Sistemas Distribuidos
36
Invocación de métodos remotos
conversorRef.cambiar(“euros”,”dollar”, 565)
– Invocación dinámica
Sistemas Distribuidos
38
Interfaces
39
Interfaces
Procesamiento de interfaces
– Puede generar de forma automática:
Stubs de cliente y servidor
Entradas para catálogos de servicios
Diseño Y Aplicaciones de
Cliente Servidor
Catálogo
Stub servicios Stub
DYA
Interfaz
IDL
Servicio
40