Los Sistemas Operativos Distribuidos – Cliente/Servidor – Parte I

Este primer párrafo lo escribí varias veces, comencé con algo muy agresivo y ya para esta hora me siento un poco más tranquilo. Es que a uno lo vienen a molestar con planteos desde la primera hora de la mañana… Planteos estúpidos, de niños, planteos que me llevan a la primaria, aquella edad escolar en la que uno se ofendía porque tu “amigo” jugaba con otro…

Me doy cuenta que estoy viejo, que protesto más, y que hay muchas pendejadas que ya no me van… Acomodemos las ideas y volvamos al tema que nos compete.

Como hemos visto hasta ahora, la arquitectura Cliente/Servidor o arquitectura de 2 niveles, identifica dos componentes que trabajan coordinadamente para dar la visión de un sistema único. Se diferencia de otras variantes de sistemas distribuidos en los siguientes conceptos:

  1. Servicio – La relación cliente/servidor es la relación primaria entre dos procesos que se ejecutan en computadoras separadas. El servidor provee servicios y está a la escucha de requerimientos, mientras que el cliente solicita y consume servicios.
  2. Recursos Compartidos – Los recursos compartidos en un sistema distribuido son administrados por los servidores que regulan el acceso a los mismos por parte de los clientes.
  3. Protocolos Asimétricos – Hay una relación muchos a uno entre clientes y servidores. Por su parte la relación es asimétrica dado que los clientes siempre inician el diálogo y los servidores esperan los requerimientos.
  4. Transparencia de la Ubicación – El servidor es un proceso que puede residir en la misma computadora del cliente o en otra computadora de la red, siendo transparente para el cliente dicha ubicación.
  5. Comunicación basada en pregunta-respuesta – Clientes y servidores son procesos poco acoplados que interactúan a través de mensajes de tipo pregunta-respuesta, pudiendo ser estos sincrónicos o asincrónicos.
  6. Escalabilidad – Los sistemas Cliente/Servidor pueden crecer moderadamente de manera horizontal (agregando clientes) o de manera vertical (potenciando al servidor).

Estas características aportan una distribución inteligente de funcionalidades a través de la red y otorgan un marco para el desarrollo de aplicaciones poco acopladas.

Por otra parte, para poder crear la visión de sistema único que requieren los sistemas distribuidos, es preciso contar con una infraestructura tecnológica que soporte cada una de las funciones.

La infraestructura red y comunicaciones ha crecido vertiginosamente en los últimos 20 años permitiendo un grado de interconexión global con alto ancho de banda y medios de transporte seguros y confiables.

El desafío de la industria informática es como agregar por encima de esta infraestructura física la arquitectura Cliente/Servidor que permitan unir las piezas del rompecabezas. Este desafío obliga a proveer:

  • Protocolos de transporte que soporten el intercambio entre redes de computadores en forma confiable.
  • Sistemas operativos de red que garanticen seguridad y privacidad y faciliten a los programas la tarea de encontrar los servicios que necesitan consumir
  • Bases de datos para almacenar, recuperar y organizar grandes volúmenes de información incluso multimedial.
  • Sistemas GroupWare que permitan el intercambio persona a persona y conferencias grupales.
  • Agentes inteligentes que ayuden a los humanos a organizar sus actividades en el ciberespacio
  • Plataformas de gerenciamiento de sistemas distribuidos que permitan mantener todo unido día a día.

Roles y Funciones del Servidor

El rol de un programa servidor es servir a múltiples clientes que requieren acceder a recursos compartidos que son propiedad del servidor.

Veamos en detalle las funciones principales de un programa servidor:

  • Espera por requerimientos iniciados por el cliente – Un programa servidor gasta gran parte de su tiempo esperando pasivamente requerimientos de los clientes que llegan generalmente en forma de mensajes arribando sobre una sesión de comunicación. Algunos servidores asignan sesiones dedicadas a cada cliente y otros crean un pool dinámico de sesiones reusables. Otros utilizan una combinación de ambos métodos. Lo cierto es que el servidor debe garantizar pronta respuesta a los requerimientos del cliente independientemente del mecanismo.
  • Ejecuta muchos requerimientos a la vez – Un programa servidor que no soporta multitarea corre el riesgo de tener “en espera” a un cliente monopolizando recursos. El servidor debe ser capaz de servir concurrentemente a múltiples clientes protegiendo la integridad de los recursos compartidos.
  • Atiende primero a los cliente VIP – El programa servidor debe ser capaz de proveer distintos niveles de prioridad en los servicios a sus clientes. Claramente un servicio batch tendrá prioridad más baja que un servicio de tipo interactivo.
  • Inicia y corre tareas en segundo plano (background) – El programa servidor debe ser capaz de lanzar tareas que corren en background y que no estan relacionadas con la tarea principal que se esta ejecutando.
  • Mantiene la corrida – Un programa servidor es una aplicación de misión crítica por lo cual debe garantizar un mantenimiento de su corrida y es tolerante a fallas.
  • Crece a lo ancho y a lo largo – Un programa servidor tiene un apetito insaciable de memoria y capacidad de procesamiento por lo tanto debe ser escalable y modular.


Variantes de Servidores

Los sistemas Cliente/Servidor se clasifican en función del tipo de servicio que proveen los servidores, es decir, cual es el recurso que administran.

Estos recursos pueden ser archivos, datos, objetos, elementos de comunicación entre personas o transacciones.

Servidores de Archivos – El recurso administrado es un archivo, concebido como conjunto de registro. El cliente solicita un archivo y el servidor responde enviando, a través de la red, bloques de registros. Es el mecanismo mas primitivo para acceder los datos dentro de un sistema de información. Aquí se muestra la comunicación de este tipo de servidores con sus clientes.



•    Servidores de Base de Datos – El cliente envía requerimientos SQL como mensajes a un servidor de base de datos. El resultado de cada comando SQL es retornado a través de la red. La diferencia con el esquema anterior es que es el servidor el que procesa el mensaje y retorna los datos requeridos en lugar de retornar registro por registro como en un esquema servidor de archivos.



•    Servidores de Transacciones – El cliente invoca un procedimiento remoto que reside en el servidor en un motor de base de datos. Este proceso remoto ejecuta un con- junto de sentencias SQL. El intercambio de red consiste en un único request/reply a diferencia del esquema anterior donde hay un mensaje request/reply por cada co­mando SQL. Este conjunto de sentencias SQL agrupadas se conocen con el nombre de transacción y constituyen una unidad atómica que tiene éxito o falla en su conjunto. Con este esquema se desarrollan aplicaciones donde el código se distribuye entre servidor (procesos de datos y reglas de negocios) y cliente (interface gráfica).



• Servidores para Grupos de Trabajo – Son sistemas que permiten manejar información semi-estructurada como texto, imagen, mail, boletines y flujo de tareas.



• Servidores de Objetos – Con este esquema las aplicaciones Cliente/Servidor se es­cribe como un conjunto de objetos que se comunican. Los objetos clientes se comunican con los servidores usando Object Request Broker (ORB). ORB localiza una instancia de la clase del objeto servidor, invoca el método requerido y retorna los resultados a la instancia del objeto cliente.



La termino acá…

Deja un comentario