stringtranslate.com

Modelo cliente-servidor

Un diagrama de red informática de clientes que se comunican con un servidor a través de Internet.

El modelo cliente-servidor es una estructura de aplicación distribuida que divide tareas o cargas de trabajo entre los proveedores de un recurso o servicio, llamados servidores , y los solicitantes de servicios, llamados clientes . [1] A menudo, los clientes y los servidores se comunican a través de una red informática en hardware separado, pero tanto el cliente como el servidor pueden residir en el mismo sistema. Un servidor host 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 a un servidor. Por lo tanto, los clientes 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 del 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 brindan. Por ejemplo, un servidor web sirve páginas web y un servidor de archivos sirve archivos informáticos . Un recurso compartido puede ser cualquiera de los componentes electrónicos y software de la computadora servidor, desde programas y datos hasta procesadores y dispositivos de almacenamiento . Compartir los 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 del servicio. Por ejemplo, una sola computadora puede ejecutar un servidor web y un software de servidor de archivos al mismo tiempo para entregar 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. [2] 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

Generalmente, un servicio es una abstracción de recursos informáticos y un cliente no tiene que preocuparse por el rendimiento del servidor mientras cumple la solicitud y entrega la respuesta. El cliente sólo tiene que comprender la respuesta basada en el conocido protocolo de aplicación , es decir, el contenido y el formato de los datos del servicio solicitado.

Los clientes y servidores intercambian mensajes siguiendo 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 lenguaje 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). [3] 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 , se facilita el análisis . Al abstraer el acceso, facilita el intercambio de datos entre plataformas. [4]

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 atenderlas. 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 sobrecargándolo con tasas de solicitudes excesivas. Se debe aplicar cifrado si se va a comunicar información confidencial entre el cliente y el servidor.

Ejemplo

Cuando un cliente de un 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 ser s

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 científicos informáticos que crearon ARPANET (en el Instituto de Investigación de Stanford ) utilizaron los términos servidor-host (o servidor-host ) y usuario-host (o usando-host ), y estos aparecen en los primeros documentos RFC 5 [5] y RFC 4. [6] 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). [5] El propósito de este lenguaje era aceptar comandos de una computadora (el usuario-host), que devolvería informes de estado al usuario mientras codificaba los comandos en paquetes de red. Otra computadora con capacidad DEL, el servidor-host, recibió los paquetes, los decodificó y devolvió datos formateados al usuario-host. 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, 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 cliente y servidor . Un host es cualquier computadora conectada a una red. Mientras que las palabras servidor y cliente pueden referirse a una computadora o a un programa informático, servidor-host y cliente-host siempre se refieren a computadoras. El host es una computadora versátil y multifunción; 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 la 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 tienen cuidado al definir el término para los lectores y explican que lo utilizan para distinguir entre el usuario y el nodo de red del usuario (el cliente). [7] En 1992, la palabra servidor había entrado en el lenguaje general. [8] [9]

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 utilizando los recursos compartidos de otros hosts. La informática centralizada , sin embargo, asigna específicamente una gran cantidad de recursos a una pequeña cantidad de computadoras. Cuanto más cálculo se descarga desde los hosts-clientes a las computadoras centrales, más simples pueden ser los hosts-clientes. [10] Depende en gran medida de los recursos de la red (servidores e infraestructura) para la computación y el almacenamiento. Un nodo sin disco carga incluso su sistema operativo desde la red, y un terminal de computadora no tiene ningún sistema operativo; es sólo una interfaz de entrada/salida para el servidor. Por el contrario, un cliente rico , como una computadora personal , tiene muchos recursos y no depende de un servidor para funciones esenciales.

A medida que las microcomputadoras bajaron de precio y aumentaron en potencia desde la década de 1980 hasta finales de la de 1990, muchas organizaciones hicieron la transición de la computación de servidores centralizados, como mainframes y minicomputadoras , a clientes ricos. [11] Esto permitió un dominio mayor y más individualizado sobre los recursos informáticos, pero complicó la gestión de la tecnología de la información . [10] [12] [13] 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, un almacenamiento masivo más asequible y el advenimiento de la arquitectura orientada a servicios estuvieron entre los factores que dieron lugar a la tendencia de la computación en la nube de la década de 2010. [14] [ verificación fallida ]

Comparación con la arquitectura peer-to-peer

Además del modelo cliente-servidor, las aplicaciones informáticas distribuidas suelen utilizar la arquitectura de aplicación peer-to-peer (P2P).

En el modelo cliente-servidor, el servidor suele estar diseñado para funcionar como un sistema centralizado que atiende a muchos clientes. Los requisitos de potencia informática, memoria y almacenamiento de un servidor deben adaptarse adecuadamente a la carga de trabajo esperada. A menudo se emplean sistemas de equilibrio de carga y conmutación por error para escalar el servidor más allá de una única máquina física. [15] [16]

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 de una granja de servidores. Cada equilibrador de carga se ubica entre los dispositivos cliente y los servidores backend, recibiendo y luego distribuyendo las solicitudes entrantes a cualquier servidor disponible capaz de cumplirlas.

En una red peer-to-peer , dos o más computadoras ( peers ) agrupan sus recursos y se comunican en un sistema descentralizado . Los pares son nodos iguales 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. [ cita necesaria ] En las redes de igual a igual, un algoritmo en el protocolo de comunicaciones de igual a igual equilibra la carga , e incluso los pares con recursos modestos pueden ayudar a compartir la carga. [ cita necesaria ] Si un nodo deja de estar disponible, sus recursos compartidos permanecen disponibles siempre que otros pares los ofrezcan. Idealmente, un par no necesita lograr alta disponibilidad porque otros pares redundantes compensan cualquier tiempo de inactividad de los recursos ; a medida que cambian la disponibilidad y la capacidad de carga de los pares, el protocolo redirige las solicitudes.

Tanto cliente-servidor como maestro-esclavo se consideran subcategorías de sistemas distribuidos punto a punto. [17]

Ver también

Notas

  1. ^ "Arquitectura de aplicaciones distribuidas" (PDF) . Microsistema solar. Archivado desde el original (PDF) el 6 de abril de 2011 . Consultado el 16 de junio de 2009 .
  2. ^ El sistema X Window es un ejemplo.
  3. ^ Benatallah, B.; Casati, F.; Toumani, F. (2004). "Modelado de conversaciones de servicios web: una piedra angular para la automatización del comercio electrónico". Computación de Internet IEEE . 8 : 46–54. doi :10.1109/MIC.2004.1260703. S2CID  8121624.
  4. ^ Dustdar, S.; Schreiner, W. (2005). "Una encuesta sobre la composición de los servicios web" (PDF) . Revista internacional de servicios web y grid . 1 : 1. CiteSeerX 10.1.1.139.4827 . doi :10.1504/IJWGS.2005.007545. 
  5. ^ ab Rulifson, Jeff (junio de 1969). DEL. IETF . doi : 10.17487/RFC0005 . RFC5 .Consultado el 30 de noviembre de 2013 .
  6. ^ Shapiro, Elmer B. (marzo de 1969). Horario de la red. IETF . doi : 10.17487/RFC0004 . RFC4 .Consultado el 30 de noviembre de 2013 .
  7. ^ Sturgis, Howard E.; Mitchell, James George; Israel, Jay E. (1978). "Separación de datos de funciones en un sistema de archivos distribuido". XeroxPARC .
  8. ^ Harper, Douglas. "servidor". Diccionario de etimología en línea . Consultado el 30 de noviembre de 2013 .
  9. ^ "Separar datos de funciones en un sistema de archivos distribuido". Conseguir información . Biblioteca Nacional Alemana de Ciencia y Tecnología . Archivado desde el original el 2 de diciembre de 2013 . Consultado el 29 de noviembre de 2013 .
  10. ^ ab Nieh, Jason; Yang, S. Jae; Novik, Naomi (2000). "Una comparación de arquitecturas informáticas de cliente ligero". Comunes Académicos . doi : 10.7916/D8Z329VF . Consultado el 28 de noviembre de 2018 .
  11. ^ d'Amore, MJ; Oberst, DJ (1983). "Microcomputadoras y mainframes". Actas de la undécima conferencia anual ACM SIGUCCS sobre servicios de usuario - SIGUCCS '83 . pag. 7. doi : 10.1145/800041.801417. ISBN 978-0897911160. S2CID  14248076.
  12. ^ Tolia, Niraj; Andersen, David G.; Satyanarayanan, M. (marzo de 2006). "Cuantificación de la experiencia del usuario interactivo en clientes ligeros" (PDF) . Computadora . Sociedad de Computación IEEE . 39 (3): 46–52. doi :10.1109/mc.2006.101. S2CID  8399655.
  13. ^ Otey, Michael (22 de marzo de 2011). "¿Es la nube realmente sólo el regreso de la computación mainframe?". SQL Server Pro . Medios Penton . Archivado desde el original el 3 de diciembre de 2013 . Consultado el 1 de diciembre de 2013 .
  14. ^ Barros, AP; Dumas, M. (2006). "El auge de los ecosistemas de servicios web". Profesional de TI . 8 (5): 31. doi :10.1109/MITP.2006.123. S2CID  206469224.
  15. ^ Cardellini, V.; Colajanni, M.; Yu, PS (1999). "Equilibrio de carga dinámico en sistemas de servidores web". Computación de Internet IEEE . Instituto de Ingenieros Eléctricos y Electrónicos (IEEE). 3 (3): 28–39. doi : 10.1109/4236.769420. ISSN  1089-7801.
  16. ^ "¿Qué es el equilibrio de carga? Cómo funcionan los equilibradores de carga". NGINX . 1 de junio de 2014 . Consultado el 21 de enero de 2020 .
  17. ^ Varma, Vasudeva (2009). "1: Introducción a la arquitectura de software". Arquitectura de software: un enfoque basado en casos . Delhi: Pearson Education India. pag. 29.ISBN 9788131707494. Consultado el 4 de julio de 2017 . Sistemas distribuidos punto a punto [...] Este es un estilo genérico cuyos estilos populares son los estilos cliente-servidor y maestro-esclavo.