Modelo cliente-servidor

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar

El modelo cliente-servidor o arquitectura cliente-servidor es una estructura de aplicación distribuida que divide tareas o cargas de trabajo entre los proveedores de un recurso o servicio, denominados servidores, y los solicitantes del servicio, denominados clientes. A menudo, los clientes y los servidores se comunican a través de una red informática en hardware independiente, pero tanto el cliente como el servidor pueden residir en el mismo sistema. Un host de servidor ejecuta uno o más programas de servidor, que comparten sus recursos con los clientes. Un cliente normalmente no comparte ninguno de sus recursos, pero solicita contenido o servicio de un servidor. Los clientes, por lo tanto, inician sesiones de comunicación con los servidores, que esperan las solicitudes entrantes. Ejemplos de aplicaciones informáticas que utilizan el modelo cliente-servidor son el correo electrónico, la impresión en red y la World Wide Web.

Rol de cliente y servidor

La característica "cliente-servidor" describe la relación de los programas que cooperan en una aplicación. El componente de servidor proporciona una función o servicio a uno o varios clientes, que inician solicitudes de dichos servicios. Los servidores se clasifican según los servicios que prestan. Por ejemplo, un servidor web sirve páginas web y un servidor de archivos sirve archivos de computadora. Un recurso compartido puede ser cualquier software y componentes electrónicos de la computadora del servidor, desde programas y datos hasta procesadores y dispositivos de almacenamiento. La compartición de recursos de un servidor constituye un servicio.

Si una computadora es un cliente, un servidor o ambos, está determinado por la naturaleza de la aplicación que requiere las funciones de servicio. Por ejemplo, una sola computadora puede ejecutar un servidor web y un software de servidor de archivos al mismo tiempo para brindar diferentes datos a los clientes que realizan diferentes tipos de solicitudes. El software del cliente también puede comunicarse con el software del servidor dentro de la misma computadora. La comunicación entre servidores, como la sincronización de datos, a veces se denomina comunicación entre servidores o de servidor a servidor.

Comunicación cliente y servidor

En general, un servicio es una abstracción de los recursos informáticos y un cliente no tiene que preocuparse por el rendimiento del servidor al cumplir con la solicitud y entregar la respuesta. El cliente solo tiene que entender la respuesta basada en el conocido protocolo de aplicación, es decir, el contenido y el formato de los datos para el servicio solicitado.

Los clientes y servidores intercambian mensajes en un patrón de mensajería de solicitud-respuesta. El cliente envía una solicitud y el servidor devuelve una respuesta. Este intercambio de mensajes es un ejemplo de comunicación entre procesos. Para comunicarse, las computadoras deben tener un lenguaje común y deben seguir reglas para que tanto el cliente como el servidor sepan qué esperar. El idioma y las reglas de comunicación se definen en un protocolo de comunicaciones. Todos los protocolos operan en la capa de aplicación. El protocolo de la capa de aplicación define los patrones básicos del diálogo. Para formalizar aún más el intercambio de datos, el servidor puede implementar una interfaz de programación de aplicaciones (API).La API es una capa de abstracción para acceder a un servicio. Al restringir la comunicación a un formato de contenido específico, facilita el análisis. Al abstraer el acceso, facilita el intercambio de datos entre plataformas.

Un servidor puede recibir solicitudes de muchos clientes distintos en un período corto. Una computadora solo puede realizar una cantidad limitada de tareas en cualquier momento y depende de un sistema de programación para priorizar las solicitudes entrantes de los clientes para acomodarlas. Para evitar abusos y maximizar la disponibilidad, el software del servidor puede limitar la disponibilidad para los clientes. Los ataques de denegación de servicio están diseñados para explotar la obligación de un servidor de procesar solicitudes al sobrecargarlo con tasas de solicitud excesivas. Se debe aplicar el cifrado si se va a comunicar información confidencial entre el cliente y el servidor.

Ejemplo

Cuando un cliente del banco accede a los servicios bancarios en línea con un navegador web (el cliente), el cliente inicia una solicitud al servidor web del banco. Las credenciales de inicio de sesión del cliente pueden almacenarse en una base de datos y el servidor web accede al servidor de la base de datos como cliente. Un servidor de aplicaciones interpreta los datos devueltos aplicando la lógica comercial del banco y proporciona la salida al servidor web. Finalmente, el servidor web devuelve el resultado al navegador web del cliente para su visualización.

En cada paso de esta secuencia de intercambios de mensajes cliente-servidor, una computadora procesa una solicitud y devuelve datos. Este es el patrón de mensajería de solicitud-respuesta. Cuando se cumplen todas las solicitudes, la secuencia se completa y el navegador web presenta los datos al cliente.

Este ejemplo ilustra un patrón de diseño aplicable al modelo cliente-servidor: separación de intereses.

Historia temprana

Una forma temprana de arquitectura cliente-servidor es la entrada remota de trabajos, que data al menos de OS/360 (anunciado en 1964), donde la solicitud era ejecutar un trabajo y la respuesta era la salida.

Al formular el modelo cliente-servidor en las décadas de 1960 y 1970, los informáticos que construyeron ARPANET (en el Instituto de Investigación de Stanford) utilizaron los términos host-servidor (o host servidor) y host-usuario (o host -usuario), y estos aparecen en los primeros documentos RFC 5 y RFC 4. Este uso continuó en Xerox PARC a mediados de la década de 1970.

Un contexto en el que los investigadores utilizaron estos términos fue en el diseño de un lenguaje de programación de redes informáticas llamado Decode-Encode Language (DEL). El propósito de este lenguaje era aceptar comandos de una computadora (el usuario-host), que devolvería informes de estado al usuario a medida que codificaba los comandos en paquetes de red. Otra computadora con capacidad DEL, el host-servidor, recibió los paquetes, los decodificó y devolvió los datos formateados al host-usuario. Un programa DEL en el host de usuario recibió los resultados para presentarlos al usuario. Esta es una transacción cliente-servidor. El desarrollo de DEL recién comenzaba en 1969, el año en que el Departamento de Defensa de los Estados Unidos estableció ARPANET (predecesor de Internet).

Cliente-host y servidor-host

Cliente-host y servidor-host tienen significados sutilmente diferentes a los de cliente y servidor. Un host es cualquier computadora conectada a una red. Mientras que las palabras servidor y cliente pueden referirse tanto a una computadora como a un programa de computadora, servidor-host y cliente-host siempre se refieren a computadoras. El anfitrión es una computadora multifunción versátil; los clientes y servidores son solo programas que se ejecutan en un host. En el modelo cliente-servidor, es más probable que un servidor se dedique a la tarea de servir.

Un uso temprano de la palabra cliente ocurre en "Separación de datos de función en un sistema de archivos distribuido", un artículo de 1978 de los científicos informáticos de Xerox PARC Howard Sturgis, James Mitchell y Jay Israel. Los autores son cuidadosos al definir el término para lectores y explican que lo usan para distinguir entre el usuario y el nodo de red del usuario (el cliente). En 1992, la palabra servidor había entrado en el lenguaje general.

Computación centralizada

El modelo cliente-servidor no dicta que los servidores-hosts deban tener más recursos que los clientes-hosts. Más bien, permite que cualquier computadora de uso general amplíe sus capacidades mediante el uso de los recursos compartidos de otros hosts. Sin embargo, la computación centralizada asigna específicamente una gran cantidad de recursos a una pequeña cantidad de computadoras. Cuanta más computación se descargue de los hosts de los clientes a las computadoras centrales, más simples pueden ser los hosts de los clientes.Depende en gran medida de los recursos de la red (servidores e infraestructura) para el cálculo y el almacenamiento. Un nodo sin disco carga incluso su sistema operativo desde la red, y una terminal de computadora no tiene sistema operativo en absoluto; es solo una interfaz de entrada/salida para el servidor. Por el contrario, un cliente enriquecido, como una computadora personal, tiene muchos recursos y no depende de un servidor para las funciones esenciales.

A medida que las microcomputadoras disminuyeron en precio y aumentaron en potencia desde la década de 1980 hasta fines de la década de 1990, muchas organizaciones hicieron la transición de la computación de servidores centralizados, como mainframes y minicomputadoras, a clientes enriquecidos. Esto permitió un dominio mayor e individualizado sobre los recursos informáticos, pero complicó la gestión de la tecnología de la información. Durante la década de 2000, las aplicaciones web maduraron lo suficiente como para rivalizar con el software de aplicación desarrollado para una microarquitectura específica. Esta maduración, el almacenamiento masivo más asequible y el advenimiento de la arquitectura orientada a servicios fueron algunos de los factores que dieron lugar a la tendencia de computación en la nube de la década de 2010.

Comparación con la arquitectura peer-to-peer

Además del modelo cliente-servidor, las aplicaciones informáticas distribuidas suelen utilizar la arquitectura de aplicaciones punto a punto (P2P).

En el modelo cliente-servidor, el servidor a menudo se diseña para operar como un sistema centralizado que atiende a muchos clientes. Los requisitos de potencia informática, memoria y almacenamiento de un servidor deben escalarse de forma adecuada a la carga de trabajo esperada. Los sistemas de equilibrio de carga y conmutación por error a menudo se emplean para escalar el servidor más allá de una sola máquina física.

El equilibrio de carga se define como la distribución metódica y eficiente del tráfico de red o de aplicaciones entre varios servidores en una granja de servidores. Cada balanceador de carga se ubica entre los dispositivos cliente y los servidores backend, recibe y luego distribuye las solicitudes entrantes a cualquier servidor disponible capaz de cumplirlas.

En una red peer-to-peer, dos o más computadoras (pares) agrupan sus recursos y se comunican en un sistema descentralizado. Los pares son nodos coiguales o equipotentes en una red no jerárquica. A diferencia de los clientes en una red cliente-servidor o cliente-cola-cliente, los pares se comunican entre sí directamente. En las redes de igual a igual, un algoritmo en el protocolo de comunicaciones de igual a igual equilibra la carga, e incluso los iguales con recursos modestos pueden ayudar a compartir la carga. Si un nodo deja de estar disponible, sus recursos compartidos permanecen disponibles siempre que otros pares lo ofrezcan. Idealmente, un par no necesita lograr una alta disponibilidad porque otros pares redundantes compensan cualquier tiempo de inactividad del recurso; a medida que cambia la disponibilidad y la capacidad de carga de los pares, el protocolo redirige las solicitudes.

Tanto el cliente-servidor como el maestro-esclavo se consideran subcategorías de sistemas distribuidos de igual a igual.

Contenido relacionado

Los hermanos Wright

Multivibrador

Puerto serial

Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save