COMUNICACIÓN EN LOS SISTEMAS DISTRIBUIDOS

COMUNICACIÓN
 EN LOS SISTEMAS DISTRIBUIDOS

ASPECTOS DE DISEÑO

Transparencia:
      La transparencia se define como la ocultación al usuario y al programador de aplicaciones de la separación de los componentes de un sistema distribuido, de manera que el sistema se percibe como un todo, en vez de una colección de componentes independientes. 

      La transparencia ejerce una gran influencia en el diseño del software de sistema.
     El manual de referencia RM-ODP [ISO 1996a] identifica ocho formas de transparencia. Estas  proveen un resumen útil de la motivación y metas de los sistemas distribuidos. Las transparencias definidas son:
  • Transparencia de Acceso : Permite el acceso a los objetos de información remotos de la misma forma que a los objetos de información locales.
  • Transparencia de Localización: Permite el acceso a los objetos de información sin conocimiento de su localización.
  • Transparencia de Concurrencia: Permite que varios procesos operen concurrentemente utilizando objetos de información compartidos y de forma que no exista interferencia entre ellos.
  • Transparencia de Replicación: Permite utilizar múltiples instancias de los objetos de información para incrementar la fiabilidad y las prestaciones sin que los usuarios o los programas de aplicación tengan por que conoces la existencia de las replicas.
  • Transparencia de Fallos: Permite a los usuarios y programas de aplicación completar sus tareas a pesar de la ocurrencia de fallos en el hardware o en el software.
  • Transparencia de Migración: Permite el movimiento de objetos de información dentro de un sistema sin afectar a los usuarios o a los programas de aplicación.
  • Transparencia de Prestaciones: Permite que el sistema sea reconfigurado para mejorar las prestaciones mientras la carga varia.
  • Transparencia de Escalado: Permite la expansión del sistema y de las aplicaciones sin cambiar la estructura del sistema o los algoritmos de la aplicación.
Flexibilidad:
     La flexibilidad se entiende como la capacidad de ampliar o extender el sistema con nuevas funcionalidades de forma sencilla. Un ejemplo claro de la flexibilidad es la que se consigue con el uso de soluciones de sistemas abiertos, ya que al estar basados en estándares y en interfaces y protocolos públicos no se depende de ningún fabricante a la hora de extender las funcionalidades del mismo.

Confiabilidad:
     La confiabilidad en los sistemas distribuidos se tiene que buscar desde dos puntos de vista distintos:
  • Confiabilidad como disponibilidad: es decir, se busca un sistema de alta disponibilidad mediante la redundancia de nodos y recursos.
  • Confiabilidad como coherencia: se tiene que buscar que la información que procesa el sistema siempre sea coherente, aspecto que en sistemas en los que se utiliza la redundancia se dificulta bastante.

Rendimiento:
    El rendimiento que se persigue no debe de ser peor que en un sistema centralizado y debe de ser proporcional al número de procesadores empleado. Para conseguirlo se deben de tener unas buenas políticas de equilibrado de carga. En este aspecto el principal problema es que a más número de procesadores más elementos críticos corren el riesgo de convertirse en cuellos de botella, por ejemplo la red de comunicaciones.


Escalabilidad:

     Los sistemas distribuidos operan de manera efectiva y eficiente a muchas escalas diferentes. La escala más pequeña consiste en dos estaciones de trabajo y un servidor de ficheros, mientras que un sistema distribuido construido alrededor de una red de área local simple podría contener varios cientos de estaciones de trabajo, varios servidores de ficheros, servidores de impresión y otros servidores de propósito especifico. A menudo se conectan varias redes de área local para formar internetworks, y éstas podrían contener muchos miles de ordenadores que forman un único sistema distribuido, permitiendo que los recursos sean compartidos entre todos ellos.


Tolerancia a Fallos:
     Los sistemas informáticos a veces fallan. Cuando se producen fallos en el software o en el hardware, los programas podrían producir resultados incorrectos o podrían pararse antes de terminar la computación que estaban realizando. El diseño de sistemas tolerantes a fallos se basa en dos cuestiones, complementarias entre sí: Redundancia hardware (uso de componentes redundantes) y recuperación del software (diseño de programas que sean capaces de recuperarse de los fallos).
     En los sistemas distribuidos la redundancia puede plantearse en un grano mas fino que el hardware, pueden replicarse los servidores individuales que son esenciales para la operación continuada de aplicaciones criticas.


MODELO CLIENTE – SERVIDOR

     La arquitectura cliente-servidor es un modelo de aplicación distribuida en el que las tareas se reparten entre los proveedores de recursos o servicios, llamados servidores, y los demandantes, llamados clientes. 

     La evolución de este modelo ha generado las siguientes arquitecturas:
  • Arquitectura cliente/servidor de 2 capas: el servidor divide el servicio en dos capas, la primera de presentación y lógica de negocio, y la segunda de acceso a datos. Este modelo dificulta el mantenimiento de las aplicaciones que lo siguen, al poco estructuradas debido a que se mezclaba la presentación de las aplicaciones con la lógica de negocio.
  • Arquitectura cliente/servidor de 3 o N capas: el servidor divide el servicio en 3 o más capas. Generalmente una capa de presentación, otra de lógica de negocio, y la tercera y última de acceso a datos. La mayoría de las aplicaciones Web actuales se desarrollan en base a esta arquitectura.
CLIENTE
     En la arquitectura Cliente-Servidor el remitente de una solicitud es conocido como cliente.
     Sus características son:
·         Es quien inicia solicitudes o peticiones, tienen por tanto un papel activo en la comunicación (dispositivo maestro o amo).
·         Espera y recibe las respuestas del servidor.
·         Por lo general, puede conectarse a varios servidores a la vez.
·         Normalmente interactúa directamente con los usuarios finales mediante una interfaz gráfica de usuario.
·         Al contratar un servicio de redes, se debe tener en cuenta la velocidad de conexión que le otorga al cliente y el tipo de cable que utiliza , por ejemplo : cable de cobre ronda entre 1 ms y 50 ms.
          SERVIDOR
     Al receptor de la solicitud enviada por el cliente se conoce como servidor.
     Sus características son:
·         Al iniciarse esperan a que lleguen las solicitudes de los clientes, desempeñan entonces un papel pasivo en la comunicación (dispositivo esclavo).
·         Tras la recepción de una solicitud, la procesan y luego envían la respuesta al cliente.
·         Por lo general, aceptan conexiones desde un gran número de clientes (en ciertos casos el número máximo de peticiones puede estar limitado).
·         No es frecuente que interactúen directamente con los usuarios finales.


CATEGORÍAS DE SERVIDORES

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


RED DE COMUNICACIÓN

    Una red de comunicación es básicamente un conjunto o sistema de equipos informáticos conectados entre sí, por medio de dispositivos físicos que envían y reciben impulsos eléctricos, ondas electromagnéticas o cualquier otro medio para el transporte de datos con la finalidad de compartir datos, información recursos y ofrecer servicios.

Características
    En primer lugar las redes de comunicaciones se pueden distinguir en función de si el camino por el que circula la información es posible en ambos sentidos o uno solo. Así, se tienen:
  • Redes de comunicaciones unidireccionales en las que la información viaja desde un emisor a un receptor, no existiendo camino de retorno para la comunicación inversa. Este tipo de comunicaciones se suele encontrar en las redes de difusión o distribución.
  • Redes de comunicaciones bidireccionales o interactivas: la información entre los extremos viaja en los dos sentidos, típicamente por el mismo camino, aunque también existen redes en que no tiene por que coincidir los caminos de ida y vuelta. Algunos ejemplos son las redes de telefonía y de datos.
  • Redes híbridas, en las que se integran tipos diferentes de redes; por ejemplo, una red unidireccional para un sentido de la comunicación es combinada con otra red para el camino de retorno. Estas soluciones fragmentarias permiten tener, por ejemplo, servicios interactivos de televisión, en la que ésta es recibida por la red de difusión terrestre o por satélite, mientras que las selecciones del usuario y sus peticiones de vídeo bajo demanda (VoD), se envían por Internet (sobre la red telefónica). 


 INTERFACES DE UN SERVICIO DE ARCHIVO
    Un aspecto importante del modelo de archivo es si éstos se pueden modificar después de su creación. Existen algunos sistemas distribuidos que permiten únicamente las operaciones de archivos CREATE Y READ. Una vez creado un archivo no se puede modificar. Se dice que tal archivo es inmutable. Estos archivos facilitan el ocultamiento y duplicación de archivos, puesto que esto elimina todos los problemas asociados con la actualización de todas las copias de un archivo cada vez que éste se modifique.
     Los servicios de archivos se pueden dividir en dos tipos, según si soportan un modelo carga /descarga o un modelo de acceso remoto.
     En el modelo carga/descarga el servicio de archivo sólo proporciona la lectura de un archivo y la escritura del mismo. En la lectura transfiere todo un archivo de uno de los servidores de archivos al cliente solicitante. La escritura transfiere todo un archivo en sentido contrario del cliente al servidor. Los archivos se pueden almacenar en memoria o en disco local, como sea necesario.
     El otro tipo de servicios de archivos el de acceso remoto, en este modelo se proporcionan un gran número de operaciones para abrir y cerrar archivos, leer y escribir parte de archivo, moverse a través de un archivo, examinar y modificar los atributos de archivos, etc. Mientras en el modelo carga/descarga el servicio de archivos sólo proporciona el almacenamiento físico y la transferencia, en este caso el sistema de archivos se ejecuta en los servidores y no en los clientes. Su ventaja es que no necesita mucho espacio por parte de los clientes, a la vez que elimina la necesidad de transferir archivo completos cuando sólo se necesita un parte de ellos.

LLAMADAS A PROCEDIMIENTOS REMOTOS


     En la actualidad son bastante comunes y utilizados por lo regular de manera diaria, pero son pocos conocen lo que son, las llamadas de procedimiento remoto o bien, PRC (Remote Procedure Call) por sus siglas en inglés.
     Una llamada de procedimiento remoto (RPC) consiste en un protocolo que permite a un software o programa ejecutar código en otra máquina remota sin preocuparse por la comunicación, por lo regular es bastante utilizado en el paradigma cliente y servidor. 
MIDDLEWARE
     Es un software que asiste a una aplicación para interactuar o comunicarse con otras aplicaciones, software, redes, hardware y/o sistemas operativos. Éste simplifica el trabajo de los programadores en la compleja tarea de generar las conexiones que son necesarias en los sistemas distribuidos. De esta forma se provee una solución que mejora la calidad de servicio, seguridad, envío de mensajes, directorio de servicio, etc.
      Funciona como una capa de abstracción de software distribuida, que se sitúa entre las capas de aplicaciones y las capas inferiores (sistema operativo y red). El middleware abstrae de la complejidad y heterogeneidad de las redes de comunicaciones subyacentes, así como de los sistemas operativos y lenguajes de programación, proporcionando una API para la fácil programación y manejo de aplicaciones distribuidas. Dependiendo del problema a resolver y de las funciones necesarias, serán útiles diferentes tipos de servicios de middleware. Por lo general el middleware del lado cliente está implementado por el Sistema Operativo, el cual posee las bibliotecas que ejecutan todas las funcionalidades para la comunicación a través de la red. 
          PROTOCOLOS DE COMUNICACION 
 Debido a la ausencia de memoria compartida, toda la comunicación en los sistemas distribuidos se basa en la transferencia de mensajes.·         Cuando el proceso “A” quiere comunicarse con el proceso “B”:
·         Construye un mensaje en su propio espacio de direcciones.
·         Ejecuta una llamada al sistema para que el S. O. busque el mensaje y lo envíe a través de la red hacia “B”.
·         Para evitar el caos, “A” y “B” deben coincidir en el significado de los bits que se envíen.
Los puntos de acuerdo necesarios incluyen lo siguiente:
¿Cuántos voltios hay que utilizar para un bit “0” y cuántos para un bit “1”?.
¿Cómo sabe el receptor cuál es el último bit del mensaje?.
¿Cómo puede detectar si un mensaje ha sido dañado o perdido, y qué debe hacer si lo descubre?.
¿Qué longitud tienen los números, cadenas y otros elementos de datos y cuál es la forma en que están representados?.
                    La ISO (Organización Internacional de Estándares) desarrolló un modelo de referencia que:
  • Identifica en forma clara los distintos niveles.
  • Estandariza los nombres de los niveles.
  • Señala cuál nivel debe realizar cuál trabajo.
      Este modelo se denomina “modelo de referencia para interconexión de sistemas abiertos” (ISO OSI o modelo OSI)
      El “modelo OSI” está diseñado para permitir la comunicación de los sistemas abiertos. Son aquellos preparados para comunicarse con cualquier otro sistema abierto mediante reglas estándar:

  • Establecen el formato, contenido y significado de los mensajes recibidos y enviados.
  • Constituyen los protocolos, que son acuerdos en la forma en que debe desarrollarse la comunicación.

No hay comentarios:

Publicar un comentario