Tema 3: Comunicación en los Sistemas Distribuidos

ASPECTOS  DE DISEÑO


Los sistemas distribuidos deben intentar proporcionar transparencia, eficiencia, flexibilidad, escalabilidad y fiabilidad. Sin embargo, estos aspectos son, en parte, contrarios y, por lo tanto, al diseñar un sistema distribuido se debe intentar cumplir de manera aceptable con cada uno de ellos:


  • Transparencia. El concepto de transparencia en un sistema distribuido, va ligado a la idea de que todo el sistema funcione de forma similar en todos los puntos de la red, independientemente de la posición del usuario. Es labor del sistema operativo establecer los mecanismos que oculten la naturaleza distribuida del sistema y que permitan trabajar a los usuarios como si de un único equipo se tratara.
  • Eficiencia. La idea base de los sistemas distribuidos es obtener sistemas que, estando formados por un conjunto de ordenadores, sean mucho más rápidos que cualquiera de estos ordenadores por separado. En la práctica, esto es una utopía. El coste asociado a la comunicación de las distintas máquinas que componen el sistema distribuido hace que sus prestaciones disminuyan de forma considerable.
  • Flexibilidad. Un campo en constante desarrollo como es el diseño de un sistema operativo distribuido, debe estar abierto a cambios y actualizaciones constantes que mejoren su funcionamiento. Esta necesidad ha generado dos posibles arquitecturas para el núcleo del sistema operativo: el núcleo monolítico y el micronúcleo. Las diferencias fundamentales entre ambos son los servicios que ofrece. Mientras el núcleo monolítico ofrece todas las funciones básicas del sistema, el micronúcleo incorpora solamente las fundamentales; como son, control y comunicación entre procesos, y gestión de la memoria. El resto de servicios se cargan dinámicamente en función de las demandas del usuario.
  • Escalabilidad. Un sistema operativo distribuido debería funcionar de igual forma tanto para unos pocos ordenadores como para un conjunto enorme de ellos. Igualmente, debería no ser determinante el tipo de red utilizada (LAN o WAN) ni las distancias físicas entre los equipos que la conforman. Aunque esto sería lo deseable; en la práctica, no ocurre. Del mismo modo, el tipo de red condiciona tremendamente el rendimiento del sistema; por tanto, puede que lo que funcione para un tipo de red, para otro requiera un nuevo diseño.
  • Fiabilidad. Una de las ventajas claras que ofrece la idea de un sistema distribuido, es que el funcionamiento del sistema no debe estar ligado a ciertas máquinas, sino que cualquier equipo pueda suplir a otro en caso de que uno se estropee o falle. La forma más evidente de lograr la fiabilidad de todo el sistema es el uso de redundancia, es decir, la información no debe estar almacenada en una sola máquina, sino en un conjunto de ellas.  

MODELO CLIENTE-SERVIDOR

Definición:

Sistema donde el cliente es una máquina que solicita un determinado servicio y se denomina servidor a la máquina que lo proporciona. Los servicios pueden ser:

  • Ejecución de un determinado programa.
  • Acceso a un determinado banco de información.
  • Acceso a un dispositivo de hardware.

Es un elemento primordial, la presencia de un medio físico de comunicación entre las máquinas, y dependerá de la naturaleza de este medio la viabilidad del sistema.
 

Categorías de Servidores:

A continuación se presenta una lista de los servidores más comunes:
  • Servidores de archivos.- Proporciona archivos para clientes. Si los archivos no fueran tan grandes y los usuarios que comparten esos archivos no fueran muchos, esto sería una gran opción de almacenamiento y procesamiento de archivos. El cliente solicita los archivos y el servidor los ubica y se los envía.
  • Servidores de Base de Datos.- Son los que almacenan gran cantidad de datos estructurados, se diferencian de los de archivos pues la información que se envía está ya resumida en la base de datos. Ejemplo: El Cliente hace una consulta, el servidor recibe esa consulta (SQL) y extrae solo la información pertinente y envía esa respuesta al cliente.
  • Servidores de Software de Grupo.- El software de grupo es aquel, que permite organizar el trabajo de un grupo. El servidor gestiona los datos que dan soporte a estas tareas. Por ejemplo: almacenar las listas de correo electrónico. El Cliente puede indicarle, que se ha terminado una tarea y el servidor se lo envía al resto del grupo.
  • Servidores WEB.- Son los que guardan y proporcionan Páginas HTML. El cliente desde un browser o link hace un llamado de la página y el servidor recibe el mensaje y envía la página correspondiente.
  • Servidores de correo.- Gestiona el envío y recepción de correo de un grupo de usuarios (el servidor no necesita ser muy potente). El servidor solo debe utilizar un protocolo de correo.
  • Servidor de objetos.- Permite almacenar objetos que pueden ser activados a distancia. Los clientes pueden ser capaces de activar los objetos que se encuentran en el servidor.
  • Servidores de impresión.- Gestionan las solicitudes de impresión de los clientes. El cliente envía la solicitud de impresión, el servidor recibe la solicitud y la ubica en la cola de impresión, ordena a la impresora que lleve a cabo las operaciones y luego avisa a la computadora cliente que ya acabo su respectiva impresión.
  • Servidores de aplicación.- Se dedica a una única aplicación. Es básicamente una aplicación a la que pueden acceder los clientes.

Componentes de Software:

Se distinguen tres componentes básicos de software:

  • Presentación.- Tiene que ver con la presentación al usuario de un conjunto de objetos visuales y llevar a cabo el procesamiento de los datos producidos por el mismo y los devueltos por el servidor.
  • Lógica de aplicación.- Esta capa es la responsable del procesamiento de la información que tiene lugar en la aplicación.
  • Base de datos.- Esta compuesta de los archivos que contienen los datos de la aplicación.

Arquitecturas Cliente / Servidor

A continuación mostramos las arquitecturas cliente-servidor más populares:

  • Arquitectura Cliente-Servidor de Dos Capas.- Consiste en una capa de presentación y lógica de la aplicación; y la otra de la base de datos. Normalmente esta arquitectura se utiliza en las siguientes situaciones:


    • Cuando se requiera poco procesamiento de datos en la organización.
    • Cuando se tiene una base de datos centralizada en un solo servidor.
    • Cuando la base de datos es relativamente estática.
    • Cuando se requiere un mantenimiento mínimo.


  • Arquitectura Cliente-Servidor de Tres Capas- Consiste en una capa de la Presentación, otra capa de la lógica de la aplicación y otra capa de la base de datos. Normalmente esta arquitectura se utiliza en las siguientes situaciones:


    • Cuando se requiera mucho procesamiento de datos en la aplicación.
    • En aplicaciones donde la funcionalidad este en constante cambio.
    • Cuando los procesos no están relativamente muy relacionados con los datos.
    • Cuando se requiera aislar la tecnología de la base de datos para que sea fácil de cambiar.
    • Cuando se requiera separar el código del cliente para que se facilite el mantenimiento.
    • Esta muy adecuada para utilizarla con la tecnología orientada a objetos.



Clasificación de los sistemas cliente servidor:

A continuación mostramos la clasificación de de los sistemas cliente/servidor de acuerdo al nivel de abstracción del servicio que ofrecen:
  1. Representación distribuida.- La interacción con el usuario se realiza en el servidor, el cliente hace de pasarela entre el usuario y el servidor.
  2. Representación Remota.-La lógica de la aplicación y la base de datos se encuentran en el servidor. El cliente recibe y formatea los datos para interactuar con el usuario.
  3. Lógica Distribuida.- El cliente se encarga de la interacción con el usuario y de algunas funciones triviales de la aplicación. Por ejemplo controles de rango de campos, campos obligatorios, etc. Mientras que el resto de la aplicación, junto con la base de datos, están en el servidor.
  4. Gestión Remota de Datos.- El cliente realiza la interacción con el usuario y ejecuta la aplicación y el servidor es quien maneja los datos.


  1. Base de Datos Distribuidas.- El cliente realiza la interacción con el usuario, ejecuta la aplicación, debe conocer la topología de la red, así como la disposición y ubicación de los datos. Se delega parte de la gestión de la base de datos al cliente.                                                  
  1. Cliente servidor a tres niveles.- El cliente se encarga de la interacción con el usuario, el servidor de la lógica de aplicación y la base de datos puede estar en otro servidor.


MIDDLEWARE

Definición:
Capa de software intermedio entre el cliente y el servidor. Es la capa de software que nos permiten gestionar los mecanismos de comunicaciones. Ejemplo si se hace la petición de una página web desde un browser en el cliente, el middleware determina la ubicación y envía una petición para dicha página. El servidor Web, interpreta la petición y envía la página al software intermedio, quien la dirige al navegador de la máquina cliente que la solicitó.

Existen dos tipos:


  • Software intermedio general. Servicios generales que requieren todos los clientes y servidores, por ejemplo: software para las comunicaciones usando el TCP/IP, software parte del sistema operativo que, por ejemplo, almacena los archivos distribuidos, software de autenticación, el software intermedio de mensajes de clientes a servidores y viceversa.
  • Software intermedio de servicios. Software asociado a un servicio en particular, por ejemplo: software que permite a dos BD conectarse a una red cliente/servidor (ODBC: Conectividad abierta de BD), software de objetos distribuidos, por ejemplo la tecnología CORBA permite que objetos distribuidos creados en distintos lenguajes coexistan en una misma red (intercambien mensajes), software intermedio para software de grupo, software intermedio asociado a productos de seguridad específicas (Conexiones Seguras: Sockets), etc.
  • Independiza el servicio de su implantación, del sistema operativo y de los protocolos de comunicaciones.
  • Permite la convivencia de distintos servicios en un mismo sistema.
  • Permite la transparencia en el sistema.
  • Modelo tradicional: Monitor de teleproceso o CICS, Tuxedo, Encina.
  • Modelo OO: CORBA.


PROTOCOLO DE COMUNICACIÓN 

Definición:
Es un conjunto bien conocido de reglas y formatos que se utilizan para la comunicación entre procesos que realizan una determinada tarea. Se requieren dos partes:

  • Especificación de la secuencia de mensajes que se han de intercambiar.
  • Especificación del formato de los datos en los mensajes.
  • IP: Protocolo de Internet.- Protocolo de la capa de Red, que permite definir la unidad básica de transferencia de datos y se encarga del direccionamiento de la información, para que llegue a su destino en la red.
  • TCP: Protocolo de Control de Transmisión.- Protocolo de la capa de Transporte, que permite dividir y ordenar la información a transportar en paquetes de menor tamaño para su transporte y recepción.
  • HTTP: Protocolo de Transferencia de Hipertexto.- Protocolo de la capa de aplicación, que permite el servicio de transferencia de páginas de hipertexto entre el cliente WEB y los servidores.
  • SMTP: Protocolo de Transferencia de Correo Simple.- Protocolo de la capa de aplicación, que permite el envío de correo electrónico por la red.
  • POP3: Protocolo de Oficina de Correo.- Protocolo de la capa de aplicación, que permite la gestión de correos en Internet, es decir, le permite a una estación de trabajo recuperar los correos que están almacenados en el servidor.






No hay comentarios:

Publicar un comentario