Skaliert Django? [geschlossen]

1135

Ich erstelle eine Webanwendung mit Django. Die Gründe, warum ich mich für Django entschieden habe, waren:

  • Ich wollte mit kostenlosen / Open-Source-Tools arbeiten.
  • Ich mag Python und denke, dass es eine langfristige Sprache ist, während ich mir in Bezug auf Ruby nicht sicher war und PHP ein großer Aufwand zu sein schien.
  • Ich baue einen Prototyp für eine Idee und habe nicht zu viel über die Zukunft nachgedacht. Die Entwicklungsgeschwindigkeit war der Hauptfaktor, und ich kannte Python bereits.
  • Ich wusste, dass die Migration zu Google App Engine einfacher sein würde, wenn ich mich in Zukunft dafür entscheide.
  • Ich habe gehört, Django sei "nett".

Jetzt, da ich näher dran bin, über die Veröffentlichung meiner Arbeit nachzudenken, mache ich mir Sorgen um die Größe. Die einzigen Informationen, die ich über die Skalierungsfunktionen von Django gefunden habe, werden vom Django-Team bereitgestellt (ich sage nichts, um sie zu ignorieren, aber dies sind eindeutig keine objektiven Informationen ...).

Meine Fragen:

  • Was ist die "größte" Seite, die heute auf Django gebaut wurde? (Ich messe die Größe hauptsächlich am Benutzerverkehr)
  • Kann Django täglich mit 100.000 Benutzern umgehen , die jeweils einige Stunden lang die Website besuchen?
  • Könnte eine Site wie Stack Overflow auf Django laufen?
Roee Adler
quelle
2
Wenn Sie es noch nicht getan haben, empfehle ich, den Abschnitt über Skalierung im Django-Buch zu lesen : djangobook.com/de/1.0/chapter20 Oder die neuere Version: djangobook.com/de/2.0/chapter12
monkut
15
Vielleicht möchten Sie "Geschwindigkeit war der Hauptfaktor" korrigieren, um zu klären, ob Sie über Ausführungsgeschwindigkeit oder Entwicklungsaufwand sprechen. Es klingt nach Entwicklungsaufwand, was Sinn macht.
S.Lott
6
Wäre interessant, dies mit RoR zu vergleichen.
Kozyarchuk
6
@ ajkumar25, AFAIK disqus verwendet django blog.disqus.com/post/62187806135/… .
Alxs
6
Die Frage sollte seinwhat's the cost of scaling in the Django?
Sławomir Lenart

Antworten:

932
  1. "Was sind heute die größten Standorte auf Django?"

    Es gibt keinen einzigen Ort, an dem Informationen über den Datenverkehr auf von Django erstellten Websites gesammelt werden. Daher muss ich anhand von Daten von verschiedenen Standorten einen Versuch unternehmen. Zuerst haben wir eine Liste der Django-Sites auf der Startseite der Haupt-Django-Projektseite und dann eine Liste der von Django erstellten Sites auf djangosites.org . Wenn wir die Listen durchgehen und einige auswählen, von denen ich weiß, dass sie anständigen Verkehr haben, sehen wir:

  2. "Kann Django täglich mit 100.000 Benutzern umgehen, die jeweils einige Stunden lang die Website besuchen?"

    Ja, siehe oben.

  3. "Könnte eine Site wie Stack Overflow auf Django laufen?"

    Mein Bauchgefühl ist ja, aber wie andere antworteten und Mike Malone in seiner Präsentation erwähnt, ist das Datenbankdesign von entscheidender Bedeutung. Ein starker Beweis kann auch unter www.cnprog.com gefunden werden, wenn wir zuverlässige Verkehrsstatistiken finden können. Wie auch immer, es ist nicht nur etwas, was passieren wird, wenn man ein paar Django-Modelle zusammenwirft :)

Es gibt natürlich noch viele weitere interessante Websites und Blogger, aber ich muss irgendwo aufhören!


Blogbeitrag über die Verwendung von Django zum Erstellen einer stark frequentierten Website michaelmoore.com, die als Top-10.000-Website bezeichnet wird . Quantcast-Statistiken und konkurrierende.com-Statistiken .


(*) Der Autor der Bearbeitung, einschließlich dieser Referenz, arbeitete als ausgelagerter Entwickler in diesem Projekt.

Van Gale
quelle
267

Wir führen jetzt Lasttests durch. Wir glauben, dass wir 240 gleichzeitige Anforderungen (eine anhaltende Rate von 120 Treffern pro Sekunde rund um die Uhr) unterstützen können, ohne die Serverleistung wesentlich zu beeinträchtigen. Das wären 432.000 Treffer pro Stunde. Die Antwortzeiten sind nicht klein (unsere Transaktionen sind groß), aber unsere Basisleistung wird mit zunehmender Auslastung nicht beeinträchtigt.

Wir verwenden Apache-Frontend-Django und MySQL. Das Betriebssystem ist Red Hat Enterprise Linux (RHEL). 64-Bit. Wir verwenden mod_wsgi im Daemon-Modus für Django. Wir haben keine andere Cache- oder Datenbankoptimierung durchgeführt, als die Standardeinstellungen zu akzeptieren.

Wir sind alle in einer VM auf einem 64-Bit-Dell mit (glaube ich) 32 GB RAM.

Da die Leistung für 20 oder 200 gleichzeitige Benutzer nahezu gleich ist, müssen wir nicht viel Zeit mit "Optimierungen" verbringen. Stattdessen müssen wir einfach unsere Basisleistung durch gewöhnliche Verbesserungen der SSL-Leistung, gewöhnliches Datenbankdesign und -implementierung (Indizierung usw.), gewöhnliche Verbesserungen der Firewall-Leistung usw. aufrechterhalten.

Was wir messen, sind unsere Lasttest-Laptops, die unter der wahnsinnigen Arbeitslast von 15 Prozessen leiden, auf denen 16 gleichzeitige Anforderungsthreads ausgeführt werden.

S.Lott
quelle
3
Ebenfalls neugierig: Läuft Ihre Datenbank auf demselben Computer oder auf einem separaten Server?
Jarret Hardie
16
Eine VM mit Apache, Django und MySQL. mod_wsgi. RHEL.
S.Lott
4
Irgendwelche Updates zu den Leistungsmetriken?
SexyBeast
1
Sie machen einen guten Punkt - wenn Sie Ihren Website-Verkehr als Warteschlange betrachten, wie viele Antworten können Sie dann pro Stunde liefern? Wenn Sie die Reaktionszeit kurz halten, können Sie mehr bedienen und haben so eine größere Skalierbarkeit - es spielt keine Rolle, ob Sie Django, Twisted, Rails oder Technologie vom Planeten Zod verwenden.
Ralph Bolton
2
Ich habe jahrelang mit Django gearbeitet und ich habe diese Art von Performance noch nie in einer anderen Spielzeug-App gesehen, die größtenteils schreibgeschützt ist. Was ist die Art Ihrer Bewerbung? Alles, was Vorlagen oder Middleware oder Sitzungen oder Datenbankkonnektivität enthält, wird niemals 120 Treffer pro Sekunde unterstützen, ohne dass eine große Menge an Caching erforderlich ist, um all dies zu umgehen.
Cerin
176

Ich bin mir nicht sicher über die Anzahl der täglichen Besuche, aber hier sind einige Beispiele für große Django-Websites:

Hier ist ein Link zur Liste der stark frequentierten Django-Websites auf Quora .

Neil
quelle
107

Was ist die "größte" Seite, die heute auf Django gebaut wurde? (Ich messe die Größe hauptsächlich am Benutzerverkehr)

In den USA war es Mahalo . Mir wurde gesagt, dass sie ungefähr 10 Millionen Unikate pro Monat bearbeiten. Jetzt, im Jahr 2019, wird Mahalo von Ruby on Rails angetrieben.

Im Ausland das Globo- Netzwerk (ein Netzwerk von Nachrichten-, Sport- und Unterhaltungsseiten in Brasilien); Alexa zählt sie zu den Top 100 weltweit (derzeit rund 80).

Andere bemerkenswerte Django-Benutzer sind PBS, National Geographic, Discovery, die NASA (tatsächlich eine Reihe verschiedener Abteilungen innerhalb der NASA) und die Library of Congress.

Kann Django täglich mit 100.000 Benutzern umgehen, die jeweils einige Stunden lang die Website besuchen?

Ja - aber nur, wenn Sie Ihre Bewerbung richtig geschrieben haben und über genügend Hardware verfügen. Django ist kein Wundermittel.

Könnte eine Site wie StackOverflow auf Django laufen?

Ja (aber siehe oben).

Technologisch gesehen einfach: Sehen Sie sich Soklon für einen Versuch an. In Bezug auf den Verkehr konkurrieren StackOverflow mit weniger als 1 Million Unikaten pro Monat. Ich kann mindestens ein Dutzend Django-Sites mit mehr Verkehr als SO nennen.

jacobian
quelle
2
Können Sie bitte den ungefähren Preis für 5000 Treffer pro Sekunde schätzen, vorausgesetzt, es ist wie Linkedin, mit Django. Angenommen, ein durchschnittlicher Programmierer hat die Site erstellt und natürlich das Caching hinzugefügt. Angenommen, Algorithmen usw. (um die Dinge schnell zu machen) werden nicht verwendet, da ich sie noch nicht kenne.
user2349115
5
@ user2349115 Wenn Ihre Anwendung 5000 Treffer pro Sekunde erhält, verfügen Sie über genügend Hintergrundwissen, um zu verstehen, warum dies die falsche Frage ist.
Kye R
Meine Ninjas (Wrappalyzer Browser-Erweiterung) sagen, dass Mahalo auf Schienen, die jetzt im März 2019 mit Strom versorgt werden, rubinrot ist.
Miles Davis
87

Beim Skalieren von Web-Apps geht es nicht um Web-Frameworks oder Sprachen, sondern um Ihre Architektur. Es geht darum, wie Sie mit Ihrem Browser-Cache, Ihrem Datenbank-Cache, der Verwendung von nicht standardmäßigen Persistenzanbietern (wie CouchDB ), der Optimierung Ihrer Datenbank und vielen anderen Dingen umgehen ...

razenha
quelle
Web-Framework ist wichtig! Schauen Sie, wie schnell Tornado im Vergleich zu anderen Python-Webframeworks: tornadoweb.org/documentation#performance
Joshua Partogi
Ich habe nicht abgelehnt, aber ich nehme an, Sie sind ein wenig vom Thema abgewichen, da hier die Vorzüge von Django besprochen wurden, und Sie können nicht jede Datenbank verwenden, Ihre Datenbank optimieren und couchdb in jedem gegebenen Framework maximal verwenden. Es sei denn, Sie schreiben natürlich keine großen Teile davon neu.
ZJR
8
@ZLR Ich glaube nicht, dass ich vom Thema abgekommen bin. Er fragte, ob Django skalieren kann, ich sagte ja, weil fast alle modernen Web-Frameworks, unabhängig von der Sprache, skaliert werden können, wenn Sie den richtigen architektonischen Ansatz verwenden
razenha
Ja, blockiert vs nicht - blockierende IO tut Angelegenheit, gemäß dem Tornado Beispiel. Trotzdem ist Tornado kein Webframework, aber Ihre Anwendung muss so geschrieben werden, dass nicht blockierende E / A-Vorgänge genutzt werden.
Rob Grant
Mit Tornado ist es sehr einfach, blockierenden E / A-Code zu schreiben. Und das gibt keine große Parallelität. Framework spielt eigentlich keine Rolle.
Shiplu Mokaddim
80

Devil's Advocate ein bisschen spielen:

Sie sollten die DjangoCon 2008 Keynote von Cal Henderson mit dem Titel "Warum ich Django hasse" lesen , in der er so ziemlich alles durchgeht , was Django fehlt, was Sie auf einer stark frequentierten Website tun möchten. Am Ende des Tages haben Sie diese mit einem offenen Geist alle nehmen , weil es ist durchaus möglich , schreibt Django diese Skala apps, aber ich hielt es für eine gute Präsentation und relevant für Ihre Frage.

Paolo Bergantino
quelle
3
Außerdem wurde Flickr nicht an einem Tag gebaut.
Deniz Dogan
34
Es scheint, dass einige der Probleme, an denen Cal gearbeitet hat, jetzt Standardfunktionen sind: docs.djangoproject.com/de/dev/topics/db/multi-db
Dolph
51

Die größte Django-Site, die ich kenne, ist die Washington Post , was sicherlich darauf hinweisen würde, dass sie gut skaliert werden kann .

Gute Designentscheidungen haben wahrscheinlich einen größeren Einfluss auf die Leistung als alles andere. Twitter wird häufig als eine Website zitiert, die die Leistungsprobleme mit einem anderen dynamisch interpretierten sprachbasierten Webframework, Ruby on Rails, verkörpert. Die Ingenieure von Twitter haben jedoch festgestellt, dass das Framework nicht so problematisch ist wie einige der früh getroffenen Entscheidungen zum Datenbankdesign auf.

Django arbeitet sehr gut mit memcached und bietet einige Klassen zum Verwalten des Caches, in denen Sie die meisten Ihrer Leistungsprobleme lösen würden. Was Sie auf dem Draht liefern, ist in der Realität fast wichtiger als Ihr Backend - die Verwendung eines Tools wie yslow ist für eine leistungsstarke Webanwendung von entscheidender Bedeutung. Sie können immer mehr Hardware in Ihr Backend werfen, aber Sie können die Bandbreite Ihrer Benutzer nicht ändern.

Bayard Randel
quelle
1
Wird nicht nur ein Teil von washingtonpost.com auf Django ausgeführt? Die Django-Startseite scheint darauf hinzudeuten, dass es sich nur um projects.washingtonpost.com/congress
Xiong Chiamiov handelt.
3
Sie verwechseln vielleicht die Washington Post mit der Washington Times. Ich glaube, die Times ist alles auf Django, aber es ist eine viel kleinere Zeitung.
Eli
32

Ich war neulich auf der EuroDjangoCon-Konferenz und dies war das Thema einiger Gespräche - auch von den Gründern der größten in Django ansässigen Site, Pownce (Folien von einem Vortrag hier ). Die Hauptbotschaft ist, dass Sie sich nicht um Django kümmern müssen, sondern um Dinge wie korrektes Caching, Lastausgleich, Datenbankoptimierung usw.

Django hat tatsächlich Haken für die meisten dieser Dinge - insbesondere das Zwischenspeichern ist sehr einfach.

Daniel Roseman
quelle
24

Ich bin sicher, dass Sie nach einer solideren Antwort suchen, aber die offensichtlichste objektive Bestätigung, die ich mir vorstellen kann, ist, dass Google Django zur Verwendung mit seinem App Engine- Framework drängt . Wenn jemand die Skalierbarkeit kennt und sich regelmäßig damit befasst, ist es Google. Nach dem, was ich gelesen habe, scheint der einschränkendste Faktor das Datenbank-Back-End zu sein, weshalb Google sein eigenes ...

jess
quelle
Die Förderung von Django / Python hängt möglicherweise eher mit der Politik von Google zusammen, Python als Wahl der Sprache "Andere" nach C ++ zu bewerben.
GuruM
Als ich GAE verwenden musste, war es ziemlich nah an so etwas wie Tornado ...
Luis Masuelli
18

Wie in High Performance Django Book and Go durch diesen Cal Henderson angegeben

Siehe weitere Details wie unten erwähnt:

Es ist nicht ungewöhnlich, dass Leute sagen: "Django skaliert nicht" . Je nachdem, wie Sie es betrachten, ist die Aussage entweder vollständig wahr oder offensichtlich falsch. Django allein skaliert nicht.

Das Gleiche gilt für Ruby on Rails, Flask, PHP oder jede andere Sprache, die von einer datenbankgesteuerten dynamischen Website verwendet wird.

Die gute Nachricht ist jedoch, dass Django wunderbar mit einer Reihe von Caching- und Lastausgleichstools interagiert, mit denen es auf so viel Verkehr skaliert werden kann, wie Sie darauf werfen können.

Im Gegensatz zu dem, was Sie möglicherweise online gelesen haben, kann dies ohne Austausch von Kernkomponenten geschehen, die häufig als „zu langsam“ gekennzeichnet sind, z. B. das Datenbank-ORM oder die Vorlagenebene.

Disqus liefert über 8 Milliarden Seitenaufrufe pro Monat. Das sind einige große Zahlen.

Diese Teams haben bewiesen, dass Django mit Sicherheit skaliert. Unsere Erfahrung hier bei Lincoln Loop bestätigt dies.

Wir haben große Django-Sites erstellt, die den Tag auf der Reddit-Homepage verbringen können, ohne ins Schwitzen zu geraten.

Djangos skalierende Erfolgsgeschichten sind fast zu zahlreich, um sie an dieser Stelle aufzulisten.

Es unterstützt Disqus, Instagram und Pinterest. Willst du noch mehr Beweise? Instagram konnte mit nur 3 Ingenieuren (von denen 2 keine Back-End-Entwicklung hatten) über 30 Millionen Nutzer auf Django unterstützen

Mushahid Khan
quelle
17

Heute verwenden wir viele Web-Apps und Websites für unsere Bedürfnisse. Die meisten von ihnen sind sehr nützlich. Ich werde Ihnen einige davon zeigen, die von Python oder Django verwendet werden.

Washington Post

Die Website der Washington Post ist eine äußerst beliebte Online-Nachrichtenquelle für ihre Tageszeitung. Die große Menge an Ansichten und Datenverkehr kann vom Django-Webframework problemlos verarbeitet werden. Washington Post - 52.2 million unique visitors (March, 2015)

NASA

Auf der offiziellen Website der National Aeronautics and Space Administration finden Sie Nachrichten, Bilder und Videos zu ihrer laufenden Weltraumforschung. Diese Django-Website kann problemlos große Mengen an Ansichten und Verkehr verarbeiten. 2 million visitors monthly

Der Wächter

The Guardian ist eine britische Nachrichten- und Medienwebsite der Guardian Media Group. Es enthält fast den gesamten Inhalt der Zeitungen The Guardian und The Observer. Diese riesigen Daten werden von Django verarbeitet. The Guardian (commenting system) - 41,6 million unique visitors (October, 2014)

Youtube

Wir alle kennen YouTube als den Ort zum Hochladen von Katzenvideos und scheitern. Als eine der beliebtesten Websites bietet sie uns endlose Stunden Videounterhaltung. Die Programmiersprache Python unterstützt es und die Funktionen, die wir lieben.

DropBox

DropBox startete die Revolution zum Speichern von Online-Dokumenten, die Teil des täglichen Lebens geworden ist. Wir speichern jetzt fast alles in der Cloud. Mit Dropbox können wir fast alles mithilfe von Python speichern, synchronisieren und freigeben.

Umfrage Affe

Survey Monkey ist das größte Online-Umfrageunternehmen. Sie können täglich über eine Million Antworten auf ihrer neu geschriebenen Python-Website verarbeiten.

Quora

Quora ist die Nummer eins im Internet, um Fragen zu stellen und Antworten von einer Community von Einzelpersonen zu erhalten. Auf ihrer Python-Website werden relevante Ergebnisse von diesen Community-Mitgliedern beantwortet, bearbeitet und organisiert.

Bitly

Ein Großteil des Codes für Bitly URL Shortening Services und Analytics wurde mit Python erstellt. Ihr Service kann Hunderte Millionen Ereignisse pro Tag abwickeln.

Reddit

Reddit ist als Titelseite des Internets bekannt. Hier finden Sie Informationen oder Unterhaltung online, die auf Tausenden verschiedener Kategorien basieren. Beiträge und Links werden vom Benutzer generiert und durch Abstimmungen nach oben befördert. Viele der Funktionen von Reddit basieren auf Python für ihre Funktionalität.

Hipmunk

Hipmunk ist eine Online-Reiseseite für Verbraucher, die die Top-Reiseseiten vergleicht, um die besten Angebote für Sie zu finden. Mit den Tools dieser Python-Website können Sie die günstigsten Hotels und Flüge für Ihr Ziel finden.

Klicken Sie hier, um weitere Informationen zu erhalten : 25 der beliebtesten Python- und Django-Websites , Was-sind-einige-bekannte-Websites, die auf Django laufen

Simplans
quelle
15

Ich denke, wir könnten genauso gut Apples App des Jahres 2011, Instagram , zu der Liste hinzufügen, die Django intensiv nutzt.

Milind
quelle
12

Ja, kann es. Es könnte Django mit Python oder Ruby on Rails sein. Es wird immer noch skaliert.

Es gibt nur wenige verschiedene Techniken. Erstens ist Caching keine Skalierung. Zusätzlich zu den Hardware-Balancern können mehrere Anwendungsserver mit nginx als Front ausgeglichen sein. Um auf der Datenbankseite zu skalieren, können Sie mit Read Slave in MySQL / PostgreSQL ziemlich weit gehen, wenn Sie den RDBMS-Weg gehen.

Einige gute Beispiele für stark frequentierte Websites in Django könnten sein:

  • Pownce, als sie noch da waren.
  • Diskus (generischer Manager für gemeinsame Kommentare)
  • Alle zeitungsbezogenen Websites: Washington Post und andere.

Sie können sich sicher fühlen.

Coulix
quelle
2
Sagen Sie einfach ... tote soziale Netzwerke sind ein schlechtes Beispiel für Skalierbarkeit :)
ZJR
3
Ich glaube nicht, dass der Pownce-Tod mit einem Skalierbarkeitsproblem zusammenhängt.
Kedare
9

Hier ist eine Liste einiger relativ hochkarätiger Dinge, die in Django gebaut wurden:

  1. Die App " Untersuchen Sie die Ausgaben Ihres Abgeordneten" des Guardian

  2. Politifact.com (hier ist ein Blog-Beitrag über die (positive) Erfahrung. Die Site hat einen Pulitzer gewonnen.

  3. Repräsentanten- App der NY Times

  4. EveryBlock

  5. Peter Harkins, einer der Programmierer bei WaPo, listet alle Dinge, die sie mit Django erstellt haben, in seinem Blog auf

  6. Es ist ein bisschen alt, aber jemand von der LA Times gab einen grundlegenden Überblick darüber, warum sie mit Django gegangen sind.

  7. Der AV-Club der Zwiebel wurde kürzlich von (ich glaube Drupal) nach Django verlegt.

Ich stelle mir vor, dass einige dieser Websites wahrscheinlich weit über 100.000 Zugriffe pro Tag erzielen. Django kann mit Sicherheit 100.000 Treffer pro Tag und mehr erzielen. Aber YMMV, wenn es darum geht, Ihre spezielle Site dorthin zu bringen, je nachdem, was Sie erstellen.

Es gibt Caching-Optionen auf Django-Ebene (zum Beispiel kann das Zwischenspeichern von Abfragesätzen und Ansichten in Memcached Wunder wirken) und darüber hinaus (Upstream-Caches wie Squid ). Die Spezifikationen des Datenbankservers sind ebenfalls ein Faktor (und in der Regel der Ort, an dem Sie sich verwöhnen lassen müssen), ebenso wie die Optimierung. Gehen Sie zum Beispiel nicht davon aus, dass Django die Indizes richtig einrichtet. Gehen Sie nicht davon aus, dass das Standard- PostgreSQL oder MySQL die richtige ist.

Darüber hinaus haben Sie immer die Möglichkeit, mehrere Anwendungsserver mit Django auszuführen, wenn dies der langsame Punkt ist, mit einem Software- oder Hardware-Load-Balancer im Vordergrund.

Stellen Sie statische Inhalte auf demselben Server wie Django bereit? Verwenden Sie Apache oder etwas wie Nginx oder LightTPD ? Können Sie es sich leisten, ein CDN für statische Inhalte zu verwenden? Dies sind Dinge, über die man nachdenken muss, aber es ist alles sehr spekulativ. 100.000 Treffer / Tag sind nicht die einzige Variable: Wie viel möchten Sie ausgeben? Wie viel Fachwissen haben Sie bei der Verwaltung all dieser Komponenten? Wie viel Zeit haben Sie, um alles zusammenzubringen?

Mazelife
quelle
9

Der Entwickleranwalt für YouTube hielt auf der PyCon 2012 einen Vortrag über die Skalierung von Python , der auch für die Skalierung von Django relevant ist.

YouTube hat mehr als eine Milliarde Nutzer und YouTube basiert auf Python.

Orokusaki
quelle
3
Aber Youtube ist nicht mit Django gebaut. Python mag schnell sein, aber nicht so für Django.
Joshua Partogi
4
Ja, aber der Punkt war, dass Django mit zunehmendem Wachstum auf einer guten Grundlage für Speed-Re-Factoring steht und dass Google an Projekten wie Unladen Swallow arbeitet und es einfach besser wird.
Orokusaki
7

Ich benutze Django seit über einem Jahr und bin sehr beeindruckt davon, wie es Modularität, Skalierbarkeit und Entwicklungsgeschwindigkeit kombiniert. Wie bei jeder Technologie kommt es mit einer Lernkurve. Diese Lernkurve wird jedoch durch die hervorragende Dokumentation der Django-Community viel weniger steil. Django hat mit allem, was ich drauf geworfen habe, wirklich gut umgehen können. Es sieht so aus, als könnte es auch in Zukunft skaliert werden.

BidRodeo Penny Auctions ist eine mittelgroße Website mit Django- Unterstützung . Es ist eine sehr dynamische Website, die täglich eine gute Anzahl von Seitenaufrufen verarbeitet.

Krystian Cybulski
quelle
6

Beachten Sie, dass Sie VIELE Server benötigen, wenn Sie 100.000 Benutzer pro Tag erwarten, die stundenlang aktiv sind (dh maximal 20.000 + gleichzeitige Benutzer). SO hat ~ 15.000 registrierte Benutzer, und die meisten von ihnen sind wahrscheinlich nicht täglich aktiv. Während der Großteil des Datenverkehrs von nicht registrierten Nutzern stammt, schätze ich, dass nur sehr wenige von ihnen länger als ein paar Minuten auf der Website bleiben (dh sie folgen den Google-Suchergebnissen und gehen dann).

Erwarten Sie für dieses Volume mindestens 30 Server ... das sind immer noch ziemlich viele 1.000 gleichzeitige Benutzer pro Server.

Piep Piep
quelle
2
Aus dem Podcast geht hervor, dass SO nur 3 Server verwendet. Aber SO wird mit C # erstellt, nicht mit Python, also zerreißt es.
S.Lott
1
Offensichtlich wird die Frage sein: Wie viele leistungsstarke Server sind das?
Mamcx
6

Was ist die "größte" Seite, die heute auf Django gebaut wurde? (Ich messe die Größe hauptsächlich anhand des Benutzerverkehrs.) Pinterest
disqus.com
Mehr hier: https://www.shuup.com/de/blog/25-of-the-most-popular-python-and-django-websites/

Kann Django täglich mit 100.000 Benutzern umgehen, die jeweils einige Stunden lang die Website besuchen?
Ja, aber verwenden Sie die richtige Architektur, das Datenbankdesign, die Verwendung des Caches, verwenden Sie Lastenausgleich und mehrere Server oder Knoten

Könnte eine Site wie Stack Overflow auf Django laufen?
Ja, ich muss nur der Antwort in der 2. Frage folgen

Ranju R.
quelle
5

Ein weiteres Beispiel ist rasp.yandex.ru, russischer Transportfahrplan. Die Teilnahme entspricht Ihren Anforderungen.

Glader
quelle
5

Wenn Sie eine Site mit statischem Inhalt haben, können Sie Ihre Leistung erheblich steigern , indem Sie einen Lackserver vorlegen. Selbst eine einzelne Box kann dann problemlos 100 Mbit / s Verkehr ausspucken.

Beachten Sie, dass bei dynamischen Inhalten die Verwendung von Lack viel schwieriger wird.

Anders Rune Jensen
quelle
1
Problem hier ist, dass Lack die Leistung von allem dramatisch erhöht. Und schnellere Frameworks werden immer noch schneller sein.
ZJR
5

Meine Erfahrung mit Django ist minimal, aber ich erinnere mich, dass sie in The Django Book ein Kapitel haben, in dem sie Leute interviewen, die einige der größeren Django-Anwendungen ausführen. Hier ist ein Link. Ich denke, es könnte einige Einblicke geben.

Es heißt, curse.com sei eine der größten Django-Anwendungen mit etwa 60 bis 90 Millionen Seitenaufrufen pro Monat.

Tomeedee
quelle
1
curse.com URLs enden jetzt in .aspx ... (keine Ahnung, ob sie sie herstellen)
ZJR
5

Ich entwickle mit Django stark frequentierte Websites für den nationalen Sender in Irland. Es funktioniert gut für uns. Bei der Entwicklung einer Hochleistungswebsite geht es nicht nur um die Auswahl eines Frameworks. Ein Framework ist nur ein Teil eines Systems, das so stark wie das schwächste Glied ist. Die Verwendung des neuesten Frameworks 'X' löst Ihre Leistungsprobleme nicht, wenn das Problem langsame Datenbankabfragen oder ein schlecht konfigurierter Server oder ein schlecht konfiguriertes Netzwerk sind.

roter Schnappfisch
quelle
4

Obwohl es hier viele gute Antworten gab, möchte ich nur darauf hinweisen, dass niemand Wert darauf gelegt hat.

Das hängt von der Anwendung ab

Wenn Ihre Anwendung nur wenig Schreibvorgänge ausführt, lesen Sie viel mehr Daten aus der Datenbank als Sie schreiben. Dann sollte das Skalieren von Django ziemlich trivial sein, zum Teufel, es kommt mit einem ziemlich anständigen Ausgabe- / Ansichts-Caching direkt aus der Box. Nutzen Sie dies und sagen Sie, redis als Cache-Anbieter, stellen Sie einen Load Balancer davor, starten Sie n-Instanzen und Sie sollten in der Lage sein, mit einer SEHR großen Menge an Verkehr umzugehen.

Wenn Sie Tausende von komplexen Schreibvorgängen pro Sekunde ausführen müssen? Andere Geschichte. Wird Django eine schlechte Wahl sein? Nun, nicht unbedingt, hängt davon ab, wie Sie Ihre Lösung wirklich entwickeln und welche Anforderungen Sie stellen.

Nur meine zwei Cent :-)

JustDanyul
quelle
3

Schauen Sie sich diesen Micro News Aggregator namens EveryBlock an .

Es ist vollständig in Django geschrieben. Tatsächlich sind sie die Leute, die das Django-Framework selbst entwickelt haben.

Siddu
quelle
everyblock.com wirft 503
Nishant Nawarkhede
3

Das Problem ist nicht zu wissen, ob Django skalieren kann oder nicht.

Der richtige Weg ist zu verstehen und zu wissen, welche Netzwerkdesignmuster und -werkzeuge unter Ihr Django / Symfony / Rails-Projekt gestellt werden müssen, um eine gute Skalierung zu erreichen.

Einige Ideen können sein:

  • Multiplexing.
  • Inverser Proxy. Beispiel: Nginx, Lack
  • Memcache-Sitzung. Beispiel: Redis
  • Clusterisierung Ihres Projekts und Ihrer Datenbank für Lastausgleich und Fehlertoleranz: Beispiel: Docker
  • Verwenden Sie Dritte, um Assets zu speichern. Beispiel: Amazon S3

Hoffe es hilft ein bisschen. Dies ist mein winziger Felsen zum Berg.

gmourier
quelle
3

Wenn Sie Open Source verwenden möchten, stehen Ihnen viele Optionen zur Verfügung. Aber Python ist das Beste unter ihnen, da es viele Bibliotheken und eine super tolle Community hat. Dies sind einige Gründe, die Ihre Meinung ändern könnten:

  • Python ist sehr gut, aber es ist eine interpretierte Sprache, die es langsam macht. Es gibt jedoch viele Beschleuniger- und Caching-Dienste, die dieses Problem teilweise lösen.

  • Wenn Sie an eine schnelle Entwicklung denken, ist Ruby on Rails das Beste unter allen. Das Hauptmotto dieses (ROR) Frameworks ist es, den Entwicklern eine komfortable Erfahrung zu bieten. Wenn Sie Ruby und Python vergleichen, haben beide fast die gleiche Syntax.

  • Google App Engine ist ein sehr guter Dienst, der Sie jedoch in seinem Umfang bindet. Sie haben keine Chance, neue Dinge auszuprobieren. Stattdessen können Sie die Digital Ocean Cloud verwenden, für die nur 5 US-Dollar pro Monat für das einfachste Tröpfchen berechnet werden. Heroku ist ein weiterer kostenloser Dienst, mit dem Sie Ihr Produkt bereitstellen können.

  • Ja! Ja! Was Sie gehört haben, ist völlig richtig, aber hier sind einige Beispiele, die andere Technologien verwenden

    • Rails: Github, Twitter (zuvor), Shopify, Airbnb, Slideshare, Heroku usw.
    • PHP: Facebook, Wikipedia, Flickr, Yahoo, Tumbler, Mailchimp usw.

Fazit ist ein Rahmen oder eine Sprache wird nicht alles für Sie tun. Durch eine bessere Architektur, Gestaltung und Strategie erhalten Sie eine skalierbare Website. Instagram ist das größte Beispiel, dieses kleine Team verwaltet so große Datenmengen. Hier ist ein Blog über seine Architektur muss es lesen.

pulkit
quelle
Die Django-Entwicklung kann sehr schnell sein. Django ist das Webframework für Perfektionisten mit Fristen.
Les
3

Ich glaube nicht, dass es wirklich um die Django-Skalierung geht.

Ich schlage wirklich vor, dass Sie sich Ihre Architektur ansehen, die Ihnen bei Ihren Skalierungsanforderungen hilft. Wenn Sie das falsch verstehen, macht es keinen Sinn, wie gut Django funktioniert. Leistung! = Skalieren. Sie können ein System haben, das eine erstaunliche Leistung aufweist, aber nicht skaliert und umgekehrt.

Ist Ihre Anwendungsdatenbank gebunden? Wenn ja, dann liegen auch Ihre Skalenprobleme dort. Wie planen Sie die Interaktion mit der Datenbank von Django? Was passiert, wenn Ihre Datenbank Anforderungen nicht so schnell verarbeiten kann, wie Django sie akzeptiert? Was passiert, wenn Ihre Daten über eine physische Maschine hinauswachsen? Sie müssen berücksichtigen, wie Sie mit diesen Umständen umgehen möchten.

Was passiert außerdem, wenn Ihr Datenverkehr über einen App-Server hinauswächst? In diesem Fall kann es schwierig sein, wie Sie mit Sitzungen umgehen. In den meisten Fällen benötigen Sie wahrscheinlich eine Shared-Nothing-Architektur. Auch das hängt von Ihrer Anwendung ab.

In kurzen Sprachen ist nicht das, was den Maßstab bestimmt, sondern eine Sprache, die für die Leistung verantwortlich ist (wiederum hängen abhängig von Ihren Anwendungen verschiedene Sprachen unterschiedlich ab). Es ist Ihr Design und Ihre Architektur, die die Skalierung Wirklichkeit werden lassen.

Ich hoffe es hilft, würde gerne weiterhelfen, wenn Sie Fragen haben.

Anand Davis
quelle
2

Eine gleichmäßige Verteilung der Aufgaben, kurz gesagt, die Optimierung aller Aspekte, einschließlich DBs, Dateien, Bilder, CSS usw., und das Ausgleichen der Last mit mehreren anderen Ressourcen ist erforderlich, sobald Ihre Site / Anwendung wächst. ODER Sie schaffen mehr Platz, damit es wächst. Die Implementierung der neuesten Technologien wie CDN und Cloud ist ein Muss bei riesigen Websites. Nur die Entwicklung und Optimierung einer Anwendung wird Sie nicht zufriedenstellen, andere Komponenten spielen ebenfalls eine wichtige Rolle.

Ashwin
quelle