Nous avons une application Web basée sur Java EE fonctionnant sur un cluster de serveurs d'applications Glassfish . Le trafic entrant sera principalement des demandes RESTful pour des représentations basées sur XML de nos ressources d'application, mais peut-être 5% du trafic pourrait être pour des représentations basées sur JSON ou XHTML / CSS.
Nous étudions actuellement des solutions d'équilibrage de charge pour répartir le trafic entrant sur les instances Glassfish du cluster. Nous examinons également comment décharger le cluster à l'aide de memcached, une carte de hachage distribuée en mémoire dont les clés seraient les noms des ressources REST (par exemple, "/ user / bob", "/ group / jazzlovers") et dont les valeurs sont les représentations XML correspondantes.
Une approche qui semble prometteuse est de tuer les deux oiseaux avec une pierre et d'utiliser le serveur HTTP / proxy inverse nginx rapide et léger . Nginx traiterait chaque demande entrante en recherchant d'abord son URI dans memcached pour voir s'il y a déjà une représentation XML non expirée. Sinon, nginx envoie la demande à l'une des instances Glassfish. Le module nginx memcached est décrit dans ce bref article .
Quelle est votre impression générale avec nginx et memcached utilisés de cette façon, êtes-vous satisfait d'eux? Quelles ressources avez-vous trouvées les plus utiles pour en savoir plus? Si vous les avez essayés et qu'ils ne vous convenaient pas, pourquoi pas, et qu'avez-vous utilisé à la place?
Remarque: voici une question connexe . Avant de connaître ServerFault, j'ai posé cette question sur StackOverflow .
Edit: Toutes les réponses ici jusqu'à présent ont été très utiles, bien qu'il n'y ait pas eu d'expérience directe. Cette réponse s'est finalement révélée sur StackOverflow, et elle était assez haussière sur la configuration nginx / memcached.