Software">
SD S4 ComunicacionProcesos
SD S4 ComunicacionProcesos
SD S4 ComunicacionProcesos
Comunicación de
Procesos
Fuente: Universidad Politécnica de Madrid – Fernando Pérez Costoya / José María Peña Sánchez
Comunicación en Sistemas Distribuidos
Sistemas Distribuidos 2
Tecnologías y Modelos
Tecnologías Modelos
Cómo se realiza la programación. Cómo se diseña el servicio
– Sockets
Berkeley Sockets Modelo cliente/servidor
Java Sockets
– Llamadas a procedimientos – Modelos con
remotos: intermediario:
Sun RPC Modelo proxy/cache
– Objetos distribuidos: Modelo multinivel
Java RMI
CORBA
Peer-to-peer
– Servicios web:
SOAP
Otras tecnologías o variantes de ellas Código Móvil
Sistemas Distribuidos 3
Implementación de las Funcionalidades
de Comunicación
1) Paso de 2) Funcionalidades de 3) Llamadas a
mensajes puro. comunicación de bajo nivel. procedimientos
Aplicaciones en Sistemas Distribuidos. remotos y objetos
red. distribuidos.
App./Servicios App./Servicios
Aplicaciones
y RMI/RPC
Servicios Interfaz
Protocolo y
y
API (sockets) Representación
Lógica de
TCP/UDP Comunicación TCP/UDP
ATM/Ethernet
Sistemas Distribuidos 4
Primitivas (instrucciones) de Comunicación
Sistemas Distribuidos 6
Síncronas vs. Asíncronas
Sistemas Distribuidos 7
Fiabilidad
Sistemas Distribuidos 8
Primitivas de Comunicación
EMISOR 8 5 RECEPTOR
7 RED 6
1 Núcleo ACK Núcleo 4
Emisor msg Receptor
2 3
Envío no bloqueante (comunicación asíncrona): [1:8] El emisor continua al pasar el
mensaje al núcleo.
Envío bloqueante (comunicación asíncrona): [1:2:7:8] El emisor espera a que el
núcleo transmita por red el mensaje.
Envío bloqueante fiable (comunicación asíncrona): [1:2:3:6:7:8]: El emisor espera a
que el núcleo receptor recoge el mensaje.
Envío bloqueante explícito (comunicación síncrona): [1:2:3:4:5:6:7:8]: Idem al
anterior, pero es la aplicación receptora la que confirma la recepción.
Petición-Respuesta: [1:2:3:4:<servicio>:5:6:7:8]: El emisor espera a que el receptor
procese la operación para reanudar la ejecución.
Sistemas Distribuidos 9
Direccionamiento
Sistemas Distribuidos 10
Modelos con/sin Estado
• Servicio Con estado vs. Sin estado:
– Determina si el servidor mantiene información de los clientes o no.
• Ventajas de servicio con estado:
– Mensajes de petición más cortos.
– Mejor rendimiento (se mantiene información en memoria).
– Favorece estrategias de optimización:
• Estrategias predictivas: análisis del patrón de operaciones del cliente.
• Ventajas de servicio sin estado:
– Más tolerantes a fallos (rearranque del servidor).
• Peticiones autocontenidas.
– Reduce el número de mensajes: no hay comienzos/finales de sesión.
– Más económicos para el servidor (no consume recursos de memoria)
• Servicios inherentes con estado (cerrojos distribuidos).
• Estado sobre servicios sin estado (HTTP+cookies).
Sistemas Distribuidos 11
Sistemas Distribuidos
Llamadas a
Procedimientos
<RPC> Remotos
•Sun RPCs
Llamadas a Procedimientos Remotos
Servidor
... ...
Cliente
msg
send(msg) receive(msg)
... ...
rpy
receive(rpy) send(rpy)
Paso de mensajes (visión de bajo nivel)
Servidor
... {
Cliente
... ...
x=buscar(1556) ...
... return val;
}
Llamadas a procedimientos remotos (más alto nivel) Comodidad
Sistemas Distribuidos 13
Llamadas a Procedimientos Remotos
Sistemas Distribuidos 14
Funcionamiento General de RPC
Cliente:
– El proceso que realiza la llamada a una función.
– Dicha llamada empaqueta los argumentos en un mensaje y se los
envía a otro proceso.
– Queda la espera del resultado.
Servidor:
– Se recibe un mensaje consistente en varios argumentos.
– Los argumentos son usados para llamar una función en el servidor.
– El resultado de la función se empaqueta en un mensaje que se
retransmite al cliente.
• Código cliente.
• Código del servidor.
• Formato de representación.
• Definición de la interfaz.
• Localización del servidor.
• Semánticas de fallo.
Servidor
Cliente
... {
... ...
Call buscar(1556) ...
... return val;
}
Sistemas Distribuidos 16
Código Cliente/Código Servidor
Las funciones de abstracción de una llamada RPC a intercambio de
mensajes se denominan interfaces (stubs).
SISTEMA CLIENTE SISTEMA SERVIDOR
CÓDIGO DE LA APLICACIÓN PROCEDIMIENTOS
5
INICIO FIN EJECUTA
LLAMADA LLAMADA PROCEDIMIENTO
REMOTO
INTERFASE PREPARA INTERFASE CONVIERTE 4
CLIENTE 1 ENTRADA SERVIDOR ENTRADA
CONVIERTE 9
SALIDA
6 PREPARA
SALIDA
BIBLIOT. ENVÍA BIBLIOT. RECIBE 3
EJECUCIÓN 2 ENTRADA EJECUCIÓN Y PASA
RPC RECIBE RPC
8 7 TRANSMITE
SALIDA SALIDA
Sistemas Distribuidos 17
Interfaces (stubs)
Sistemas Distribuidos 19
Definición de Interfaces: IDL
Sistemas Distribuidos 21
Enlace Dinámico
Tipos de enlace:
– Enlace no persistente: la conexión entre el cliente y el servidor se
establece en cada llamada RPC.
– Enlace persistente: la conexión se mantiene después de la primera
RPC:
• Útil en aplicaciones con muchas RPC repetidas.
• Problemas si lo servidores cambian de lugar o fallan.
Sistemas Distribuidos 22
Enlazador Dinámico
Enlazador dinámico (binder): Es el servicio que mantiene una
tabla de traducciones entre nombres de servicio y direcciones.
Incluye funciones para:
– Registrar un nombre de servicio (versión).
– Eliminar un nombre de servicio.
– Buscar la dirección correspondiente a un nombre de servicio.
Sistemas Distribuidos 23
RPC: Protocolo Básico
envía petición
Desempaqueta
la respuesta
Sistemas Distribuidos 24
Semántica Tratamiento de Fallos
[1] ?
[4]
[5]
[2]
Sistemas Distribuidos 25
Cliente no Puede Localizar al Servidor
Sistemas Distribuidos 26
Pérdida de Mensajes del Cliente
Sistemas Distribuidos 27
Pérdidas de Mensajes de Respuesta
• Más difícil de tratar
• Se pueden emplear alarmas y retransmisiones, pero:
– ¿Se perdió la petición?
– ¿Se perdió la respuesta?
– ¿El servidor va lento?
• Algunas operaciones pueden repetirse sin problemas (operaciones
idempotentes)
– Una transferencia bancaria no es idempotente
• Solución con operaciones no idempotentes es descartar peticiones
ya ejecutadas
– Un nº de secuencia en el cliente
– Un campo en el mensaje que indique si es una petición original o una
retransmisión
Sistemas Distribuidos 28
Fallos en los Servidores
Sistemas Distribuidos 30
Aspectos de Implementación
• Protocolos RPC
– Orientados a conexión
• Fiabilidad se resuelve a bajo nivel, peor rendimiento
– No orientados a conexión
– Uso de un protocolo estándar o un específico
• Algunos utilizan TCP o UDP como protocolos básicos
• Coste de copiar información aspecto dominante en
rendimiento:
– buffer del cliente buffer del SO local red buffer del SO
remoto + buffer del servidor
– Puede haber más copias en cliente para añadir cabeceras
– scatter-gather: puede mejorar rendimiento
Sistemas Distribuidos 31
RPC de Sun
Sistemas Distribuidos 32
RPC de Sun
Sistemas Distribuidos 33
Ejemplo de Fichero IDL (Sun RPC)
struct peticion {
int a;
int b;
};
program SUMAR {
version SUMAVER {
int SUMA(peticion) = 1;
} = 1;
} = 99;
Sistemas Distribuidos 34
Programación con un Paquete de RPC
Sistemas Distribuidos 35
Programación con RPC
DESARROLLO
DE LA ARCHIVO
DE DEFINICIÓN
INTERFAZ DE INTERFAZ
COMPILADOR IDL
COMPILADOR C COMPILADOR C
MONTADOR MONTADOR
EJECUTABLE EJECUTABLE
DESARROLLO DEL DEL DESARROLLO
DEL CLIENTE SERVIDOR DEL
CLIENTE SERVIDOR
Sistemas Distribuidos 36
Esquema de una Aplicación
cliente.c
Archivos para
el cliente
idl_clnt.c
idl_xdr.c
repcgen Archivos
idl.x
comunes
idl.h
idl_svc.c
Archivos para
el servidor
servidor.c
Sistemas Distribuidos 37
Sistemas Distribuidos
Entornos de
Objetos
<Objetos Remotos> Distribuidos
•Java RMI
•CORBA
Motivación
Ventajas:
– Los métodos remotos están asociados a objetos remotos.
– Más natural para desarrollo orientado a objetos.
– Admite modelos de programación orientada a eventos.
Problemas:
– El concepto de referencia a objeto es fundamental.
– Objetos volátiles y objetos persistentes.
Sistemas Distribuidos 39
Objetos-Distribuidos
Características:
– Uso de un Middleware: Nivel de abstracción para la comunicación de
los objetos distribuidos. Oculta:
• Localización de objetos.
• Protocolos de comunicación.
• Hardware de computadora.
• Sistemas Operativos.
– Modelo de objetos distribuidos: Describe los aspectos del paradigma
de objetos que es aceptado por la tecnología: Herencia, Interfaces,
Excepciones, Polimorfismo, ...
– Recogida de basura (Garbage Collection): Determina los objetos que
no están siendo usados para a liberar recursos.
Sistemas Distribuidos 40
Tecnologías de Objetos Distribuidos
Sistemas Distribuidos 41
Java RMI
Sistemas Distribuidos 42
Java RMI
Ejemplo:
Cuenta cnt = new CuentaImpl();
String url = “rmi://java.Sun.COM/cuenta”;
// enlazamos una url a un objeto remoto
java.rmi.Naming.bind(url, cnt);
....
// búsqueda de la cuenta
cnt=(Cuenta)java.rmi.Naming.lookup(url);
Sistemas Distribuidos 43
Arquitectura de Java RMI
Sistemas Distribuidos 44
Arquitectura de Java RMI
2
Implementación de la
interfaz remota
(.java)
3
javac
(.class)
4
rmic Servidor
(.class)
8 usa Esqueleto
Esqueleto
Cliente (.class)
(.class)
(.java)
5
9 Arrancar RMIRegistry
javac
6
(.class) Crear los objetos
10
Ejectuar 7
Cliente Registrar los objetos
CLIENTE SERVIDOR
Sistemas Distribuidos 46
Registro de Objetos
Cuenta mi_cuenta=
(Cuenta)Naming.lookup("rmi://"+host+"/"+”MiCuenta");
Sistemas Distribuidos 47
OMG
Sistemas Distribuidos 48
OMA
Sistemas Distribuidos 49
OMA
Una aplicación definida sobre OMA esta compuesta por una serie
de objetos distribuidos que cooperan entre si. Estos objetos se
clasifican en los siguientes grupos:
Facilidades Interfaces
Servicios
Comúnes de Dominio
ORB
Aplicaciones
Sistemas Distribuidos 50
OMA
Servicios:
– Proporcionan funciones elementales necesarias para cualquier tipo
de entorno distribuido, independientemente del entorno de aplicación.
Sistemas Distribuidos 51
OMA
Facilidades Comunes:
– Proporcionan funciones, al igual que los servicios válidas para varios
dominios pero más complejas. Están orientadas a usuarios finales
(no al desarrollo de aplicaciones).
Sistemas Distribuidos 52
OMA
Interfaces de Dominio:
– Proporcionan funciones complejas, al igual que las Facilidades, pero
restringidas a campos de aplicación muy concretos. Por ejemplo,
telecomunicaciones, aplicaciones médicas o financieras, etc.
Sistemas Distribuidos 53
OMA
Aplicaciones:
– El resto de funciones requeridas por una aplicación en concreto. Es
el único grupo de objetos que OMG no define, pues esta compuesto
por los objetos propios de cada caso concreto.
– Estos son los objetos que un sistema concreto tiene que desarrollar.
El resto (servicios, facilidades) pueden venir dentro del entorno de
desarrollo.
Sistemas Distribuidos 54
OMA
ORB:
– (Object Request Broker)
Sistemas Distribuidos 55
ORB
Servidor
Cliente void ingresar(long){
x->ingresar(30) ....
.... }
ORB
Sistemas Distribuidos 56
IDL de CORBA
interface Cuenta
{
void ingresar(in long cantidad);
void retirar(in long cantidad);
long balance();
};
Sistemas Distribuidos 57
IDL de CORBA
Language Mappings:
– Traducen la definición IDL a un lenguaje de programación como:
• C++,
• Ada,
• COBOL,
• SmallTalk,
• Java,
• ...
Sistemas Distribuidos 58
IDL de CORBA
El código cliente generado en Cuenta.idl
realizar el proceso de
marshalling.
Compilador IDL
argumentos a un formato
intermedio y pedir al ORB su
ejecución. Cuenta_Stub.c++
class Cuenta_Stub : ...
{
void ingresar(CORBA::Long &cantidad)
{ <MARSHALLING> }
}
Sistemas Distribuidos 59
IDL de CORBA
El código servidor generado en Compilador IDL
base a la definición IDL
(skeleton) contiene las Cuenta_Skel.c++
llamadas para realizar el class Cuenta_Skel : ...
construir la invocación y
realizar la petición.
Sistemas Distribuidos 60
IDL de CORBA
ORB ORB
Sistemas Distribuidos 62
Componentes de un ORB
Stub:
– Código cliente asociado al objeto remoto con el que se desea
interactuar. Simula para el cliente los métodos del objeto remoto,
asociando a cada uno de los métodos una serie de funciones que
realizan la comunicación con el objeto servidor.
Skeleton:
– Código servidor asociado al objeto. Representa el elemento análogo
al stub del cliente. Se encarga de simular la petición remota del
cliente como una petición local a la implementación real del objeto.
Sistemas Distribuidos 63
Componentes de un ORB
DII:
– (Dynamic Invocation Interface)
– Alternativa al uso de stubs estáticos que permite que un cliente
solicite peticiones a servidores cuyos interfaces se desconocían en
fase de compilación.
DSI:
– (Dynamic Skeleton Interface)
– Alternativa dinámica al uso de skeletons estáticos definidos en
tiempo de compilación del objeto. Es usado por servidores que
durante su ejecución pueden arrancar diferentes objetos que pueden
ser desconocidos cuando se compiló el servidor.
Sistemas Distribuidos 64
Componentes de un ORB
ORB/Interface ORB:
– Elemento encargado de (entre otras) las tareas asociadas a la
interconexión entre la computadora cliente y servidor, de forma
independiente de las arquitecturas hardware y SSOO.
– Debido a que tanto clientes como servidores pueden requerir de
ciertas funcionalidades del ORB, ambos son capaces de acceder a
las mismas por medio de un interfaz.
Las dos principales responsabilidades del ORB son:
– Localización de objetos: El cliente desconoce la computadora donde
se encuentra el objeto remoto.
– Comunicación entre cliente y servidor: De forma independiente de
protocolos de comunicación o características de implementación
(lenguaje, sistema operativo, ...)
Sistemas Distribuidos 65
Componentes de un ORB
Adaptador de Objetos:
– En este elemento se registran todos los objetos que sirven en un
determinado nodo. Es el encargado de mantener todas las
referencias de los objetos que sirven en una determinada
computadora de forma que cuando llega una petición a un método es
capaz de redirigírla al código del skeleton adecuado.
Sistemas Distribuidos 66
Componentes de un ORB
5
ORB ORB Skel. 7 DSI
DII Stub Interface Interface
1 4 Object Adapter (OA)
2 3
ORB ORB
Sistemas Distribuidos 68
Comunicación vía CORBA
4- El Adaptador de Objetos resuelve cuál es el objeto invocado, y dentro
de dicho objeto cuál es el método solicitado (Adaptador de Objetos)
5- El skeleton del servidor realiza el proceso de de-marshalling de los
argumentos e invoca a la implementación del objeto. (Skeleton servidor)
6- La implementación del objeto se ejecuta y los resultados y/o parámetros
de salida se retornan al skeleton. (Implementación del objeto)
7- El proceso de retorno de los resultados es análogo.
5
ORB ORB Skel. 7 DSI
DII Stub Interface Interface
1 4 Object Adapter (OA)
2 3
ORB ORB
Sistemas Distribuidos 69
Localización de Objetos
Sistemas Distribuidos 70
Localización de Objetos
IOR:010000000f00000049444c3a4375656e74613a312e300000020
00000000000003000000001010000160000007175696e6f2e646174
73692e66692e75706d2e65730041040c000000424f418a640965000
009f403010000002400000001000000010000000100000014000000
0100000001000100000000000901010000000000
Sistemas Distribuidos 71
Implementación del Servidor
Sistemas Distribuidos 72
Servicios CORBA
Sistemas Distribuidos 74
Servicio de Nombres
NameService
Sistemas Distribuidos 75
Servicio de Nombres
NameService Cuenta
MiCuenta=IOR:X
Sistemas Distribuidos 76
Servicio de Nombres
IOR:NS=resolve_initial_references(“NameService”)
NameService Cuenta
Cliente
MiCuenta=IOR:X
Sistemas Distribuidos 77
Servicio de Nombres
IOR:X=resolve(“MiCuenta”)
NameService Cuenta
Cliente
MiCuenta=IOR:X
Sistemas Distribuidos 78
Servicio de Negociación
CORBA vs DCOM+
– CORBA es un estándar abierto y no propietario.
– CORBA proporciona soporte para diversos SO.
– CORBA es más completo y flexible.
– CORBA da una salida a los legacy systems
Sistemas Distribuidos 80
Comparativa
CORBA vs RMI
– CORBA permite una mayor heterogeneidad en el desarrollo de
aplicaciones (RMI sólo se puede desarrollar con Java).
– CORBA ademas de las funcionalidades de comunicación,
proporciona servicios.
– RMI funciona sobre CORBA (IIOP).
Sistemas Distribuidos 81
Sistemas Distribuidos
Servicios Web
<Web Services>
•SOAP + WSDL + UDDI
Evolución de la Web
• Pasado: Web de documentos
– Páginas estáticas
– Web como un enorme repositorio de información
– Tecnologías: HTTP + HTML
• Presente: Web de aplicaciones
– Páginas dinámicamente generadas por aplicaciones web
– Aplicaciones exportan su interfaz a los usuarios a través de la Web
– Entorno de transacciones comerciales (Business to consumer, B2C)
– Tecnologías: CGI, ASP, PHP, JSP, servlets, ...
• Futuro (ya está aquí): Web de servicios (funciones/métodos)
– “Bibliotecas” ofrecen servicios a programas (no a usuarios)
– Web como una enorme API de servicios (Web de componentes)
– Empresas de valor añadido (Business to business, B2B)
– Base de Sistemas distribuidos sobre Internet
• Servicio web: RPC sobre la Web usando XML
Sistemas Distribuidos 83
Aplicaciones Web: Escenario Típico
Sistemas Distribuidos 86
Protocolo de Transporte: HTTP
• Uso típico de operación POST de HTTP:
– datos de formulario y página de respuesta
POST /~ssoo/consultaBD.cgi HTTP/1.0
Content-length: 76
.....................
DNI=87654321&MAT=980000&Asignatura=sod&Curso=2002&Convocatoria=Jun&Tipo=acta
HTTP/1.1 200 OK
Content-Type: text/html; charset=iso-8859-1
.....................
<HTML>
Sistemas Distribuidos 88
Protocolo de comunicación: SOAP
• Simple Object Access Protocol (Candidate Recommendation)
• SOAP = HTTP + XML
– Especifica cómo mandar mensajes XML sobre HTTP
– Define el contenedor del mensaje (también en XML)
– Protocolo general, no sólo para RPC, también unidireccional
• Estructura de mensaje contenedor SOAP:
– Sobre (Envelope): Cabecera (Header) [opcional] + Cuerpo (Body)
• Cabecera : info. complementaria (p.ej. en RPC un ID de transacción)
• Cuerpo: contiene el mensaje original
• SOAP para RPC:
– En petición: Identificador en POST identifica destino de RPC
• Seguridad:
– Usando HTTPS (SSL)
– Alternativa actual: WS-Security
Sistemas Distribuidos 89
Un Ejemplo de SOAP en RPC
POST /StockQuote HTTP/1.1
......................
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
Petición
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:GetLastTradePrice xmlns:m="http://example.com/stockquote.xsd">
<symbol>DIS</symbol>
</m:GetLastTradePrice>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
HTTP/1.1 200 OK
...............
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
Respuesta
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<SOAP-ENV:Body>
<m:GetLastTradePriceResponse xmlns:m="http://example.com/stockquote.xsd">
<Price>34.5</Price>
</m:GetLastTradePriceResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Sistemas Distribuidos 90
Definición de Interfaz de Servicio: WSDL
Sistemas Distribuidos 91
Desarrollo de un Servicio Web
Sistemas Distribuidos 92
Localización del Servicio: UDDI
• Universal Description, Discovery, and Integration
– No estándar: Propuesta inicial de Microsoft, IBM y Ariba
• Registro distribuido de servicios web ofrecidos por empresas
• Información clasificada en 3 categorías (guías):
– Páginas blancas: Datos de la empresa
– Páginas amarillas: Clasificación por tipo de actividades
– Páginas verdes: Descripción de servicios web (WSDL)
• Se accede a su vez como un servicio web
• Puede consultarse en tiempo de desarrollo o incluso
dinámicamente en tiempo de ejecución
• Permite búsquedas por distintos criterios
– Tipo de actividad, tipo de servicio, localización geográfica
Sistemas Distribuidos 93
Registro de un servicio web
Sistemas Distribuidos 94
Servicios Web vs. RPC/RMI
• Servicio Web similar a RPC/RMI (CORBA, COM+)
– ¿Hay un “ganador”? ¿Reinventando la rueda?
• Convivencia: Distintos ámbitos de aplicación
• Servicios web
– Entornos de interacción “débilmente acoplados”
• Exportar servicios fuera de la organización
• Integrar aplicaciones de la empresa
– Más estándar y extendido, menos problemas con firewalls
• RPC/RMI “tradicionales”
– Aplicación distribuida “fuertemente acoplada”
– Más funcionalidad y eficiencia
• Ejemplo de escenario de convivencia:
– Exportar un servicio interno CORBA mediante un servicio web
Sistemas Distribuidos 95
Entornos de Desarrollo de Servicios Web
Sistemas Distribuidos 96