2015-07-04 14 views
7

Ich verwende Django für mein neues Webprojekt. Es ist im Grunde ein Quora-Klon. Sagen wir, ich habe eine Frage und eine Upvote Taste darunter. wenn etwa 8-9k Leute gleichzeitig auf den Upvote Button klicken (der gleichen Frage), wie kann ich damit umgehen? Ich verwende Nginx als Front-End-Server und Apache als Back-End-Server? Was sollte ich verwenden, um diese Menge an Ladung zu bewältigen?Gleichzeitige Lastbehandlung in Django

+3

Haben Sie spezielle Probleme mit der Ladung? Und ich frage mich, warum Sie Apache und Nginx brauchen. –

+0

Eigentlich verwende ich Nginx, um Mediendateien und Apache für Serveranforderungen zu liefern. –

+0

Keine spezifischen Probleme, nur wie die Last zu handhaben ist, wenn etwa 8-9 Tausend Menschen auf die Schaltfläche "Upvote" der gleichen Frage klicken. –

Antwort

4

Die Antwort hängt davon ab, wie Sie die Stimmen speichern. Bevor Sie sich über die Belastung des Webservers Sorgen machen, müssen Sie sicherstellen, dass Sie keine Wettlaufsituation haben.

Da dies nicht der Fall ist, kann ein einfacher Boost darin bestehen, die an einen Schlüssel/Wertspeicher (z. B. Redis) übermittelten Votes zwischenzuspeichern oder besser als Aggregator zu verwenden, wenn Sie über eine normalisierte Datenbank verfügen.

Eine weitere Option ist es, die asynchronen Aufgaben von Sellery zu verwenden, um die Stimmen in die Warteschlange zu stellen.

+0

Ich benutze auch Sellerie, weil ich Ausdauer will. Die Leute bemerken oft keine Verzögerung bei der tatsächlichen Stimmenzählung, wenn es eine gibt, solange man sie am Frontend vortäuscht. –

+0

Ich habe das Konzept des Caching hier eigentlich nicht bekommen. Kannst du bitte etwas ausarbeiten? @ Tiphareth –

+0

Eigentlich verwende ich AJAX für die asynchronen Anrufe über Front-End zu Django. Wird es für schwere Lasten okay sein? @MarkGalloway –