2012-08-27 6 views
12

Django 1.4 bietet verschiedene Möglichkeiten django sessions zu halten:Leistungsvergleich der Verwendung von django signierten Cookie-Sitzung über django db + cache-basierte Sitzung?

Mein Standpunkt zu verwenden:

i) Cache nur: Nicht bevorzugt, Benutzer-Sessions aus memcache erhalten gespült werden.

ii) Db + Cache (cached_db): Bevorzugte, einfache und sichere Lösung.

iii) Signierte Cookie-Sitzungen: Bevorzugt, kein Datenbanktreffer.

Angenommen, die Sitzungsdaten sind sehr klein, d. H. Kein Problem beim Speichern im Cookie. Gibt es einen Leistungsvorteil bei der Verwendung signierter Cookies über eine Datenbank + Memcache-gesteuerte Sitzungsengine? Wie bei N gleichzeitigen neuen Benutzern würde eine Reihenfolge von N Datenbanktreffern gespeichert werden. Dies reduziert die Anzahl der Abfragen, die der Datenbankserver pro Zeiteinheit verarbeiten muss.

UPDATE: Wir fanden Redis oder Aerospike als wirklich robuste Session-Backends mit hohem Durchsatz für Django. Wir verwenden redis als Sitzungen Backend

Antwort

5

Sie müssen in der Lage sein, N gleichzeitige Abfragen (N - gleichzeitig neue Benutzer) zu behandeln.

Sie sehen den Unterschied bei einem sehr großen Maßstab nur. Sie müssen pessimist sein (Server ist down, bad buckup, amazon bancrupcy) und Ihre Datenbank muss in der Lage sein, alle Benutzer in Stoßzeiten zu behandeln.

  • 10 000 000 Benutzer mit Cookie-Sitzung werden Sie $ 0 zusätzliche Probleme mit iframes und Handys kosten
  • 10 000 000 Benutzer mit Cache-Sitzung werden Sie Hunderte oder weniger als hundert Dollar kosten täglich, verlorene Sitzungen in Fall des Neustarts
  • 10 000 000 Benutzer mit cache_db Sitzung werden Sie täglich tausende von Dollar kosten (alle persistenten Speicher können 1 000 000 Treffer in einer Zeit, 10% der Nutzer zu handhaben)

ich benutze redis Backend (periodisches Speichern auf Platte) mit der Möglichkeit, auf AC umzuschalten Glanz der Memcached-Dienste.

http://www.icis.com/blogs/icis-chemicals-confidential/files/2011/10/19/goodcheapfast.jpg

+0

Wo 'SESSION_ENGINE =‚wird django.contrib.sessions.backends.signed_cookies'' Sitzungsdaten gespeichert? –