J'ai une application de démarrage à ressort que je voudrais déployer dans plusieurs instances de docker et il y a un équilibre de charge avant les instances. Cependant, l'application utilise ehcache pour mettre en cache certaines données d'une base de données. Cela rend l'application avec état. Ainsi, sans session persistante, un même client peut frapper différentes instances de docker et voir des résultats différents. Ma question est de savoir si je ne peux pas appliquer une session persistante dans l'équilibre de charge, quelle est la meilleure pratique pour déployer une application avec une fonctionnalité de cache via le style docker tout en respectant la règle du devrait-être-sans état?

2
alan 21 avril 2017 à 04:37

3 réponses

Meilleure réponse

J'explique ici dans cette vidéo devoxx comment la mise en cache en cluster peut aider chacune de vos instances de docker à partager le même cache

1
Anthony Dahanne 21 avril 2017 à 14:10

Tout d'abord, si vous avez vraiment un cas d'utilisation de mise en cache pur, il ne devrait y avoir aucun impact sur l'exactitude uniquement sur les performances. Ce qui bien sûr peut en soi être une mauvaise chose pour votre application.

Mais effectivement, si vous souhaitez utiliser la mise en cache pour fournir des performances tout en ayant une capacité multi-nœuds sans sessions persistantes, vous devez vous déplacer dans le domaine de la mise en cache distribuée. Cela vous donnera la possibilité de partager le contenu du cache entre les différents nœuds et ainsi de le rendre (plus) transparent pour une requête donnée dans une conversation pour atteindre n'importe quel nœud de votre application.

Dans le monde Ehcache, cela signifie sauvegarder le cache avec un serveur Terracotta, voir la documentation pour plus de détails.

0
Louis Jacomet 21 avril 2017 à 12:50

Il est courant de combiner ehcache avec de la terre cuite pour permettre la mise en cache distribuée entre les nœuds.

Cordialement

0
Carlos Rafael Ramirez 21 avril 2017 à 12:47