Después de haber examinado varias bibliotecas de servidor http disponibles, todavía no he encontrado lo que estoy buscando y estoy seguro de que no puedo ser el primero en tener este conjunto de requisitos.Biblioteca del servidor http embebible en tiempo real
Necesito una biblioteca que presenta una API que es 'pipeline'. La canalización se usa para describir una función HTTP donde se pueden enviar múltiples solicitudes HTTP a través de un enlace TCP a la vez sin esperar una respuesta. Quiero una característica similar en la API de la biblioteca, donde mi aplicación puede recibir todas esas solicitudes sin tener que enviar una respuesta (responderé pero quiero la capacidad de procesar múltiples solicitudes a la vez para reducir el impacto de la latencia interna).
Así que la biblioteca de servidor web tendrá que soportar el siguiente flujo
1) de cliente HTTP transmite petición http 1
2) de cliente HTTP transmite petición http 2 ...
3) Web Biblioteca servidor recibe la solicitud 1 y lo pasa al servidor de aplicación web de Mi
4) Mi web del servidor de aplicaciones recibe la solicitud y envía 1 a mi sistema
5) Web Server recibe solicitud 2 y lo pasa a mi servidor Web App
6) Mi Servidor Web App recibe solicitud 2 y despacha a mi sistema
7) Mi Servidor Web App recibe respuesta a la solicitud 1 de mi sistema y la envía al servidor web
8) Server web transmite la respuesta HTTP 1 a cliente HTTP
9) Mi servidor web App recibe respuesta a la solicitud 2 de mi sistema y la envía al servidor web
10) El servidor web transmite la respuesta HTTP 2 al cliente HTTP
Espero que esto ilustre mi requisito. Hay dos puntos clave para reconocer. Las respuestas a la biblioteca del servidor web son asíncronas y puede haber varias solicitudes HTTP pasadas a la aplicación de servidor My Web con respuestas pendientes.
requisitos adicionales son
- insertable en una aplicación existente 'C'
- Pequeña huella; No necesito toda la funcionalidad disponible en Apache, etc.
- Eficiente; deberá admitir miles de solicitudes por segundo
- Permite respuestas asíncronas a las solicitudes; su es una pequeña latencia para las respuestas y dado el rendimiento de solicitud requerido, una arquitectura sincrónica no me va a funcionar.
- de apoyo conexiones TCP persistentes uso
- Soporte con conexiones Comet servidor push-
- Open Source/GPL
- soporte para HTTPS
- portable a través de Linux, Windows; preferiblemente más.
estaré muy agradecido por cualquier recomendación
Saludos
Si está utilizando una única conexión, entonces está utilizando la canalización HTTP que requiere que las respuestas se envíen en el mismo orden que las solicitudes, por lo que presumiblemente el manejo paralelo de las solicitudes no le ganaría mucho de todos modos. –
Hola, Christopher, gracias por tomar el temporizador para comentar. Mi sistema recibe una gran cantidad de solicitudes en una sola conexión y tiene una pequeña latencia para responder a estas solicitudes. Si tengo que procesar las solicitudes secuencialmente, esto obliga a un límite en el rendimiento max_throughput = 1/latencia. Si puedo procesar múltiples solicitudes simultáneamente, entonces este límite desaparece. Nota: la latencia es interna para mi sistema y no entre el cliente HTTP y el servidor web. –