Temos um aplicativo Web baseado em Java EE em execução em um cluster de servidores de aplicativos Glassfish . O tráfego de entrada será principalmente solicitações RESTful para representações baseadas em XML de nossos recursos de aplicativos, mas talvez 5% do tráfego seja para representações baseadas em JSON ou XHTML / CSS.
Agora estamos investigando soluções de balanceamento de carga para distribuir o tráfego de entrada entre as instâncias do Glassfish no cluster. Também estamos examinando como descarregar o cluster usando o memcached, um mapa de hash distribuído na memória cujas chaves seriam os nomes dos recursos REST (por exemplo, "/ user / bob", "/ group / jazzlovers") e cujos valores são as representações XML correspondentes.
Uma abordagem que parece promissora é matar os dois pássaros com uma cajadada e usar o servidor HTTP nginx leve e rápido / proxy reverso. O Nginx lidaria com cada solicitação recebida, primeiro procurando seu URI no memcached para verificar se já existe uma representação XML não expirada. Caso contrário, o nginx envia a solicitação para uma das instâncias do Glassfish. O módulo nginx memcached é descrito neste pequeno resumo .
Qual é a sua impressão geral com o nginx e o memcached usados dessa maneira, quão feliz você está com eles? Quais recursos você achou mais útil para aprender sobre eles? Se você as experimentou e elas não atendiam aos seus propósitos, por que não e o que você usou?
Nota: aqui está uma pergunta relacionada . Antes que eu soubesse sobre o ServerFault, perguntei isso no StackOverflow .
Edit: Todas as respostas aqui até agora foram bastante úteis, embora não houvesse experiência direta. Essa resposta acabou aparecendo no StackOverflow e foi bastante otimista na configuração do nginx / memcached.