On m'a dit que l'une des raisons les plus courantes de stocker des sessions dans une base de données est de les rendre inter-serveur. Mais une connexion TCP n'est-elle pas persistante jusqu'à ce que l'on ferme le navigateur? Pourquoi la prochaine requête peut-elle changer de serveur?pourquoi avons-nous besoin de stocker des sessions dans une base de données parfois?
Répondre
Mais une connexion TCP n'est-elle pas persistante jusqu'à ce que l'on ferme le navigateur? Pourquoi la prochaine requête peut-elle changer de serveur?
Une fois le chargement de la page Web, et toutes les images, les fichiers CSS et d'autres actifs sont récupérés, la connexion TCP fermera peu de temps après (after 5 seconds by default dans Apache 2.2, par exemple). Lorsque l'utilisateur clique sur un autre lien interne, une nouvelle connexion TCP est ouverte. Cela peut se terminer sur un autre serveur dans un scénario à serveurs multiples et à charge équilibrée.
Vous stockez des sessions dans une base de données de sorte que lorsque vous chargez l'équilibrage de votre application, l'équilibreur de charge peut transmettre votre requête à n'importe quel serveur de la batterie tout en ayant un accès correct aux données de session.
Une seule requête adressée à une page Web sera transmise à un seul serveur. La prochaine fois qu'un utilisateur fait une demande, une nouvelle connexion TCP est créée et peut être envoyée à un autre serveur de la batterie.
Les chargements de page dans un navigateur sont normalement sans état (c'est-à-dire qu'ils ne stockent pas l'état une fois la page entièrement chargée). Cela signifie que le chargement de votre prochaine page, qui peut être aussi simple que de passer de la page du catalogue d'achats à la page du panier, est une «transaction» HTTP distincte. En fait, il est possible que le texte d'une page et ses 12 images (et 400 publicités pornographiques) puissent aller chacun à un serveur totalement séparé (même s'ils utilisent la même URL de base) puisqu'ils peuvent opérer sur différents TCP sessions.
Vous ne voulez pas sérialiser tout le trafic afin de pouvoir réutiliser une seule session TCP, il est généralement plus rapide de les faire en parallèle sur des sessions distinctes. Il peut donc se retrouver sur un serveur totalement différent, oui. Dans ce cas, vous voudriez que l'état soit stocké dans une ressource partagée quelconque (comme une base de données). Il y a d'autres façons de contourner le problème (il y en a toujours) comme l'affinité basée sur IP où le trafic de la même adresse IP préférera le même serveur mais ce genre de mouches face à toute votre belle architecture d'équilibrage de charge :-)
- 1. Stocker des données dans plusieurs sessions
- 2. CodeIgnitor génère plusieurs sessions dans la base de données. Pourquoi?
- 3. Comment stocker des données modifiées dans une base de données?
- 4. Comment stocker des coordonnées dans une base de données
- 5. Stocker des extraits de code dans une base de données
- 6. Stocker des données simples dans la base de données mysql
- 7. Sessions de base de données au printemps
- 8. Stocker datetime dans la base de données?
- 9. log4net: Comment stocker des données dans la base de données
- 10. Stocker des données dans Lucene ou base de données
- 11. Base de données non sélectionnée parfois
- 12. Comment stocker un tableau mixte dans des données de base
- 13. Comment stocker l'arbre de dépendances dans une base de données?
- 14. Quel langage de balisage stocker dans une base de données?
- 15. Comment stocker l'emplacement d'une image dans une base de données?
- 16. comment stocker une date dans une base de données mysql?
- 17. stocker wget lien dans une base de données (php)
- 18. Schéma de base de données pour stocker des données SNMP
- 19. Phonegap Problème de base de données - stocker des images dans la base de données
- 20. Comment stocker un BLOB dans une base de données?
- 21. CodeIgniter: Stocker une image dans la base de données?
- 22. Besoin de base de données
- 23. stocker des valeurs dans la base de données tamil
- 24. Rails: stocker des traductions dans la base de données
- 25. Pourquoi stocker des jetons oauth 1.0 dans une base de données - pourquoi ne pas rester en session?
- 26. Comment stocker des données longues comme les données d'étiquette RFID dans une base de données postgres?
- 27. Quelle est la meilleure façon de stocker des données html dans une base de données mysql?
- 28. Comment stocker des valeurs dans la base de données C#?
- 29. Création d'une base de données pour des valeurs parfois prédéfinies et parfois personnalisées
- 30. Comment stocker l'index lucene dans une base de données?
Oups ... Je pensais que la durée de vie d'une connexion TCP est le même que la fenêtre du navigateur .. – powerboy
la durée de vie d'une seule session TCP peut même pas pour une « page » unique - il est possible, même Il est probable que de nombreuses sessions seront exécutées en parallèle pour télécharger la page principale et chaque image ou javascript src ou toute autre chose qui peut être envoyée à une autre session pour plus d'efficacité. – paxdiablo