conception de cohérence de session

大鹏
Libérer: 2021-06-26 15:54:56
original
176 Les gens l'ont consulté

Cohérence des sessions

Qu'est-ce qu'une session

Le serveur Web peut créer automatiquement des sessions pour les utilisateurs accédant au même navigateur et fournir des fonctions de stockage. Généralement, les informations de connexion de l'utilisateur sont stockées dans la session.

Quel est le problème de cohérence de session ?

Lorsqu'il n'y a qu'un seul serveur Web dans le backend, la session correcte peut être trouvée pour chaque requête http. Le problème est qu'il ne peut pas assurer la haute disponibilité. Si un serveur raccroche, ce sera terminé. Redondance + basculement, déployez plusieurs serveurs Web et routes nginx vers différents serveurs Web. Chaque requête http est acheminée et il n'est pas garanti qu'elle soit acheminée vers le même serveur, ce qui entraîne des problèmes de cohérence.

Solutions courantes pour résoudre la cohérence des sessions

Hash cohérent

La première solution qui vient à l'esprit est de hacher en fonction de l'adresse IP du client pour garantir que la même IP tombe sur le même site Web sur le serveur. Vous pouvez également utiliser des hachages basés sur des champs métier, tels que userId et cityId, qui sont plus flexibles à utiliser. Cependant, cela détruit le principe d’unicité et rend la passerelle et l’entreprise collantes. Il n’est pas recommandé de l’utiliser sauf si cela est nécessaire. Avantages : Enregistre le cache, peut être étendu horizontalement. Inconvénients : lorsque certains services sont redémarrés, les sessions seront perdues, ce qui obligera certains utilisateurs à se reconnecter. Si le hachage est étendu horizontalement et que la session est redistribuée après le rehachage, certains utilisateurs ne pourront pas acheminer la session

synchronisation de session

Les sessions entre plusieurs serveurs Web sont synchronisées les unes avec les autres , de sorte que chaque serveur Web contient toutes les informations de session. Inconvénients : Comme il contient toutes les sessions, le nombre de clusters est limité par la mémoire et l'extension est limitée.

Stockage du client

Les informations de connexion sont enregistrées sur le client et chaque demande contient des informations sur l'utilisateur. Le serveur est complètement apatride et facile à étendre. Avantages : Aucun stockage n’est requis côté serveur. Inconvénients : chaque requête http transporte des informations sur l'utilisateur, ce qui gaspille du trafic ; il existe un risque de fuite d'informations. Les cookies ne peuvent pas stocker trop d'informations.

Stockage centralisé back-end

Le serveur Web est lié à un stockage unifié pour enregistrer les informations de session. Il est recommandé de les stocker dans le cluster Redis pour faciliter l'expansion ultérieure. Avantages : Il n'y a aucun risque de fuite d'informations ; l'expansion horizontale ne perd pas de données. Inconvénients : Une requête réseau supplémentaire est ajoutée et le code métier doit être modifié pour interroger Redis.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
1
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!