Sistemas
Distribuidos
Módulo 2
Comunicación en Sistemas
Distribuidos
Comunicación en Sistemas
Distribuidos
• Modelos de Comunicaciones
• Pasaje de Mensajes
• Comunicación directa (procesos, sockets,
mensajes)
• Comunicación indirecta (MOM)
• Llamadas a Procedimiento Remoto (RPC/RMI)
Comunicación en Sistemas Distribuidos
La comunicación entre procesos necesita compartir información:
a) datos compartidos
Area común
P de memoria
compartida
Q
b) pasajes de mensajes o copias compartidas
P Q
Comunicación en Sistemas Distribuidos
Tipos de Comunicación
✔ Comunicación Persistente: almacena el mensaje
(información) enviado por el emisor el tiempo que tome
entregarlo al receptor.
✔ Comunicación Transitoria: almacena un mensaje sólo
mientras las aplicaciones del emisor y receptor están en
ejecución.
Comunicación en Sistemas
Distribuidos
Tipos de Comunicación
✔ Comunicación asincrónica: el emisor continúa
inmediatamente después de que ha pasado su
mensaje para la transmisión.
✔ Comunicación sincrónica: el emisor es
bloqueado hasta que se sabe que su petición es
aceptada.
Comunicación en Sistemas Distribuidos
Ejemplo de Comunicación
Pasaje de Mensajes
Características deseables de un buen sistema de pasaje de
mensajes
SIMPLICIDAD
Simple y fácil de usar (uso directo)
Hacer sin preocuparse de aspectos de la red/sistema
SEMÁNTICA UNIFORME en:
Comunicaciones locales
Comunicaciones remotas
Pasaje de Mensajes
EFICIENCIA
Si no la hay, las IPC son costosas
Criterio: reducción del número de mensajes intercambiados.
Optimización incluye:
-Evitar el costo de establecer y terminar conexiones entre
el mismo par de procesos y cada intercambio de mensajes
entre ellos.
-Minimizar el costo de mantener la conexión.
-Optimizar los reconocimientos cuando hay una serie de
mensajes entre el send y receive.
Pasaje de Mensajes
CONFIABILIDAD
La caída del nodo o enlace implica pérdida de mensaje.
Se usan timeouts (duplicación de mensajes)
CORRECTITUD
Pueden enviarse multicast
-atomicidad
-orden de despacho
-persistencia
Pasaje de Mensajes
FLEXIBILIDAD
Deben permitir alguna clase de control de flujo
entre procesos cooperativos, incluyendo
send/receive sincrónicos y asincrónicos.
SEGURIDAD
✔ Autenticación del receptor de un mensaje por
el enviador
✔ Autenticación del enviador de un mensaje por
el receptor
✔ Encriptación del mensaje
Pasaje de Mensajes
PORTABILIDAD
El sistema de pasaje de mensajes debe ser portable (posible
construcción de protocolos de IPC reusando el mismo
sistema de mensajes)
Heterogeneidad de máquinas ⇒ compatibilización de
representación.
Pasaje de Mensajes
El pasaje de mensajes en la intercomunicación entre
procesos
Una estructura de mensajes típica:
Información de estructura Direcciones
Datos #sec o
actuales o id del recep env
Número de Tipo
punteros mensaje
bytes/elementos
Datos Encabezamiento de longitud fija
long
var
Pasaje de Mensajes
El enviador determina el contenido del mensaje.
El receptor tiene en cuenta como interpretar los
datos.
Pasaje de Mensajes
SINCRONIZACIÓN
No bloqueante
El receptor conoce la llegada del mensaje
✔ Polling
✔ Interrupción
Bloqueantes ⇒ sincrónica
Fácil de implementar pero poca concurrencia (a qué nivel nos
referimos?)
Pasaje de Mensajes
Comunicación Sincrónica - Mensajes Bloqueantes
enviador receptor
Send (mns) Receive (mns)
mensaje Ejecución suspendida
Ejecución
suspendida Reanuda ejecución
ack Send (ack)
Reanuda ejecución
Pasaje de Mensajes
BUFFERING
De buffer nulo a buffer con capacidad ilimitada
No buffer
• Cita (rendez-vous)
• Descarte
Buffer simple
Adecuado para transferencia sincrónica
Capacidad infinita
Almacena todo lo que recibe (asincrónica)
Pasaje de Mensajes
Buffer límite finito
Puede haber rebalse de buffer
✔ Comunicación no exitosa (lo hace menos confiable)
✔ Comunicación con flujo controlado (bloquea al enviador
hasta que haya espacio)
Buffer múltiple
Mailbox o pórtico
Pasaje de Mensajes
Mensajes multidatagrama
La mayoría tiene un límite superior en el tamaño del dato
que puede ser transmitido en algún momento (MTU).
Esto implica que magnitudes mas grandes deben
fragmentarse en paquetes.
El ensamblador y desensamblador es responsabilidad del
sistema de pasaje de mensajes.
Pasaje de Mensajes
Codificación y decodificación de mensajes de
datos
Un puntero absoluto (o referencia a un objeto) pierde
significado cuando es transmitido de un espacio a otro.
Diferentes programas objeto ocupan una cantidad de
espacio variada.
XDR (External Data Representation)
● Proceso empaquetado (marshalling)
● Proceso desempaquetado (unmarshalling)
Pasaje de Mensajes
Direccionamiento de los procesos
Problema de nombres de las partes involucradas
en una interacción.
Direccionamiento explícito
Send (process-id,msg)
Receive(process-id,msg)
Pasaje de Mensajes
Direccionamiento implícito
No se explicita el nombre del proceso.
Resulta útil para cliente-servidor: se menciona un
servicio.
Send (service-id,msg)
Receive (service-id,msg)
Pasaje de Mensajes
Manejo de fallas
• Caída de sitio
• Caída de enlace
Problemas posibles:
b) Pérdida del mensaje de envío
c) Pérdida del mensaje de respuesta
d) Ejecución del pedido no exitosa
Pasaje de Mensajes
(a) Pérdida del mensaje de requerimiento
Env Rec
Send
req
Pasaje de Mensajes
(b) Pérdida del mensaje de respuesta
Env Rec
Send
req
Send
resp
Pasaje de Mensajes
(c) Ejecución del requerimiento no exitosa
Env Rec
Send
req
Crash
Pasaje de Mensajes
Protocolos de mensajes confiables
Cuatro mensajes
C S
req
ack
resp
ack
Pasaje de Mensajes
Tres mensajes
C S
req
resp
ack
Pasaje de Mensajes
Dos mensajes C S
req
resp
Comunicación indirecta
Es aquella en la que las entidades de un sistema distribuido
interactúan a través de un intermediario sin acoplamiento directo
entre emisores y receptores.
-Desacoplamiento en espacio
- Desacoplamiento en tiempo
Comunicación indirecta y persistente
MOM (Message oriented middleware)
Emisor en Emisor en Emisor Emisor
ejecución ejecución pasivo pasivo
Destinatario en Destinatario Destinatario en Destinatario
ejecución pasivo ejecución pasivo
a) b) c) d)
Comunicación indirecta
Organización general de un sistema de cola de mensajes con routers.
Enviador A
Aplicación
Aplicación
Cola
recepción
Mensaje
Cola envío
Aplicación
2-29
Receptor B
Aplicación
Comunicación indirecta y persistente
Brokers de Mensajes
Base de datos con
Broker de reglas de Cliente destino
Cliente fuente
mensajes conversión
2-30
Programa
Broker
Capa
colas
SO SO SO
Red
Organización general de un broker de mensajes en un sistema de mensajes
encolados
Comunicación indirecta
Ofrece un servicio donde un mensaje es enviado a un
grupo, y luego es entregado a todos los miembros del
mismo.
Grupos de comunicación
Hay tres tipos de grupos de comunicación:
● Uno a muchos
● Muchos a uno
● Muchos a muchos
Comunicación indirecta: grupos
Uno a muchos
Este esquema es conocido como
comunicación multicast.
En este caso los procesos receptores de los
mensajes constituyen un grupo, que a su
vez pueden ser de dos tipos:
● Grupos cerrados
● Grupos abiertos
Comunicación indirecta: grupos
Grupos cerrados
Solo los miembros del grupo pueden enviar
mensajes al grupo.
Grupos abiertos
Cualquier proceso en el sistema puede enviar un
mensaje al grupo como tal.
Comunicación indirecta: grupos
Un sistema de pasaje de mensajes con la
facilidad de grupo de comunicación provee la
flexibilidad de crear y borrar grupos
dinámicamente y permitir a un proceso
agregarse o dejar un grupo.
Un mecanismo para realizar todo esto es un
servidor de grupos, que administre la
membresía del mismo.
Comunicación indirecta: grupos
Muchos a uno
Enviadores múltiples envían mensajes a un único
receptor.
Hay un no determinismo.
Muchos a muchos
Múltiples enviadores envían mensajes a múltiples
receptores.
Comunicación Transitoria entre procesos
Primitivas para Sockets en TCP/IP
Primitiva Significado
Socket Crea un nuevo punto final de comunicación
Bind Adjunta una dirección local a un socket
Listen Anuncia el deseo de aceptar conexiones
Se bloquea el llamador hasta que llegue un
Accept
requerimiento de conexión
Connect Intenta activamente establecer una conexión
Send Envía datos sobre la conexión
Receive Recibe algunos datos sobre la conexión
Close Libera la conexión
Comunicación transitoria entre
procesos
Servidor
Punto de sincronización Comunicación
Cliente
Modelo de comunicación orientado a conexión usando
sockets.
Comunicación remota
Requerimiento
Cliente Servidor
Respuesta
Kernel Kernel
RED
Modelo Cliente-Servidor
✔ Las máquinas cliente son, en general, PC monousuario o
puestos de trabajo que ofrecen una interfaz muy amigable
para el usuario final.
✔ Cada servidor ofrece una serie de servicios de usuario
compartidos a los clientes.
✔ El servidor permite a los clientes compartir el acceso a la
misma base de datos y permite el uso de un sistema de
computación de alto rendimiento para gestionar la base de
datos.
Modelo Cliente-Servidor
✔ El software básico es un sistema operativo que se ejecuta en
la plataforma del hardware.
✔ Las plataformas y los sistemas operativos del cliente y del
servidor pueden ser diferentes.
✔ Estas diferencias de niveles inferiores no son relevantes en
tanto que un cliente y un servidor compartan los mismos
protocolos de comunicación y soporten las mismas
aplicaciones.
Aplicaciones de Bases de Datos
Consulta inicial Servidor
100.000 registros posibles
Cliente
Consulta siguiente
100.000 registros posibles
Consulta final
Base de
Un registro devuelto
datos
de 1.000.000
de registros
(a) Cliente/servidor bien
empleado
Utilización de bases de datos cliente/servidor.
Aplicaciones de Bases de Datos
Servidor
Cliente
Consulta
300.000 registros
devueltos
Base de
datos
de
1.000.000
de
(b) Cliente/servidor mal registros
empleado
Utilización de bases de datos cliente/servidor.
Arquitectura cliente/servidor de tres capas
✔ El software de aplicación está distribuido entre tres tipos de
máquinas:
• Máquina de usuario:
• Cliente (presentación)
• Servidor de capa intermedia:
• Servicios publicados.
• Aplicaciones
• Servidor final (backend).
Arquitectura cliente/servidor de tres capas
Cliente
Servidor de capa
intermedia
(servidor de aplicaciones)
Servidores finales
(servidores de
datos)
Arquitectura cliente/servidor de tres capas.
Llamadas a Procedimiento
Remoto (RPC)
Es un caso especial del modelo general de pasaje de
mensajes.
Es un mecanismo ampliamente aceptado para la
intercomunicación de procesos en sistemas distribuidos.
Llamadas a Procedimiento
Remoto (RPC)
El modelo RPC
Es similar al bien conocido y entendido modelo de
llamadas a procedimientos usado para transferir control y
datos.
El mecanismo de RPC es una extensión del anterior porque
habilita a hacer una llamada a un procedimiento que no
reside en el mismo espacio de direcciones.
Llamadas a Procedimiento
Remoto (RPC)
La facilidad de RPC usa un esquema de pasaje de mensajes
para intercambiar información entre los procesos llamador
(proceso cliente) y llamado (proceso servidor).
Normalmente el proceso servidor duerme, esperando la
llegada de un mensaje de requerimiento.
El proceso cliente se bloquea cuando envía el mensaje de
requerimiento hasta recibir la respuesta.
Llamadas a Procedimiento
Remoto (RPC)
Transparencia de RPC
Transparencia SINTÁCTICA: una llamada a procedimiento
remoto debe tener la misma sintaxis que una llamada
local.
Transparencia SEMÁNTICA: la semántica de un RPC es la
misma que para una llamada local.
Llamadas a Procedimiento
Remoto (RPC)
Implementación del mecanismo de RPC
● El cliente
● El stub cliente
● El runtime RPC
● El stub servidor
● El servidor
Llamadas a Procedimiento Remoto (RPC)
Cliente Servidor
Ret Llam Llam Ret
ejecuta
Unpck Pack Stub Unpck Pack
espera
Receive Send Runtime Receive Send
Llamadas a Procedimiento
Remoto (RPC)
Cliente
Es el que inicia el RPC. Hace una llamada que
invoca al stub.
Stub cliente
Realiza las siguientes tareas:
a)Empaqueta la especificación del procedimiento
objetivo y sus argumentos en un mensaje y
pide al runtime local que lo envie al stub
servidor
Llamadas a Procedimiento
Remoto (RPC)
b)En la recepción de los resultados de la ejecución del
proceso, desempaqueta los mismos y los pasa al cliente.
Runtime RPC
Maneja la transmisión de mensajes a través de la red
entre las máquinas cliente y servidor.
Llamadas a Procedimiento
Remoto (RPC)
Stub servidor
Trabaja en forma simétrica a como lo hace el stub cliente.
Servidor
Cuando recibe un requerimiento de llamada del stub
servidor, ejecuta el procedimiento apropiado y retorna el
resultado de la misma al stub servidor.
Llamadas a Procedimiento Remoto (RPC)
Stubs de Cliente y Servidor
Espera por el resultado
Cliente
Llamada al Retorno de la
procedimiento remoto llamada
Requerimiento Respuesta
Servidor
Llama al procedimiento Tiempo
local y retorna el resultado
Principio de RPC entre un cliente y el programa servidor.
Llamadas a Procedimiento Remoto (RPC)
Pasaje de Parámetros por Valor
Máquina cliente Máquina servidor
proceso cliente proceso serv
[Link] del cliente
2-8
al procedimiento
Implementación [Link] stub hace una
de “add” llamada local a “add”
Stub servidor
Stub cliente
[Link] stub desempaca
[Link] stub construye el mensaje
el mensaje
[Link] SO del servidor
SO cliente SO serv maneja el mensaje al
stub del servidor
[Link] mensaje es
enviado por la red
Pasos que involucra hacer una computación remota por medio de RPC