twisted - español - node js document
¿Cuál es el objetivo/propósito de Ruby EventMachine, Python Twisted o JavaScript Node.js? (3)
No entiendo qué problema resuelven estos marcos. ¿Son reemplazos para un servidor HTTP como Apache HTTPD, Tomcat, Mongrel, etc.? ¿O son más? ¿Por qué podría usarlos ... algunos ejemplos del mundo real? He visto innumerables ejemplos de salas de chat y servicios de transmisión, pero no veo que esto sea diferente a, por ejemplo, configurar un programa Java para abrir sockets y enviar un hilo para cada solicitud.
Creo que entiendo la E / S no bloqueante, pero no entiendo en qué se diferencia de un servidor web de subprocesos múltiples. Para Node.js, leí que solo tiene un solo hilo, y que esto puede ser más eficiente que hacer malabares con múltiples hilos, pero ¿es esa la única diferencia entre estos marcos y un servidor web tradicional?
De hecho, los marcos basados en eventos son adecuados para situaciones en las que tienes muchas operaciones con io y menos CPU, pero eso define la mayoría de las páginas web, porque esperan db. Otros ejemplos son chats o videos como youtube: una pila permite atender a más clientes al mismo tiempo. Los servidores basados en eventos pueden manejar decenas o cientos de miles de clientes conectados, donde tal cantidad de subprocesos mataría a la máquina. Son menos eficientes cuando realmente tienes algo de procesamiento que hacer.
No hay pila por conexión. Solo una pila por núcleo de procesador. No es que realmente pueda hacer más de una cosa a la vez, ¿por qué no esperar hasta que algo esté ocupado para cambiar de tareas, en lugar de tirar de un lado a otro arbitrariamente?
Puede usar uno de estos marcos si desea escribir código que haga redes.
Por ejemplo, si iba a escribir un videojuego multijugador masivo , "configurar un programa Java ... para enviar un hilo para cada solicitud" probablemente no sea una opción; hacer malabarismos con muchos hilos es fenomenalmente complejo, y también funciona mal. Por no mencionar el hecho de que "solo se generan un montón de hilos" faltan algunas de las herramientas de administración que Twisted et. Alabama. tienen, como twistd
, que maneja el registro, la demonización, el inicio y el apagado, y así sucesivamente.
O si desea escribir un sistema de automatización de compilación , la capacidad de invocar asíncronamente y controlar los subprocesos sería útil. Si genera un proceso de forma asíncrona, puede matar fácilmente ese proceso y tratar con gracia su salida. Si lo genera iniciando un hilo y bloqueando ese hilo, no puede detenerlo fácilmente, ya que detener un hilo es intrínsecamente inseguro .
EventMachine y Twisted pueden usarse también para escribir programas del lado del cliente; quizás esté escribiendo una aplicación GUI que no está basada en la web y desea usar la misma implementación de protocolo en el cliente y el servidor.
Dado que puede usar marcos asíncronos en muchos contextos diferentes, es posible que desee usarlos en una aplicación web simplemente porque tiene un código de biblioteca existente, escrito para alguna otra aplicación que use su marco asíncrono, que desea usar. O quizás desee poder reutilizar el código de su aplicación web en alguna aplicación hipotética futura que no sea web. En este caso, no es tan diferente a usar Apache o Tomcat o lo que sea en términos de funcionalidad, solo le brinda una forma más general y reutilizable de organizar su programa.