Frage

Ich untersuche für eine freie, hochverfügbare, leistungsstarke Lösung für das Caching oder Speicherung .net Sitzungsdaten (für eine High-Traffic-Website). Ich will nicht eine db (db ist der Engpass auf den Verkehr zu erhöhen) verwenden.

Es sind einige Schlüssel / Wert-Shops, aber soweit ich weiß, dass sie nicht unterstützen .net Objekte. Und es sind einige verteilt oder Caching-Lösungen repliziert, die eine hohe Verfügbarkeit unterstützt.

Aber, was ist die beste Art und Weise Sitzungsdaten zu speichern (besser, wenn es auf Mono läuft)?

EDIT: Für hohe Verfügbarkeit, ich muß Benutzersitzungsdaten an mehr Maschinen replizieren. Ich kann einen Serializer schreiben, wenn es gebraucht wird, die beste Methode zu erreichen. Benutzersitzungen enthalten Standardobjekte für eine E-Commerce-Website erforderlich.

Viele Grüße, Sirmak

War es hilfreich?

Lösung

Nun können Sie die Session State-Server benutzen, die als Windows-Dienst ausgeführt wird, aber um diese Arbeit in einem Webfarmszenario zu machen, die Sie benötigen eine des Web-Servers haben, führen Sie die Session State Service und die anderen Web-Servern wird mit diesem einzigen Web-Server koordinieren. Das ist natürlich ein Problem, wenn Ihr Web-Server ausfällt, die den Dienst ausgeführt wird.

Eine andere Möglichkeit wäre memcachd zu verwenden, die eine im Speicher Session State-Server verteilt wird. Dies ist kostenlos und es gibt bereits einen Anbieter für .NET für diesen Rahmen. Es ist ziemlich ausgereift und hat sich für eine Weile.

Wenn Sie Geld ausgeben dann Server Scale-Out könnte eine Option sein. Ich habe, dass aber auf wirklich großen Maßstab Web-Seiten gesagt worden, dass die Skala aus Technologie von Zeit zu Zeit zurückgeführt werden muss.

Kommen um die Kurve von Microsoft ist Geschwindigkeit, die das .NET equivilant ist zu Memcached. Dies ist noch nicht freigegeben, und ist nicht eine ausgereifte Technologie.

Sie müssen die Lösung wählen, die Ihre technischen und finanziellen Anforderungen passt.

Andere Tipps

Wenn Sie sprechen frei, dann MySQL ist in der Lage hochvolumige Verkehr Handling (auf der richtigen Hardware natürlich)

Nun, zunächst müssen Sie bestimmen, was Sie in der Sitzung zu speichern. Es gibt einige Dinge, die einfach nicht gar serialisiert werden. Sie können jedoch Ihre eigene Serialisierung Routinen für relevante Objekte implementieren, und speichern sie in einer Art und Weise, die Sie bis zu machen. Zum Beispiel können Sie intern auf einen BinarySerialisation, dann schreiben Sie das Objekt als Base64-codierte Zeichenfolge in ein Caching-Tool (Memcached oder was auch immer) und es abrufen.

Aber auch, welche Art von Skalierbarkeit wollen Sie denn hier? Tauschen Sie Benutzer zwischen Servern pro Anfrage? Wenn ja, werden Sie eine zentrale benötigen, oder zumindest Spiegelung, Cache-System zumindest.

Wenn Sie auf demselben Server werden einen Benutzer zu halten, können aber viele haben, dann ist es nicht wirklich wichtig ist, können Sie einen externen Prozess auf demselben Computer zu Cache.

Ich denke, Sie ein bisschen mehr Informationen zur Verfügung stellen müssen. Ich bin nicht vertraut mit den Dingen auf Mono läuft (so würde ich nur die asp.net Zustand Service empfehlen), aber meine Vermutung ist, ein 3rd-Party-Caching-Prozess, wie Memcached, kann gut sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top