Existen diferentes arquitecturas de servidores web … pero creo que es seguro decir que uno de los primeros pasos es poner en cola las solicitudes entrantes.
Cada solicitud hecha al servidor web viene a través del puerto TCP 80/443 por defecto.
En el nivel de TCP / OS, un nuevo socket se pone en cola para manejar la solicitud.
(El primer nivel de comportamiento asíncrono ocurre fuera del proceso del servidor web).
El servidor web está escuchando estos puertos, y es notificado por el sistema operativo de la llegada.
El servidor web recoge la solicitud y la coloca en una cola de procesamiento.
(Este es el siguiente nivel de comportamiento asíncrono, dentro del proceso del servidor web)
Los primeros servidores web tendrían un conjunto de procesos de trabajo . Cuando un proceso de trabajo estaba inactivo, sacaría una solicitud de la cola para procesarla.
- ¿Hay un trabajo de consultor de TI que requiera semanas de viajes de negocios al extranjero y le impide hacer llamadas telefónicas personales para “proteger la información”?
- ¿Cuáles son las mejores herramientas de reporte de estado en el mercado?
- ¿Se utiliza la tecnología de la información para reducir la desigualdad de ingresos?
- ¿Qué tan bueno es el curso de MBA-IT de SCIT?
- ¿Cuáles son algunos buenos temas de tesis para un estudiante de TI?
Por ejemplo, algunas tareas bien definidas que se realizan:
– comprobación de memoria / caché para respuesta válida / no caducada
– realice I / O simple y recupere el archivo del disco
– redirigir a un servidor de aplicaciones (php, ruby, procesador de nodo)
(o utilizando un módulo interno para el procesamiento)
– …
El mayor avance se produjo en 2005. 10 años después de que se lanzara Apache, Nginx lanzó un subproceso de trabajo diseñado que proporcionó una respuesta mucho mejor para el problema C10K (cliente concurrente 10,000).
Los subprocesos son procesos ligeros que pueden realizar muy bien pequeñas tareas bien definidas y requieren menos uso de CPU / memoria que un proceso completo. Tiene sentido si se están procesando una gran cantidad de solicitudes pequeñas, querrá reducir el procesamiento innecesario y el almacenamiento de memoria para dar cabida a un mayor número de solicitudes.
Un poco de lectura en Forking vs Threading, ya que creo que está utilizando la terminología de forma incorrecta.