Une approche de la haute évolutivité consiste à utiliser l’équilibrage de la charge réseau pour répartir la charge de traitement entre plusieurs serveurs.
Un des défis que présente cette approche est que les serveurs sont sensibles à l’état – stockant l’état de l’utilisateur dans une “session“.
Une solution à ce problème est la “session collante” (également appelée “affinité de session”) dans laquelle chaque utilisateur est affecté à un seul serveur et ses données d’état sont contenues sur ce serveur exclusivement pendant toute la durée de la session.
Quels sont les avantages et les inconvénients de l’approche “sticky session”? L’utilisez-vous et si oui en êtes-vous satisfait?
Avantages:
Les inconvénients:
Mais si vous devez utiliser l’état de session serveur-local, les sessions sticky sont certainement la voie à suivre – et même si vous n’utilisez pas l’état de session serveur-local, la durée d’adhésion présente des avantages pour l’utilisation du cache (voir ci-dessus). Votre équilibreur de charge doit être en mesure d’examiner les cookies HTTP (pas uniquement l’adresse IP) pour déterminer l’adhésion, car les adresses IP peuvent changer au cours d’une même session (par exemple, connecter un ordinateur portable à un réseau câblé ou sans fil).
Mieux encore, n’utilisez pas l’état de session sur le serveur Web! Si l’état de la session est très pénible à perdre (par exemple, les paniers d’achat), stockez-le dans une firebase database centrale et nettoyez régulièrement les anciennes sessions. Si l’état de la session n’est pas critique (par exemple, nom d’utilisateur / URL avatar), insérez-le dans un cookie. Assurez-vous simplement de ne pas trop charger de données dans le cookie.
Les versions modernes de Rails, par défaut, stockent les variables de session dans un cookie pour les raisons ci-dessus. D’autres frameworks Web peuvent avoir une option “store in cookie” et / ou “store in DB”.