Arquitectura Cliente-Servidor: Conceptos Esenciales y Gestión de Sistemas Distribuidos
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 4,11 KB
Arquitectura Cliente-Servidor: Interacción y Transparencia
La interacción de usuarios con servidores se puede dar de dos formas:
- Protocolo específico de la aplicación.
- Protocolo independiente de la aplicación.
Transparencia en la Interacción Cliente-Servidor
La transparencia de acceso se logra a través de una matriz cliente, a partir de una definición de interfaz de lo que el servidor tiene que ofrecer. Esto oculta las arquitecturas de las máquinas y la comunicación real subyacente.
El middleware del cliente oculta la ubicación del servidor, facilitando una interacción fluida.
Estrategias de Resiliencia y Disponibilidad
Replicación y Tratamiento de Fallas
La replicación se implementa por medio de soluciones del lado del cliente.
El tratamiento de fallas incluye:
- Enmascaramiento de fallas del lado del cliente.
- Repetición de la conexión.
Modelos de Servidores y su Comportamiento
Servidor Iterativo vs. Servidor Concurrente
Servidor Iterativo: El servidor manipula la petición y, si es necesario, devuelve una respuesta.
Servidor Concurrente: El servidor no manipula la petición directamente, sino que usa hilos o procesos separados y queda en espera de la siguiente petición.
Comunicación y Puertos
El cliente envía la petición a un puerto en particular. Cada servidor atiende a un puerto específico.
Consideraciones de Diseño y Estado del Servidor
Problemas antes del diseño:
- Interrumpir un servidor. Mejor solución: Cliente/servidor pueden enviar datos fuera de banda, en otro puerto.
- Movilidad del servidor (si el servidor se desplaza o no).
Servidor sin estado (Stateless): No mantiene información persistente de los clientes, pero puede modificar su propio estado.
Servidor con estado (Stateful): Mantiene información persistente de los clientes.
Arquitecturas de Servidores Avanzadas
Servidores en Clúster
Colección de máquinas conectadas a una red, donde cada máquina ejecuta uno o más servidores.
Servidores Distribuidos
Los servidores anteriores son configurados de forma estática. Se utiliza una máquina separada para efectuar la administración. Se proporcionan varios puntos de acceso (ej. Servicio de DNS). Si un servidor falla, los clientes realizan varios intentos para reconectarse.
Administración de Servidores en Clústeres
Si p es la probabilidad de que un servidor esté fallando. Se asume que las fallas son independientes, entonces para un clúster de N servidores, la probabilidad de operar sin que haya un solo servidor con fallas es (1-p)N.
Ejemplo: Si p = 0.001 y N = 1000, la probabilidad es del 36% de que todos los servidores funcionen correctamente.
Migración de Código en Sistemas Distribuidos
Razones para la Migración de Código
- Rendimiento.
- Optimización de la capacidad de cómputo (menos importante que minimizar la comunicación).
Modelos para la Migración de Código
La migración de código puede implicar:
- Comunicación enfocada al intercambio de datos entre procesos.
- Movimiento de programas entre máquinas ejecutándose en el mismo destino.
Marco de trabajo (framework): Un proceso consta de tres segmentos:
- Segmento de código: Instrucciones.
- Recursos: Referencia a recursos externos.
- Ejecución: Estado de la ejecución.
Tipos de Movilidad de Código
Movilidad Débil: Transferir solo el segmento de código.
Movilidad Fuerte: Transferir el segmento de código y el segmento de ejecución.
Movilidad Débil vs. Movilidad Fuerte: Un proceso puede detenerse y luego moverse a otra máquina para continuar su ejecución (característica de la movilidad fuerte).