Question

Je cherche une solution gratuite, hautement disponible et performante pour la mise en cache ou le stockage de données de session .net (pour un site Web à trafic élevé). Je ne veux pas utiliser de base de données (la base de données est le goulot d'étranglement dû à l'augmentation du trafic).

Il existe des magasins de clés / valeurs, mais pour autant que je sache, ils ne prennent pas en charge les objets .net. De plus, certaines solutions de mise en cache distribuées ou répliquées prennent en charge la haute disponibilité.

Mais quel est le meilleur moyen de stocker des données de session (mieux s’il fonctionne en mono)?

MODIFIER: Pour assurer une haute disponibilité, je dois répliquer les données de session utilisateur sur plusieurs ordinateurs. Je peux écrire un sérialiseur si cela est nécessaire pour obtenir la meilleure méthode. Les sessions utilisateur contiennent des objets standard nécessaires à un site de commerce électronique.

Cordialement, Sirmak

Était-ce utile?

La solution

Vous pouvez utiliser le serveur Session State Server qui fonctionne en tant que service Windows, mais pour que cela fonctionne dans un scénario de batterie de serveurs Web, vous devez faire en sorte que l'un des serveurs Web exécute le service Session State et les autres serveurs Web. se coordonnera avec ce serveur Web unique. Ceci pose bien sûr un problème si votre serveur Web qui exécute le service tombe en panne.

Une autre option serait d’utiliser memcachd, qui est un serveur d’état de session réparti en mémoire. Ceci est gratuit et il existe déjà un fournisseur pour .NET pour ce framework. Il est assez mature et existe depuis un certain temps.

Si vous avez de l'argent à dépenser, le serveur Scale Out peut être une option. Cependant, on m'a dit que sur les sites Web à très grande échelle, la technologie d'évolutivité devait être recyclée de temps en temps.

Velocity, qui représente l'équivalent .NET de memcached, est proche de Microsoft. Ceci n’a pas encore été publié et n’est pas une technologie mature.

Vous devrez choisir la solution qui correspond à vos besoins techniques et financiers.

Autres conseils

Si vous parlez gratuitement, MySQL est capable de gestion du trafic à fort volume (sur le bon matériel évidemment)

Eh bien, vous devez d’abord déterminer ce que vous stockez dans la session. Certaines choses ne peuvent tout simplement pas être sérialisées. Vous pouvez toutefois implémenter vos propres routines de sérialisation pour les objets pertinents et les stocker de la manière que vous créez. Par exemple, vous pouvez en interne effectuer une sérialisation Binary, puis écrire l’objet sous forme de chaîne codée en base64 dans un outil de mise en cache (memcached ou autre) et le récupérer.

Mais aussi, quelle sorte d'évolutivité voulez-vous ici? Etes-vous en train de permuter les utilisateurs entre les serveurs par requête? Si c'est le cas, vous aurez besoin d'un système de cache central, ou du moins de mise en miroir, au moins.

Si vous gardez un utilisateur sur le même serveur mais que vous en avez plusieurs, peu importe, vous pouvez utiliser un processus externe sur la même machine pour le mettre en cache.

Je pense que vous devrez fournir un peu plus d'informations. Je ne suis pas habitué à faire tourner les choses en mono (je recommanderais donc simplement le service d'état asp.net), mais je suppose qu'un processus de mise en cache tiers, tel que memcached, peut s'avérer utile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top