Procesamiento distribuido, cliente/servidor y clusters Capítulo 14
Computación cliente/servido Las máquinas cliente son normalmente simples PCs o estaciones de trabajo que proporcionan una interfaz gráfica de fácil manejo al usuario final Cada servidor proporciona un conjunto de servicios compartidos a los clientes El servidor permite a los clientes compartir el acceso a una misma base de datos y permite el uso de sistemas de computación de alto rendimiento para gestionar la base de datos
Terminología cliente/servidor Interfaz de programación de aplicaciones (Applications Programming Interface, API) Un conjunto de funciones y programas que permiten a los clientes y servidores intercomunicarse Cliente Un elemento de la red que solicita información, normalmente un PC o estación de trabajo. Puede interrogar a una base de datos o solicitar información de un servidor Middleware Un conjunto de controladores, API, y software adicional que mejoran la conectividad entre una aplicación cliente y servidor Base de datos relacional Una base de datos en la que el acceso a la información está restringido por la selección de filas que satisfacen todos los criterios de búsqueda Servidor Un computador, normalmente una estación de trabajo de gran potencia, un minicomputador, o un mainframe, que almacena la información para los clientes de la red Lenguaje Estructurado de Consultas (Structured Query Language, SQL) Lenguaje desarrollado por IBM y estandarizado por ANSI que permite acceder, crear, actualizar e interrogar bases de datos relacionales
Figura 14.1. Entorno genérico cliente/servidor LAN o WAN Internet Servidor Estación de trabajo (cliente) Figura 14.1. Entorno genérico cliente/servidor
Aplicaciones cliente/servidor El software básico es un sistema operativo que ejecuta sobre el hardware de la plataforma La plataforma y el sistema operativo del cliente y del servidor pueden ser diferentes Estas diferencias de bajo nivel no son relevantes siempre que el cliente y el servidor compartan los mismos protocolos de comunicación y soporten las mismas aplicaciones
Figura 14.2. Arquitectura genérica cliente/servidor Estación trabajo cliente Servicios de presentación Lógica de aplicación (parte de cliente) Software de comunicaciones Sistema operativo cliente Plataforma hardware Servidor Petición Lógica de aplicación (parte de servidor) Software de comunicaciones Sistema operativo servidor Plataforma hardware Respuesta Interacción del protocolo Figura 14.2. Arquitectura genérica cliente/servidor
Aplicaciones cliente/servidor La mayor parte del software de aplicación ejecuta en el servidor La lógica de la aplicación está situada en el cliente Servicios de presentación en la parte del cliente
Aplicaciones de base de datos El servidor es un servidor de base de datos La interacción entre el cliente y el servidor se realiza a través de transacciones El cliente realiza una petición a la base de datos y recibe una respuesta El servidor es responsable del mantenimiento de la base de datos
Estación de trabajo cliente Servicios de presentación Lógica de aplicación Lógica de base de datos Software de comunicaciones Sistema operativo cliente Plataforma hardware Servidor Consulta Lógica de base de datos Software de comunicaciones Sistema gestor de base de datos Sistema operativo servidor Plataforma hardware Respuesta Interacción del protocolo Figura 14.3. Arquitectura cliente/servidor para aplicaciones de base de datos
Uso de una base de datos en un entorno cliente/servidor Consulta inicial Servidor 100.000 posibles registros Cliente Siguiente consulta 1.000 registros posibles Consulta final Un registro devuelto Base de datos con 1.000.000 de registros (a) Uso deseable cliente/servidor
Uso de una base datos en un entorno cliente/servidor Consulta Cliente 300.000 registros devueltos Base de datos con 1.000.000 de registros (b) Uso incorrecto cliente/servidor Figura 14.4. Uso de una base de datos en un entorno cliente/servidor
Clases de aplicaciones cliente/servidor Procesamiento basado en el host No es una verdadera computación cliente/servidor Entornos mainframe tradicionales Cliente Servidor Lógica de presentación Lógica de aplicación Lógica de bases de datos DBMS (a) Procesamiento basado en el host
Clases de aplicaciones cliente/servidor Procesamiento basado en el servidor El servidor realiza todo el procesamiento El cliente proporciona la interfaz gráfica de usuario Cliente Servidor Lógica de presentación Lógica de aplicación Lógica de base de datos DBMS (b) Procesamiento basado en el servidor
Clases de aplicaciones cliente/servidor Procesamiento basado en el cliente Todo el procesamiento se puede realizar en el cliente Las rutinas de validación de datos y otras funciones de la lógica de la base de datos se realizan en el servidor Cliente Lógica de presentación Lógica de aplicación Lógica de base de datos Servidor Lógica de base de datos DBMS (c) Procesamiento basado en el cliente
Clases de aplicaciones cliente/servidor Procesamiento cooperativo El procesamiento de aplicación se realiza de forma óptima Es más compleja de configurar y de mantener Cliente Lógica de presentación Lógica de aplicación Servidor Lógica de aplicación Lógica de base de datos DBMS (d) Procesamiento cooperativo
Arquitectura cliente/servidor de tres capas El software de la aplicación se distribuye entre tres tipos de máquinas Máquina de usuario Cliente ligero Servidor en la capa central Pasarela Convertir protocolos Mezclar/integrar los resultados de diferentes fuentes de datos Servidor en segundo plano (backend)
Figura 14.6. Arquitectura cliente/servidor de tres capas Servidor de la capa central (servidor de aplicación) Servidores en segundo plano (servidores de datos) Figura 14.6. Arquitectura cliente/servidor de tres capas
Consistencia de la cache de ficheros La cache de ficheros almacena los registros de los ficheros para almacenar los registros de los ficheros a los que se ha accedido recientemente La cache es consistente cuando contiene copias exactas de los datos remotos El bloqueo de ficheros evita accesos simultáneos a un fichero
Figura 14.7. Cache de ficheros distribuida en Sprite Red Tráfico de ficheros Tráfico de servidor Disco de servidor Tráfico de ficheros Cache de cliente Cache de servidor (server cache) Cache de cliente Tráfico de disco Tráfico de disco Disco de servidor Disco de cliente Figura 14.7. Cache de ficheros distribuida en Sprite
Middleware Conjunto de herramientas que proporciona una manera y estilo de acceso uniforme a los recursos del sistema a través de todas las plataformas Permite a los programadores construir aplicaciones que parezcan iguales Permite que los programadores utilicen el mismo método para acceder a los datos
Estación de trabajo cliente Servicios de presentación Lógica de aplicación Middleware Software de comunicaciones Sistema operativo cliente Plataforma hardware Servidor Interacción middleware Middleware Software de comunicaciones Servicios de aplicación Sistema operativo servidor Plataforma hardware Interacción del protocolo Figura 14.8. El papel del middleware en la arquitectura cliente/servidor
Figura 14.9. Visión lógica del middleware Aplicación Aplicación Middleware (servicios del sistema distribuido) Interfaces de la plataforma Plataforma: SO y Hardware Plataforma: SO y Hardware Figura 14.9. Visión lógica del middleware
Mecanismos middleware Cliente Servidor Aplicación Middleware orientado a mensajes (con cola de mensajes) Transporte Red Aplicación Middleware orientado a mensajes (con cola de mensajes) Transporte Red Mensajes específicos de aplicación (a) Middleware orientado a mensajes (con cola de mensajes)
Mecanismos middleware Cliente Servidor Aplicación Programa esqueleto RPC Transporte Red Programa esqueleto RPC Aplicación Transporte Red Innovaciones y respuestas de procedimientos específicos de aplicación (b) Llamada a procedimiento remoto
Mecanismos middleware Servidor Cliente Aplicación Programa esqueleto RPC Transporte Red Mediador de solicitud de objeto Transporte Red Servidor de objetos Transporte Red Solicitud de objetos y respuestas Solicitud de objetos y respuestas (c) Mediador de solicitud de objeto Figura 14.10. Mecanismos middleware
Paso de mensajes distribuido Paso de mensajes que se utiliza para la comunicación entre procesos Envía (Send) y recibe (Receive) mensajes tal y como se utilizan en un único sistema Llamadas a procedimiento remoto
Primitivas básicas de paso de mensajes Proceso emisor Proceso receptor Módulo de paso de mensajes Módulo de paso de mensajes IdProceso Mensaje Figura 14.11. Primitivas básicas de paso de mensajes
Fiable vs. no fiable Un servicio fiable de paso de mensajes garantiza la entrega si es posible No es necesario informar al proceso emisor de que el mensaje ha sido enviado El servicio de paso de mensajes no fiable envía el mensaje por la red pero no se le indica ni el éxito ni el fracaso Reduce enormemente la complejidad y la sobrecarga
Bloqueante vs. no bloqueante No se suspende a un proceso como resultado de realizar un Send o Receive Eficiente y flexible Difícil de depurar programas que utilicen estas primitivas Bloqueante Una primitiva Send no devuelve el control al proceso emisor hasta que el mensaje ha sido transmitido Send no devuelve el control al proceso hasta que se haya recibido el acuse de recibo Receive no devuelve el control hasta que el mensaje ha sido situado en su correspondiente buffer
Llamadas a procedimiento remoto Permite a los programas en diferentes máquinas interactuar a través del uso de llamadas a procedimiento Ampliamente aceptadas Estandarizadas Los módulos cliente y servidor se pueden mover fácilmente entre computadoras y sistemas operativos
Figura 14.12. Mecanismo de llamadas a procedimiento remoto Aplicación servidora remota Aplicación cliente Respuesta local Respuesta local Llamada a procedimiento local Llamada a procedimiento local Respuesta local Aplicación local o sistema operativo Esqueleto local Esqueleto local Llamada a procedimiento remoto Mecanismo RPC Mecanismo RPC Llamada a procedimiento remoto Figura 14.12. Mecanismo de llamadas a procedimiento remoto
Enlace cliente/servidor El enlace especifica la relación entre un procedimiento remoto y el programa llamante Enlace no permanente Se establece la conexión lógica entre los dos procesos en el momento de la llamada a procedimiento remoto Enlaces persistentes Se establece una conexión después de la finalización del procedimiento
Síncronos vs. asíncronos RPC síncrono Se comporta como una llamada a subrutina RPC asíncrono No bloquean al llamante Permite al cliente ejecutar en paralelo con el servidor
Mecanismos orientados a objetos Clientes y servidores mandan mensajes entre objetos Un cliente manda una petición a un mediador de solicitud de objeto El mediador llama al objeto apropiado y le transfiere todos los datos relevantes Modelo de Componentes de Objeto de Microsoft (Microsoft’s Component Object Model, COM) Arquitectura Común de Mediador de Solicitud de Objeto (Common Object Request Broker Architecture, CORBA)
Clusters Alternativa al Multiprocesamiento Simétrico (Symmetric Multiprocessing, SMP) Grupo de computadoras completas e interconectadas, que trabajan juntas como un recurso de computación unificado Pueden crear la ilusión de ser una única máquina El sistema puede ejecutar por sí mismo
Método de Cluster Descripción Beneficios Limitaciones Pasivo en Espera En caso de fallo en el servidor primario, un servidor secundario toma control.. Fácil de implementar. Alto coste debido a que el servidor secundario no está disponible para procesar otras tareas. Secundario Activo El servidor secundario también se utiliza para procesamiento de tareas. Coste reducido porque el servidor secundario puede ser utilizado para procesamiento. Creciente complejidad. Diferentes Servidores Cada servidor tiene sus propios discos. Los datos se copian continuamente del servidor primario al secundario. Alta disponibilidad. Alta sobrecarga de red y de servidor debido a las operaciones de copia. Servidores Conectados a Discos Los servidores están unidos a los mismos discos, pero cada servidor posee sus propios discos, Si un servidor falla el otro servidor toma control de sus discos. Sobrecarga de red y de servidores reducida debido a la eliminación de las operaciones de copia Normalmente requiere tecnologías de replicación de discos o RAID para compensar el riesgo de fallo de disco. Servidores Comparten Discos Varios servidores comparten acceso a disco de forma simultánea. Baja sobrecarga de red y de servidores. Reducido riesgo de periodos de inactividad causados por fallos de disco. Requiere software de gestión de cerrojos. Normalmente se utiliza con tecnologías de replicación de discos o RAID.
Clusters Servidor diferente Cada computadora es un servidor diferente No hay discos compartidos Se necesita algún tipo de software de gestión o de planificación Se debe copiar constantemente la información entre los sistemas, de forma que cada sistema tenga acceso a los datos actualizados de otros sistemas
Configuraciones de los clusters Enlace de mensajes de alta velocidad M E/S E/S E/S E/S M (a) Servidor en espera sin disco compartido
Clusters Nada compartido (Shared Nothing) Reduce la sobrecarga de las comunicaciones Los discos comunes se particionan en volúmenes Cada volumen pertenece a una computadora Si falla una computadora, el cluster se debe reconfigurar para que otra computadora tome posesión del volumen de la computadora que falló
Configuraciones de los clusters Enlace de mensajes de alta velocidad E/S P P P P E/S M E/S E/S E/S E/S M (b) Disco compartido
Clusters Disco compartido Múltiples computadoras comparten los mismos discos al mismo tiempo Cada computadora tiene acceso a todos los volúmenes de todos los discos
Aspectos de diseño de sistemas operativos Gestión de fallos Un cluster de alta disponibilidad ofrece alta posibilidad de que todos los servicios estén en servicio No garantiza el estado de las transacciones parcialmente realizadas si ocurre algún fallo Un cluster tolerante a fallos asegura que todos los recursos están siempre disponibles
Aspectos de diseño de sistemas operativos Equilibrado de carga Cuando se añade una nueva computadora al cluster, el servicio de equilibrado de carga debe incluir automáticamente la nueva computadora en la planificación de las aplicaciones Computación paralela Compilación paralela Aplicaciones paralelas Computación paramétrica
Arquitectura de un cluster Servicios y funciones del middleware de cluster Un único punto de entrada Una única jerarquía de ficheros Un único punto de control Una única red virtual Un único espacio de memoria Un único sistema de control de trabajos
Arquitectura de un cluster Servicios y funciones del middleware de cluster Un único interfaz de usuario Un único espacio de E/S Un único espacio de procesos Puntos de control Migración de procesos
Arquitectura de un cluster Aplicaciones paralelas Aplicaciones secuenciales Entorno de programación paralela Middleware de cluster (Imagen del sistema e infraestructura de disponibilidad) PC/Estación de trabajo PC/Estación de trabajo PC/Estación de trabajo PC/Estación de trabajo PC/Estación de trabajo Sw comunicaciones Sw comunicaciones Sw comunicaciones Sw comunicaciones Sw comunicaciones Hw interfaz red Hw interfaz red Hw interfaz red Hw interfaz red Hw interfaz red Red de alta velocidad/conmutador Figura 14.14. Arquitectura de computación cluster [BUYY99a]
Cluster frente a SMP SMP es más fácil de gestionar y configurar SMP ocupa menos espacio físico y gasta menos energía Los productos SMP están bien establecidos y son muy estables Los clusters son superiores que SMP en relación a la escalabilidad incremental y absoluta Los clusters son superiores en términos de disponibilidad
Servidor cluster de Windows Servicio Cluster La colección de software de cada nodo que gestiona toda la actividad específica del cluster Recurso Un elemento gestionado por el servicio cluster En línea (online) Se dice que un recurso está en línea en un nodo cuando está proporcionando servicio en ese nodo específico Grupo Una colección de recursos gestionada como una unidad
Figura 14.15. Diagrama de bloques del Windows Cluster Server [SHOR97] Herramientas de gestión del cluster API DLL del cluster RPC Gestor actualizaciones globales Servicio de cluster Gestor de base de datos Procesador de eventos Gestor de nodos DLL recursos aplicación Gestor de recursos Gestor de recuperación de fallos Gestor de comunicaciones Otros nodos Monitor de recursos Interfaz de gestión de recursos DLL recursos aplicación DLL recursos aplicación DLL recursos aplicación App no conscientes App conscientes del cluster Figura 14.15. Diagrama de bloques del Windows Cluster Server [SHOR97]
Sun Cluster Principales componentes Soporte de objetos y comunicaciones Gestión de procesos Redes Sistema de ficheros distribuido global
Figura 14.16. Estructura de Sun Cluster Aplicaciones Interfaz de llamadas al sistema Otros nodos Red Sun cluster Sistema de ficheros Procesos Invocación de objetos C++ Estructura de objetos Núcleo Solaris existente Figura 14.16. Estructura de Sun Cluster
Figura 14.17. Extensiones del sistema de ficheros de sun Cluster Núcleo Interfaz nodo-v/VFS Cache Capa proxy Invocación al objeto Núcleo Interfaz nodo-v/VFS Implementación del objeto Cache Interfaz nodo-v/VFS Sistema de ficheros Sistema de ficheros Sistema de ficheros Sistema de ficheros (a) Solaris estándar (b) Sun cluster Figura 14.17. Extensiones del sistema de ficheros de sun Cluster
Clusters Beowulf y Linux Principales características Componentes genéricos disponibles en el mercado Procesadores dedicados (mejor que ciclos disponibles de estaciones de trabajo ociosas) Una red privada y dedicada (LAN o WAN o una combinación de redes) Ningún componente propio Fácilmente replicable para múltiples vendedores
Clusters Beowulf y Linux Principales características E/S escalable Basado en software gratuito disponible Utiliza herramientas de computación gratuitas con mínimos cambios Retorno del diseño y de las mejoras a la comunidad
Figura 14.18. Configuración genérica de Beowulf Almacenamiento compartido distribuido Estaciones de trabajo Linux Ethernet o Ethernets interconectados Figura 14.18. Configuración genérica de Beowulf