Pregunta

Estoy diseñando una aplicación que constará de 3-4 servicios que se ejecutan como procesos separados y están vinculados por un IPC adecuado. El sistema tendrá una interfaz web y quiero usar cualquier servidor web que esté allí.

Se debe acceder a la interfaz web desde alguna URL que permita tener otras URL en el mismo servidor web haciendo cosas totalmente diferentes. Estoy planeando usar la ruta debajo de esa URL para especificar qué debe hacer la interfaz web. Tiene facilidades para el uso de otras aplicaciones en la red y para que los humanos interactúen en un navegador.

Fuera del puño, trabajaría de la siguiente manera:

  • haga que el servidor web inicie un proceso CGI para cada solicitud que reciba (como SetHandler en Apache)
  • deje que el CGI se conecte al IPC
  • deje que obtenga lo que necesite de los servicios de fondo
  • deje que el CGI devuelva HTML / XML y cualquier estado HTTP basado en las respuestas de los servicios

Ahora, lo que realmente quiero es evitar los dos primeros pasos o, si no puedo, evitar el segundo, porque me temo que estoy perdiendo el rendimiento en gastos generales innecesarios (las solicitudes provenientes de otras aplicaciones puede ser frecuente).

PHP, por ejemplo, puede abrir conexiones persistentes a una base de datos MySQL que sobrevive al tiempo de ejecución del script y no necesita ser recreado la próxima vez, aunque no sé cómo lo hacen realmente. Además, como lo entiendo, los módulos de Apache se cargan una vez cuando se inicia el servidor, por lo que podría eliminar el primer paso, pero me uniría a Apache.

Entonces, ¿cuáles son buenas maneras de conectar un controlador para URL específicas en diferentes servidores web? No quiero manejar el HTTP, de lo contrario podría usar una configuración de proxy para un segundo servidor, pero parece que está reinventando la rueda. Si cree que CGI está bien y tiene ejemplos en los que maneja grandes cantidades de solicitudes de una estructura similar, hágamelo saber.

¿Fue útil?

Solución

OK, lo pasé por alto anteriormente. Explicar mi pregunta aquí me llevó a eso:

  

En lugar de crear un nuevo proceso para cada solicitud, FastCGI puede usar un único proceso persistente que maneja muchas solicitudes durante su vida útil. - Wikipedia: FastCGI

Otros consejos

Incluso con cargas moderadas, CGI es una bestia bastante escalable. FastCGI es una opción, pero probablemente también encontrará un paquete mod_XXXX donde XXXX es el nombre de su idioma. Hay un mod para ruby, perl y python, por ejemplo, y probablemente algunos más.

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