0% encontró este documento útil (0 votos)
16 vistas57 páginas

Comunicación en Sistemas Distribuidos

El documento aborda la comunicación en sistemas distribuidos, destacando modelos de comunicación, pasaje de mensajes, y tipos de comunicación como sincrónica y asincrónica. Se discuten características deseables de un sistema de pasaje de mensajes, incluyendo simplicidad, eficiencia, confiabilidad, y seguridad. Además, se exploran conceptos de comunicación indirecta y el modelo de llamadas a procedimiento remoto (RPC) como un mecanismo para la intercomunicación de procesos.

Cargado por

Facundo
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
16 vistas57 páginas

Comunicación en Sistemas Distribuidos

El documento aborda la comunicación en sistemas distribuidos, destacando modelos de comunicación, pasaje de mensajes, y tipos de comunicación como sincrónica y asincrónica. Se discuten características deseables de un sistema de pasaje de mensajes, incluyendo simplicidad, eficiencia, confiabilidad, y seguridad. Además, se exploran conceptos de comunicación indirecta y el modelo de llamadas a procedimiento remoto (RPC) como un mecanismo para la intercomunicación de procesos.

Cargado por

Facundo
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

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

También podría gustarte