Servidores Multihilos
El uso de clientes multihilos presenta importantes beneficios para los sistemas distribuidos, pero el uso principal de la tecnología multihilos está del lado del servidor. Veamos sus características.
Ventajas y desventajas
El uso de hilos en el lado del servidor proporciona las siguientes ventajas que redundan en la mejora del rendimiento para las aplicaciones distribuidas:
- Iniciar un hilo es más barato que comenzar un nuevo proceso.
- Tener un servidor multihilos evita la ampliación a un sistema con multiprocesadores.
- Un hilo no afecta a otros hilos. En un servidor multihilos, si se produce algún error en cualquiera de los hilos, ningún otro hilo se verá afectado, todos los demás hilos seguirán ejecutándose con normalidad. En un servidor de hilo único, todos los demás clientes tenían que esperar si ocurría algún problema en el hilo.
- Al igual que con los clientes: oculta la latencia de la red reaccionando a la siguiente solicitud mientras la anterior está siendo respondida.
- Rápido y eficiente: el servidor multihilo podría responder de manera eficiente y rápida a las crecientes consultas de los clientes rápidamente.
- El tiempo de espera para los usuarios disminuye: en un servidor hilo único, otros usuarios tenían que esperar hasta que se completara el proceso en ejecución, pero en servidores multihilos, todos los usuarios pueden obtener una respuesta a la vez, por lo que ningún usuario tiene que esperar a que finalicen otros procesos.
Pero las ventajas relevantes descansan en que proporciona aplicaciones mejor estructuradas ya que simplifica el flujo de la información:
- La mayoría de los servidores tienen altas demandas de solicitudes E/S. Con las llamadas con bloqueos, se simplifica la estructura general de la aplicación.
- Los programas multihilos tienden a ser más pequeños y fáciles de entender debido a que se simplifica el flujo de la información.
Las desventajas de esta arquitectura:
- Código complicado: puede resultar difícil escribir el código del servidor multihilo. Estos programas no se crean fácilmente.
- La depuración es difícil: analizar la razón principal y el origen del error no es fácil de seguir.
Organización del servidor multihilo
En la Figura 1 se ilustra la organización de un servidor multihilos. El servidor espera una petición de entrada para una operación de archivo, posteriormente ejecuta la petición, y luego envía la respuesta de regreso.
Refiriéndonos a la Figura 1, un hilo servidor, lee las peticiones de entrada para una operación con archivos. Las peticiones son enviadas por clientes hacia un puerto conocido por este servidor. Después de examinar la petición, el hilo en el servidor elije un hilo trabajador sin utilizar (desbloqueado) y le asigna la petición.
El hilo trabajador procede a realizar una lectura con acción de bloqueo en el sistema de archivos local, ello puede provocar que el hilo se suspenda hasta que los datos sean recuperados desde el disco local. Si el hilo se suspende, se puede selecciona otros hilo para su ejecución. Por ejemplo, el hilo servidor puede seleccionar la adquisición de más hilos trabajadores.
![]() |
| Figura 1. Servidor MultiHilo |
Arquitectura para servidores multihilos.
En la arquitectura de hilos por solicitud (Figura 2), el hilo de E/S genera un nuevo hilo de trabajo por cada solicitud, y ese hilo trabajador se destruye a sí mismo cuando ha procesado la solicitud contra el objeto remoto designado. Esta arquitectura tiene la ventaja de que los hilos no compiten por una cola compartida y el rendimiento se maximiza potencialmente ya que el hilo de E/S puede crear tantos hilos trabajadores como solicitudes pendientes. La desventaja es la sobrecarga de las operaciones en la creación y destrucción de hilos.
![]() |
| Figure 2: Servidores multihilos por solicitud |
![]() |
| Figure 3: Servidores multihilos por conexión |
La arquitectura hilo por objeto en la Figura 4, asocia un hilo con cada objeto remoto. Un subproceso de E/S recibe solicitudes y las pone en cola para los trabajadores, pero esta vez hay una cola por objeto. En cada una de estas dos últimas arquitecturas, el servidor se beneficia de una gestión de hilos con bajo costo si se compara con la arquitectura de hilos por solicitud.
![]() |
| Figure 4: Servidores multihilos por objeto |
Su desventaja es que los clientes pueden retrasarse mientras un hilo de trabajo tiene varios solicitudes pendientes pero otro hilo no tiene trabajo que realizar.
Ejemplo de servidor multihilo.
En esta dirección Servidor multihilo puede ver y ejecutar un servidor multihilo
Bibliografía
[1]George Coulouris et al. Distributed Systems: Concepts and Design. 5th. USA: Addison-Wesley Publishing Company, 2011
[2]M van Steen and A.S. Tanenbaum. Distributed Systems. Edited by Pearson Prentice Hall. Third. distributed-systems.net, 2017




No hay comentarios.:
Publicar un comentario