¿Cómo funciona un servidor de sondeo largo (con todas las características) abstractamente

StackOverflow https://stackoverflow.com/questions/3153959

Pregunta

Dado que está utilizando un bucle de eventos en lugar de hilos, ¿cómo funciona el aspecto real del servidor?

Sé que utiliza un bucle de eventos, pero ¿cómo separar las solicitudes? Y cómo se previene el servidor se ejecute muy lentamente (ya que, supongo, sólo puede empujar una cosa a la vez, ya que de rosca?)

Una especie de pseudo-código sería grande.

Perdona mi ignorancia; por supuesto, si hay alguna parte que explica que en un no básico "esto es lo suficientemente bueno hasta que llegue manera 1000 visitantes", estaría contento de saber de ella.

¿Fue útil?

Solución

Los detalles de implementación de un servidor de sondeo de tiempo podría variar mucho de una plataforma a que sus suposiciones no sea correcta.

Me puso en marcha un servidor de COMET para nuestra página web utilizando .NET. Me apalancadas HttpListener hacer todas las cosas de la perforación http y Microsoft CCR para hacer frente a todo el IO asíncrono. Se utiliza un grupo de subprocesos a las solicitudes de servicio como y cuando llegan. No es un hilo por cliente, pero no es un único subproceso ya sea en general que requiere unas pocas decenas de hilos de permanecer fluida como el número de usuarios suben. Este medio de enfoque que escalar fácilmente a través de múltiples núcleos de CPU. CCR asincrónicos patrón empadronador realmente ayudó a mantener la buena lógica asíncrona y ordenado, y puedo leer el código con bastante facilidad un año más tarde.

Este enfoque ha demostrado ser extremadamente escalable. He probado hasta 20000 clientes, con lo que quedó obligado por la red IO. Maneja todos nuestros clientes (que están "permanentemente" conectado, volver a conectar cada 30s) a lo largo de relojería en la carga del servidor 1-2%. Es, definitivamente, vale la pena reconsiderar el supuesto de que se debe elegir una arquitectura de bucle de eventos en lugar de varios subprocesos. El término medio funciona muy bien para mí, y la . NET modelo de programación asíncrona para tratar con IO bound tareas realmente te lleva lejos de tener que hilos micro-gestión. Efectivamente, cuando hay datos IO al proceso, un hilo es tomado de la piscina para hacer que el procesamiento, y posteriormente regresó a la piscina lista para dar servicio a una nueva solicitud. Todo el complicado las cosas IOCP se abstrae de distancia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top