Tenemos una aplicación web basada en Java EE que se ejecuta en un clúster de servidores de aplicaciones Glassfish . El tráfico entrante será principalmente solicitudes RESTful para representaciones basadas en XML de los recursos de nuestra aplicación, pero quizás el 5% del tráfico podría ser para representaciones basadas en JSON o XHTML / CSS.
Ahora estamos investigando soluciones de equilibrio de carga para distribuir el tráfico entrante entre las instancias de Glassfish en el clúster. También estamos investigando cómo descargar el clúster usando memcached, un mapa de hash distribuido en memoria cuyas claves serían los nombres de recursos REST (por ejemplo, "/ user / bob", "/ group / jazzlovers") y cuyos valores son las representaciones XML correspondientes.
Un enfoque que parece prometedor es matar a ambas aves de un tiro y usar el servidor HTTP nginx / proxy inverso liviano y rápido . Nginx manejaría cada solicitud entrante buscando primero su URI en memcached para ver si ya existe una representación XML no vencida. Si no, nginx envía la solicitud a una de las instancias de Glassfish. El módulo nginx memcached se describe en esta breve reseña .
¿Cuál es su impresión general con nginx y memcached utilizados de esta manera, qué tan contento está con ellos? ¿Qué recursos encontró más útiles para aprender sobre ellos? Si los probó y no se ajustaban a sus propósitos, ¿por qué no y qué utilizó en su lugar?
Nota: aquí hay una pregunta relacionada . Antes de saber acerca de ServerFault, pregunté esto en StackOverflow .
Editar: Todas las respuestas aquí hasta ahora han sido bastante útiles, aunque no hubo experiencia directa. Esta respuesta finalmente apareció en StackOverflow, y fue bastante optimista en la configuración nginx / memcached.