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
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