Está en la página 1de 9

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD

ESCUELA DE CIENCIAS BSICAS, TECNOLOGA E INGENIERA


CONTENIDO DIDCTICO DEL CUSO: 302090 SISTEMAS DISTRIBUIDOS

CAPITULO 3: ASPECTOS DE DISEO DE UN SISTEMA DISTRIBUIDO

Introduccin
El desarrollo e implementacin de un Sistema Distribuido requiere tener muy en
cuenta los aspectos de diseo, entre los que se destacan los diferentes mtodos
de comunicacin entre procesos, la utilizacin de APIs, el diseo de sockets y las
estructuras de los mensajes.

Leccin 9: Comunicacin entre procesos
La comunicacin entre procesos (Figura 36) es un conjunto de tcnicas para el
intercambio de datos entre dos o ms hilos
68
en uno o ms procesos. Los
procesos pueden estar en ejecucin en un computador o en dos o ms
computadores conectados en red.
Figura 36. Comunicacin entre Procesos

Fuente: Autor
Las tcnicas de comunicacin entre procesos son divididas en mtodos para: paso
de mensajes, sincronizacin, memoria compartida y llamada de procedimiento
remoto (RPC / Remote procedure call). A continuacin se presentan los diferentes
mtodos de comunicacin entre procesos y los sistemas operativos en los cuales
operan:

68
Es un proceso concurrente que es parte de un proceso mayor o de un programa. En un sistema operativo
multitarea, un simple programa puede tener varios hilos, todos ejecutndose al mismo tiempo. Ejemplo: Una
parte de un programa puede estar haciendo un clculo mientras que otra parte est dibujando un grfico.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BSICAS, TECNOLOGA E INGENIERA
CONTENIDO DIDCTICO DEL CUSO: 302090 SISTEMAS DISTRIBUIDOS

Mtodo de CEP Suministrado por los Sistemas Operativos
Archivo Todos los Sistemas Operativos
Seal UNIX, LINUX, WINDOWS con la librera C Runtime
Socket WINDOWS, UNIX, LINUX
Pipe / canal UNIX, LINUX
Semforo UNIX, LINUX
Memoria Compartida UNIX, LINUX
Paso de Mensajes Java RMI, CORBA
Mapeo de Memoria UNIX, LINUX, WINDOWS mediante APIs
Cola de Mensajes WINDOWS, UNIX, LINUX
Buzn de Correo WINDOWS, UNIX, LINUX

1. Paso de mensajes
El paso de mensajes (Figura 37) es una tcnica empleada en programacin
concurrente para aportar sincronizacin entre procesos y permitir la exclusin
mutua, de manera similar a como se hace con los semforos, monitores, etc. Los
elementos principales que intervienen en el paso de mensajes son el proceso que
enva, el que recibe y el mensaje.
Dependiendo de la confiabilidad del mensaje la tcnica de paso de mensajes es:
No Fiable: El mensaje puede llegar una vez, ms de una vez, ninguna vez (por
ejemplo, UDP
69
).

Fiable: El mensaje llega exactamente una vez (por ejemplo, TCP
70
).
Figura 37. Sistema Cliente/Servidor con Paso de Mensajes

69
Protocolo del nivel de transporte basado en el intercambio de datagramas. Permite el envo de datagramas a
travs de la red sin que se haya establecido previamente una conexin, ya que el propio datagrama incorpora
suficiente informacin de direccionamiento en su cabecera.
70
Protocolo del nivel de transporte basado en el intercambio de flujo de datos. Muchos programas dentro de
una red de datos compuesta por computadores pueden usar TCP para crear conexiones entre ellos a travs de
las cuales enviarse datos. El protocolo garantiza que los datos sern entregados en su destino sin errores y en
el mismo orden en que se transmitieron. Tambin proporciona un mecanismo para distinguir distintas
aplicaciones dentro de una misma mquina, a travs del concepto de puerto.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BSICAS, TECNOLOGA E INGENIERA
CONTENIDO DIDCTICO DEL CUSO: 302090 SISTEMAS DISTRIBUIDOS


Fuente: Autor
Ordenacin FIFO: Se garantiza que los mensajes se entregan al receptor en
el orden en el que fueron enviados por el emisor (por ejemplo, TCP).


2. API para protocolos en Internet: UDP, TCP
La interfaz del programa de aplicacin (API) para UDP proporciona una
abstraccin del tipo paso de mensajes, la forma ms simple de comunicacin
entre procesos (Figura 38). Esto hace que el proceso emisor pueda transmitir un
mensaje simple al proceso receptor. Los paquetes independientes que contienen
estos mensajes se llaman datagramas
71
. Tanto en Java como en cada API
UNIX, el emisor especifica el destino utilizando un zcalo, conector o socket
(una referencia indirecta a un puerto particular utilizada por el proceso destino en
el computador destino).
Figura 38. API para protocolos en Internet


71
Fragmento de paquete que es enviado con la suficiente informacin como para que la red pueda
simplemente encaminar el fragmento hacia el computador receptor, de manera independiente a los fragmentos
restantes.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BSICAS, TECNOLOGA E INGENIERA
CONTENIDO DIDCTICO DEL CUSO: 302090 SISTEMAS DISTRIBUIDOS

Fuente: Autor
La interfaz del programa de aplicacin de TCP proporciona la abstraccin de un
flujo (stream) de dos direcciones entre pares de procesos. La informacin
intercambiada consiste en un flujo de tems de datos sin lmites entre mensajes.
Los flujos son un bloque bsico para la construccin de la comunicacin
productor-consumidor. Un productor y un consumidor forman un par de procesos
en los cuales el papel del primero es producir tems de datos y el papel del
segundo es consumirlos. Los tems de datos enviados por el productor al
consumidor se colocan en una cola a su llegada hasta que el consumidor est en
disposicin de recibirlos. El consumidor debe esperar cuando no haya datos
disponibles. El productor debe esperar si se llena el almacenamiento utilizado para
guardar la cola con los tems de datos.

3. Caractersticas de la comunicacin entre procesos
72

Para que un proceso se pueda comunicar con otro, el proceso enva un mensaje
(una secuencia de bytes) a un destino y otro proceso en el destino recibe el
mensaje. Esta actividad implica la comunicacin de datos desde el proceso emisor al
proceso receptor y puede implicar adems la sincronizacin de los dos procesos. A
continuacin se resaltan las caractersticas ms importantes de la comunicacin
entre procesos:

3.1 Comunicacin sncrona y asncrona
A cada destino de mensajes se asocia una cola. Los procesos emisores producen
mensajes que son aadidos a las colas remotas mientras que los procesos receptores
eliminan mensajes de las colas locales. La comunicacin entre los procesos emisor y
receptor puede ser sncrona o asncrona. En la forma sncrona, los procesos receptor
y emisor se sincronizan con cada mensaje. En este caso, tanto enva como recibe son
operaciones bloqueantes. A cada enva producido, el proceso emisor se bloquea hasta
que se produce el correspondiente recibe. Cuando se invoca un recibe, el proceso se
bloquea hasta que llega un mensaje.


72
COULOURIS George, DOLLIMORE Jean y KINDBERG Tim (2001): SISTEMAS DISTRIBUIDOS
Conceptos y Diseo. Pearson Addison Wesley.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BSICAS, TECNOLOGA E INGENIERA
CONTENIDO DIDCTICO DEL CUSO: 302090 SISTEMAS DISTRIBUIDOS

En la forma de comunicacin asncrona, la utilizacin de la operacin enva es no
bloqueante, de modo que el proceso emisor puede continuar tan pronto como el
mensaje haya sido copiado en el bfer local, y la transmisin del mensaje se lleva a
cabo en paralelo con el proceso emisor. La operacin recibe puede tener variantes
bloqueantes y no bloqueantes. En la variante no bloqueante, el proceso receptor sigue
con su programa despus de invocar la operacin recibe, la cual proporciona un bfer
que es llenado en un segundo plano, pero el proceso debe ser informado por separado
de que su bfer ha sido llenado, ya sea por el mtodo de encuesta o mediante una
interrupcin.

3.2 Destinos de los mensajes
En los protocolos Internet, los mensajes son enviados a direcciones construidas por
pares (direccin Internet, puerto local)
73
. Un puerto local es el destino de un mensaje
dentro de un computador, especificado como un nmero entero. Un puerto tiene
exactamente un receptor pero puede tener muchos emisores. Los procesos pueden
utilizar mltiples puertos desde los que recibir mensajes. Cualquier proceso que
conozca el nmero de puerto apropiado puede enviarle un mensaje. Generalmente, los
servidores hacen pblicos sus nmeros de puerto para que sean utilizados por los
clientes.

Si el cliente utiliza una direccin Internet fija para referirse a un servicio, entonces ese
servicio debe ejecutarse siempre en el mismo computador para que la direccin se
considere vlida.

3.3 Fiabilidad
Una comunicacin fiable se puede manejar en trminos de validez e integridad. En
lo que concierne a la propiedad de validez, se dice que un servicio de mensajes
punto a punto es fiable si se garantiza que los mensajes se entregan a pesar de
poder dejar caer o perder un nmero razonable de ellos. Por el contrario, puede
decirse que un servicio de mensajes punto a punto es no fiable si no se garantiza
la entrega de los mensajes ante la prdida o eliminacin incluso de un solo
paquete. Respecto a la integridad, los mensajes deben llegar sin corromperse ni
duplicarse.

73
Un ejemplo puede ser direccion: 192.168.6.45 puerto: 23 Notacin 192.168.6.45:23

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BSICAS, TECNOLOGA E INGENIERA
CONTENIDO DIDCTICO DEL CUSO: 302090 SISTEMAS DISTRIBUIDOS

3.4 Ordenacin
Algunas aplicaciones necesitan que los mensajes sean entregados en el orden de
su emisin, esto es, en el orden en el que fueron transmitidos por el emisor. La
entrega de mensajes desordenados, por esas aplicaciones, es considerada como
un fallo.

4. Sockets
Ambas formas de comunicacin (UDP y TCP) utilizan la abstraccin de sockets
74
, que
proporciona los puntos extremos de la comunicacin entre procesos. Los sockets
(conectores) se originan en UNIX BSD aunque estn presentes en la mayora de las
versiones de UNIX, incluido LINUX y tambin WINDOWS NT y Macintosh OS. La
comunicacin entre procesos consiste en la transmisin de un mensaje entre un conector
de un proceso y un conector de otro proceso, segn se muestra en la figura 39.
Figura 39. Sockets

Fuente: COULOURIS George, SISTEMAS DISTRIBUIDOS, Addison Wesley, Madrid, 2001, 3 Ed.

Para los procesos receptores de mensajes, su conector debe estar asociado a un puerto
local y a una de las direcciones Internet del computador donde se ejecuta. Los mensajes
enviados a una direccin de Internet y a un nmero de puerto concretos, slo pueden ser
recibidos por el proceso cuyo conector est asociado con esa direccin y con ese puerto.

74
Mecanismo de comunicacin entre procesos. Socket designa un concepto abstracto por el cual dos
programas (posiblemente situados en computadores distintos) pueden intercambiarse cualquier flujo de datos,
generalmente de manera fiable y ordenada. Un socket queda definido por un protocolo, por una direccin IP y
un nmero de puerto. Ejemplo: ftp://201.45.23.45:21

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BSICAS, TECNOLOGA E INGENIERA
CONTENIDO DIDCTICO DEL CUSO: 302090 SISTEMAS DISTRIBUIDOS

Figura 40. Operacin de los protocolos TCP y UDP

Fuente: Autor
Los procesos pueden utilizar un mismo conector tanto para enviar como para recibir
mensajes. Cada computador permite un gran nmero (216) de puertos posibles, que
pueden ser usados por los procesos locales para recibir mensajes. Cada proceso puede
utilizar varios puertos para recibir mensajes, pero un proceso no puede compartir puertos
con otros procesos del mismo computador. No obstante, cualquier cantidad de procesos
puede enviar mensajes a un mismo puerto. Cada conector se asocia con un protocolo
concreto, que puede ser UDP o TCP.

5. Comunicacin en plataformas P2P - Sistemas de Mensajes

Los Sistemas de Mensajes proporcionan un mtodo de comunicacin entre
aplicaciones o componentes software y son utilizados principalmente para el
desarrollo de aplicaciones P2P donde cliente del sistema puede enviar y recibir
mensajes de cualquier otro cliente. Cada cliente se conecta a un agente del
sistema de mensajes que proporciona facilidades para crear, enviar, recibir y leer
mensajes. Los sistemas de mensajes habilitan comunicaciones entre procesos
distribuidos con un bajo acoplamiento.
Un componente enva un mensaje a un destino y el receptor puede recuperar un
mensaje de un destino. Sin embargo, el emisor y el receptor no tienen porqu
estar disponibles al mismo tiempo para poder comunicarse, de hecho, el emisor no
necesita conocer nada sobre el receptor, ni el receptor conocer nada sobre el
emisor. El emisor y receptor slo necesitan conocer que formato de mensaje y qu

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BSICAS, TECNOLOGA E INGENIERA
CONTENIDO DIDCTICO DEL CUSO: 302090 SISTEMAS DISTRIBUIDOS

destino utilizar. Esta es una diferencia frente a modelos de comunicacin
distribuidos fuertemente acoplados, como por ejemplo la Invocacin Remota de
Mtodos, que requieren que la aplicacin conozca los mtodos remotos.

6. Caractersticas y utilizacin
Cualquier sistema de mensajes posee las siguientes propiedades caractersticas:
Soporta el reparto asncrono de mensajes, es decir, repartir los mensajes
cuando lleguen los clientes, sin necesidad de que tengan que solicitar los
mensajes para recibirlos.

Es un sistema fiable, es decir, tener la posibilidad de garantizar que un
mensaje slo se reparte una, y slo una, vez.


Aunque parecido en la filosofa al sistema de correo electrnico, su uso est
orientado a comunicar aplicaciones o componentes software en lugar de
interconectar personas o aplicaciones con personas.
La utilizacin de los Sistemas de Mensajes es adecuada cuando se dan las
siguientes circunstancias:
Se requiere que los componentes no dependan de la informacin acerca de
otras interfaces de componentes, de forma que los componentes puedan
reemplazarse fcilmente.

Se requiere que la aplicacin se ejecute independientemente de si todos los
componentes estn activos y ejecutndose simultneamente.

El modelo de negocio de la aplicacin permite que un componente enve
informacin a otro y pueda seguir operando sin recibir una respuesta
inmediata.
Con el fin de clarificar los conceptos se presenta la siguiente situacin que se da
en el mundo del automvil:
Un fabricante de automviles utiliza un componente software para gestionar su
inventario de automviles fabricados. Cuando el nmero de unidades de un
determinado modelo baja de una determinada cantidad, el componente
inventario puede enviar un mensaje al componente fbrica, solicitando la
fabricacin de ms coches. El componente fbrica puede enviar mensajes a los
componentes suministradores de piezas para obtener las piezas necesarias
en la fabricacin de nuevos coches. Los componentes asociados a los

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BSICAS, TECNOLOGA E INGENIERA
CONTENIDO DIDCTICO DEL CUSO: 302090 SISTEMAS DISTRIBUIDOS

suministradores de piezas pueden enviar mensajes a sus propios inventarios y
departamentos de pedidos para actualizar su inventario, y si llega el caso, solicitar
pedidos a sus Proveedores. Tanto la fbrica como los suministradores de piezas
pueden enviar mensajes al componente de contabilidad para actualizar sus
cuentas. La empresa puede comunicar su catlogo de productos actualizados al
departamento de ventas

También podría gustarte