Czy skalowanie Django? [Zamknięte]


1135

Buduję aplikację internetową za pomocą Django. Powodem, dla którego wybrałem Django, były:

  • Chciałem pracować z narzędziami darmowymi / open-source.
  • Lubię Pythona i uważam, że jest to język długoterminowy , podczas gdy w przypadku Ruby nie byłam pewna, a PHP wydawało się wielkim problemem do nauki.
  • Buduję prototyp pomysłu i nie myślałem zbyt wiele o przyszłości. Szybkość rozwoju była głównym czynnikiem, a ja już znałem Pythona.
  • Wiedziałem, że migracja do Google App Engine będzie łatwiejsza, jeśli zdecyduję się to zrobić w przyszłości.
  • Słyszałem, że Django był „miły”.

Teraz, gdy zbliżam się do myślenia o publikacji mojej pracy, zaczynam się martwić skalą. Jedyne informacje, które znalazłem na temat możliwości skalowania Django, są dostarczane przez zespół Django (nie mówię nic, aby je zignorować, ale wyraźnie nie są to obiektywne informacje ...).

Moje pytania:

  • Jaka jest „największa” strona zbudowana dzisiaj na Django? (Rozmiar mierzę głównie według ruchu użytkowników)
  • Czy Django może poradzić sobie ze 100 000 użytkowników dziennie , z których każdy odwiedza witrynę przez kilka godzin?
  • Czy witryna taka jak Przepełnienie stosu może działać na Django?

2
Jeśli jeszcze tego nie zrobiłeś, polecam przeczytać rozdział o skalowaniu w The Django Book: djangobook.com/en/1.0/chapter20 Lub nowszą wersję: djangobook.com/en/2.0/chapter12
monkut

15
Może warto ustalić, że „szybkość była głównym czynnikiem”, aby wyjaśnić, czy mówimy o szybkości wykonywania lub pracach programistycznych. Brzmi jak wysiłek rozwojowy, co ma sens.
S.Lott

6
Byłoby interesujące porównać to z RoR.
Kozyarchuk

6
@ ajkumar25, AFAIK disqus używa django blog.disqus.com/post/62187806135/… .
alxs

6
pytanie powinno brzmiećwhat's the cost of scaling in the Django?
Sławomir Lenart,

Odpowiedzi:


932
  1. „Jakie są obecnie największe witryny oparte na Django?”

    Nie ma jednego miejsca, które zbierałoby informacje o ruchu na stronach zbudowanych w Django, więc będę musiał spróbować tego, używając danych z różnych lokalizacji. Najpierw mamy listę witryn Django na pierwszej stronie głównej strony projektu Django, a następnie listę witryn zbudowanych w Django na djangosites.org . Przeglądając listy i wybierając niektóre, które znam, mają przyzwoity ruch, widzimy:

  2. „Czy Django może poradzić sobie z 100 000 użytkowników dziennie, z których każdy odwiedza witrynę przez kilka godzin?”

    Tak, patrz wyżej.

  3. „Czy witryna taka jak Przepełnienie stosu może działać na Django?”

    Mam przeczucie, że tak, ale jak odpowiedzieli inni i Mike Malone wspomina w swojej prezentacji, projektowanie baz danych ma kluczowe znaczenie. Silny dowód można również znaleźć na stronie www.cnprog.com, jeśli znajdziemy wiarygodne statystyki ruchu. W każdym razie, to nie tylko coś, co się stanie, łącząc kilka modeli Django :)

Istnieje oczywiście wiele innych interesujących stron i blogerów, ale muszę gdzieś się zatrzymać!


Wpis na blogu o korzystaniu z Django do budowy witryny o dużym ruchu michaelmoore.com opisanej jako 10 000 najpopularniejszych witryn . Statystyki Quantcast i statystyki compete.com .


(*) Autor zmiany, w tym takie odniesienie, pracował jako outsourcing programisty w tym projekcie.


267

Teraz przeprowadzamy testy obciążenia. Uważamy, że możemy obsłużyć 240 równoczesnych żądań (stały współczynnik 120 trafień na sekundę 24x7) bez znacznego pogorszenia wydajności serwera. To byłoby 432,000 odsłon na godzinę. Czasy odpowiedzi nie są małe (nasze transakcje są duże), ale nie ma pogorszenia naszej podstawowej wydajności wraz ze wzrostem obciążenia.

Używamy frontonu Django i MySQL Apache. System operacyjny to Red Hat Enterprise Linux (RHEL). 64-bitowy Używamy mod_wsgi w trybie demona dla Django. Nie dokonaliśmy żadnej optymalizacji pamięci podręcznej ani bazy danych poza zaakceptowaniem wartości domyślnych.

Wszyscy jesteśmy w jednej maszynie wirtualnej na 64-bitowym komputerze Dell z (myślę) 32 GB pamięci RAM.

Ponieważ wydajność jest prawie taka sama dla 20 lub 200 jednoczesnych użytkowników, nie musimy poświęcać dużej ilości czasu na „ulepszanie”. Zamiast tego musimy po prostu utrzymać naszą podstawową wydajność poprzez zwykłe ulepszenia wydajności SSL, zwykłe projektowanie i wdrażanie baz danych (indeksowanie itp.), Zwykłe ulepszenia wydajności zapory ogniowej itp.

Mierzymy nasze laptopy testujące obciążenie, które zmagają się z szalonym obciążeniem 15 procesów z 16 współbieżnymi wątkami żądań.


3
Ciekawe: czy twoja baza danych działa na tym samym komputerze, czy na osobnym serwerze?
Jarret Hardie

16
Jedna maszyna wirtualna z Apache, Django i MySQL. mod_wsgi. RHEL.
S.Lott

4
Jakaś aktualizacja wskaźników wydajności?
SexyBeast

1
Masz rację - jeśli uważasz ruch w witrynie za kolejkę, to ile odpowiedzi możesz podać na godzinę? Jeśli skrócisz czas reakcji, możesz serwować więcej, a tym samym mieć „większą skalowalność” - tak naprawdę nie ma znaczenia, czy używasz Django, Twisted, Rails lub technologii z planety Zod.
Ralph Bolton

2
Pracuję z Django od lat i nigdy nie widziałem takiej wydajności w niczym innym niż w zabawkowej aplikacji, która jest w większości tylko do odczytu. Jaki jest charakter Twojej aplikacji? Wszystko, co zawiera szablony, oprogramowanie pośrednie, sesje lub połączenia z bazą danych, nigdy nie będzie obsługiwać 120 trafień na sekundę bez ogromnej ilości pamięci podręcznej, aby ominąć to wszystko.
Cerin,


107

Jaka jest „największa” strona zbudowana dzisiaj na Django? (Rozmiar mierzę głównie według ruchu użytkowników)

W USA był to Mahalo . Powiedziano mi, że obsługują około 10 milionów unikatów miesięcznie. W 2019 roku Mahalo jest zasilany przez Ruby on Rails.

Za granicą, Globo sieć (sieć stron z wiadomościami, sportem i rozrywką w Brazylii); Alexa zalicza je do 100 najlepszych na świecie (obecnie około 80).

Inni znaczący użytkownicy Django to PBS, National Geographic, Discovery, NASA (właściwie wiele różnych działów w NASA) oraz Biblioteka Kongresu.

Czy Django może poradzić sobie ze 100 000 użytkowników dziennie, z których każdy odwiedza witrynę przez kilka godzin?

Tak - ale tylko jeśli poprawnie napisałeś aplikację i masz wystarczający sprzęt. Django nie jest magiczną kulą.

Czy strona taka jak StackOverflow może działać na Django?

Tak (ale patrz wyżej).

Pod względem technologicznym, łatwo: patrz soclone na jedną próbę. Pod względem ruchu konkuruj z kołkami StackOverflow przy mniej niż 1 milion unikalnych miesięcznie. Mogę wymienić co najmniej tuzin witryn Django o większym ruchu niż SO.


2
Czy możesz oszacować przybliżoną cenę 5000 trafień na sekundę, zakładając, że jest ona podobna do Linkedin, używając Django. Załóżmy, że przeciętny programista zbudował witrynę i oczywiście dodał buforowanie. Załóżmy, że algorytmy itp. (Aby przyspieszyć działanie) nie są używane, ponieważ ich jeszcze nie znam.
user2349115

5
@ user2349115 do czasu, gdy Twoja aplikacja otrzyma 5000 „trafień na sekundę”, będziesz mieć wystarczającą wiedzę w tle, aby zrozumieć, dlaczego zadawanie niewłaściwych pytań jest niewłaściwe.
Kye R

Moi ninja (rozszerzenie przeglądarki Wrappalyzer) mówią, że Mahalo jest rubinowy na szynach, zasilany teraz w marcu 2019 r.
Miles Davis

87

Skalowanie aplikacji internetowych nie dotyczy frameworków ani języków, dotyczy twojej architektury. Chodzi o to, jak obchodzisz się z pamięcią podręczną przeglądarki, pamięcią podręczną bazy danych, jak korzystasz z niestandardowych dostawców trwałości (takich jak CouchDB ), jak dostrojona jest twoja baza danych i wiele innych rzeczy ...


Struktura sieci ma znaczenie! Zobacz, jak szybkie tornado w porównaniu do innych frameworków Pythona: tornadoweb.org/documentation#performance
Joshua Partogi

Nie przegłosowałem, ale przypuszczam, że trochę poszedłeś na ten temat, ponieważ omawiając zalety django i nie możesz korzystać z każdej bazy danych, dostroić bazę danych i używać couchdb na maksimum w każdym danym frameworku. Chyba że oczywiście nie przepisujesz dużych fragmentów.
ZJR

8
@ZLR Nie sądzę, że poszedłem poza temat. Zapytał, czy Django może skalować, powiedziałem tak, ponieważ prawie wszystkie współczesne frameworki, niezależnie od języka, mogą skalować, jeśli zastosujesz odpowiednie podejście architektoniczne
razenha

Tak, blokowanie kontra nieblokujące IO ma znaczenie, jak na przykładzie Tornado. Mimo to Tornado nie jest platformą internetową, ale twoja aplikacja będzie musiała zostać napisana w sposób, który wykorzystuje nieblokujące IO.
Rob Grant,

Z Tornado bardzo łatwo jest napisać blokujący kod IO. I to nie daje wysokiej współbieżności. Framework faktycznie nie ma znaczenia.
Shiplu Mokaddim

80

Wcielając się trochę w adwokata diabła:

Powinieneś sprawdzić Keynote DjangoCon 2008 , dostarczony przez Cala Hendersona , zatytułowany „Dlaczego nienawidzę Django”, w którym omawia wszystko, czego brakuje Django, co możesz zrobić na stronie o dużym ruchu. Pod koniec dnia trzeba wziąć to wszystko z otwartym umysłem, bo to jest całkiem możliwe, aby napisać, że aplikacje Django skalę, ale myślałem, że to była dobra prezentacja i pasuje do Twojego pytania.


3
Ponadto Flickr nie został zbudowany w ciągu jednego dnia.
Deniz Dogan

34
Wygląda na to, że kilka zagadnień, na które Cal się zgodził, są teraz standardowymi funkcjami: docs.djangoproject.com/en/dev/topics/db/multi-db
Dolph

51

Największą witryną django, którą znam, jest Washington Post , co z pewnością wskazywałoby, że można ją dobrze skalować.

Dobre decyzje projektowe prawdopodobnie mają większy wpływ na wydajność niż cokolwiek innego. Twitter jest często cytowany jako strona, która ucieleśnia problemy z wydajnością w innym frameworku internetowym opartym na dynamicznie interpretowanym języku, Ruby on Rails - jednak inżynierowie Twittera stwierdzili, że framework nie jest tak dużym problemem, jak niektóre z wcześniejszych wyborów dotyczących projektu bazy danych na.

Django działa bardzo dobrze z memcached i udostępnia pewne klasy do zarządzania pamięcią podręczną, w której rozwiązano by większość problemów z wydajnością. To, co dostarczasz na drut, jest w rzeczywistości prawie ważniejsze niż backend - użycie narzędzia takiego jak yslow ma kluczowe znaczenie dla wysokowydajnej aplikacji internetowej. Zawsze możesz rzucić więcej sprzętu na zapleczu, ale nie możesz zmienić przepustowości użytkowników.


1
Czy na Django działa nie tylko część washingtonpost.com? Strona główna Django wydaje się wskazywać, że to tylko projekty.
Washingtonpost.com/congress

3
Być może mylisz Washington Post z Washington Times. Wierzę, że Times jest na Django, ale jest to znacznie mniejszy papier.
Eli

32

Byłem na konferencji EuroDjangoCon drugi tydzień i był to temat kilku rozmów - w tym od założycieli największej witryny opartej na Django, Pownce (slajdy z jednej rozmowy tutaj ). Główny komunikat jest taki, że nie musisz martwić się o Django, ale takie rzeczy, jak prawidłowe buforowanie, równoważenie obciążenia, optymalizacja bazy danych itp.

Django faktycznie ma haczyki do większości tych rzeczy - w szczególności buforowanie jest bardzo łatwe.


24

Jestem pewien, że szukasz bardziej solidnej odpowiedzi, ale najbardziej oczywistym obiektywnym sprawdzeniem, jakie mogę wymyślić, jest to, że Google popycha Django do korzystania ze swojej struktury App Engine . Jeśli ktoś wie o skalowalności i zajmuje się nią regularnie, to Google. Z tego, co przeczytałem, najbardziej ograniczającym czynnikiem wydaje się być zaplecze bazy danych, dlatego Google używa własnego ...


Promowanie Django / Python może być bardziej związane z polityką Google dotyczącą promowania Pythona jako wyboru „Innego” języka po C ++?
GuruM

Kiedy musiałem użyć GAE, było to bardzo zbliżone do czegoś takiego jak Tornado ...
Luis Masuelli

18

Jak stwierdzono w High Performance Django Book and Go through this Cal Henderson

Zobacz dalsze szczegóły, jak wspomniano poniżej:

Często zdarza się, że ludzie mówią „Django nie skaluje się” . W zależności od tego, jak na to spojrzysz, stwierdzenie jest albo całkowicie prawdziwe, albo najwyraźniej fałszywe. Sam Django nie skaluje się.

To samo można powiedzieć o Ruby on Rails, Flask, PHP lub innym języku używanym przez dynamiczną stronę internetową opartą na bazie danych.

Dobrą wiadomością jest jednak to, że Django pięknie współdziała z pakietem narzędzi buforowania i równoważenia obciążenia, które pozwolą mu skalować się do tak dużego ruchu, jak to możliwe.

W przeciwieństwie do tego, co przeczytałeś online, może to zrobić bez zastępowania głównych komponentów często oznaczanych jako „zbyt powolne”, takich jak baza danych ORM lub warstwa szablonu.

Disqus obsługuje ponad 8 miliardów odsłon miesięcznie. To są ogromne liczby.

Te zespoły dowiodły, że Django z pewnością jest skalowalny. Potwierdza to nasze doświadczenie w Lincoln Loop.

Zbudowaliśmy duże strony Django, które potrafią spędzić dzień na stronie głównej Reddit bez wysiłku.

Historie sukcesu skalowania Django są w tej chwili prawie zbyt liczne, by je wymienić.

Wspiera Disqus, Instagram i Pinterest. Chcesz więcej dowodów? Instagram był w stanie obsłużyć ponad 30 milionów użytkowników Django, mając tylko 3 inżynierów (z których 2 nie miało zaplecza programistycznego


17

Dzisiaj korzystamy z wielu aplikacji i witryn internetowych do naszych potrzeb. Większość z nich jest bardzo przydatna. Pokażę ci niektóre z nich używane przez python lub django.

Washington Post

Witryna Washington Post jest niezwykle popularnym źródłem wiadomości online, towarzyszącym codziennym artykułom. Jego ogromna liczba wyświetleń i ruchu może być łatwo obsługiwana przez platformę internetową Django. Washington Post - 52.2 million unique visitors (March, 2015)

NASA

Oficjalna strona internetowa National Aeronautics and Space Administration to miejsce, w którym można znaleźć wiadomości, zdjęcia i filmy z ich trwających eksploracji kosmosu. Ta strona internetowa Django może z łatwością obsługiwać ogromne ilości wyświetleń i ruchu. 2 million visitors monthly

Opiekun

The Guardian to brytyjska strona z wiadomościami i mediami należąca do Guardian Media Group. Zawiera prawie całą zawartość gazet The Guardian i The Observer. Te ogromne dane są obsługiwane przez Django. The Guardian (commenting system) - 41,6 million unique visitors (October, 2014)

Youtube

Wszyscy znamy YouTube jako miejsce do przesyłania filmów o kotach i kończy się niepowodzeniem. Jako jedna z najpopularniejszych stron internetowych, zapewnia nam niekończącą się godzinę rozrywki wideo. Język programowania Python napędza go i funkcje, które kochamy.

DropBox

DropBox rozpoczął rewolucję przechowywania dokumentów online, która stała się częścią codziennego życia. Teraz przechowujemy prawie wszystko w chmurze. Dropbox pozwala nam przechowywać, synchronizować i udostępniać prawie wszystko przy użyciu mocy Pythona.

Survey Monkey

Survey Monkey to największa internetowa firma ankietowa. Mogą obsłużyć ponad milion odpowiedzi każdego dnia na przepisanej stronie Python.

Quora

Quora jest numerem jeden w Internecie, gdzie można zadawać pytania i otrzymywać odpowiedzi od społeczności osób. Na ich stronie internetowej w Pythonie członkowie społeczności odpowiadają, edytują i organizują odpowiednie wyniki.

Bitly

Większość kodu dla usług i analiz Bitly URL-owych jest zbudowana w Pythonie. Ich obsługa może obsłużyć setki milionów wydarzeń dziennie.

Reddit

Reddit jest znany jako pierwsza strona Internetu. Jest to miejsce online do wyszukiwania informacji lub rozrywki w oparciu o tysiące różnych kategorii. Wpisy i linki są generowane przez użytkowników i są promowane na szczyt za pomocą głosów. Wiele możliwości Reddit opiera się na Pythonie.

Hipmunk

Hipmunk to internetowa witryna dla klientów indywidualnych, która porównuje najlepsze witryny turystyczne, aby znaleźć najlepsze oferty. Narzędzia tej witryny Python pozwalają znaleźć najtańsze hotele i loty do miejsca docelowego.

Kliknij tutaj, aby uzyskać więcej: 25 najpopularniejszych witryn python-i-django , jakie są znane witryny działające na Django


15

Myślę, że równie dobrze moglibyśmy dodać aplikację Apple na rok 2011, Instagram , do listy intensywnie korzystającej z Django.


12

Tak, może. Może to być Django z Pythonem lub Ruby on Rails. Nadal będzie się skalować.

Istnieje kilka różnych technik. Po pierwsze, buforowanie nie jest skalowaniem. Możesz mieć kilka serwerów aplikacji zbalansowanych z nginx jako frontem oprócz sprzętowych urządzeń równoważących. Aby skalować po stronie bazy danych, możesz posunąć się daleko z czytaniem slave w MySQL / PostgreSQL, jeśli korzystasz z RDBMS.

Dobrymi przykładami witryn o dużym natężeniu ruchu w Django mogą być:

  • Pownce kiedy jeszcze tam byli.
  • Discus (ogólny menedżer komentarzy udostępnionych)
  • Wszystkie strony związane z gazetami: Washington Post i inne.

Możesz czuć się bezpiecznie.


2
Powiedzmy, że ... martwe sieci społecznościowe stanowią zły przykład skalowalności :)
ZJR,

3
Nie sądzę, że śmierć Pownce jest związana z problemem skalowalności.
Kedare,

9

Oto lista niektórych stosunkowo głośnych rzeczy zbudowanych w Django:

  1. Aplikacja The Guardian „ Zbadaj wydatki swojego MP

  2. Politifact.com (tutaj jest post na blogu mówiący o (pozytywnych) doświadczeniach. Strona wygrała Pulitzera.

  3. Reprezentuje aplikację NY Times

  4. EveryBlock

  5. Peter Harkins, jeden z programistów w WaPo, wymienia na swoim blogu wszystkie rzeczy, które stworzyli z Django

  6. Jest trochę stary, ale ktoś z LA Times przedstawił podstawowy przegląd tego, dlaczego poszedł z Django.

  7. Klub AV cebuli został niedawno przeniesiony z (chyba Drupala) do Django.

Wyobrażam sobie, że pewna liczba tych witryn prawdopodobnie osiąga ponad 100 000 wyświetleń dziennie. Django z pewnością może wykonać 100 000 odsłon dziennie i więcej. Ale YMMV zapewnia dostęp do konkretnej witryny w zależności od tego, co budujesz.

Istnieją opcje buforowania na poziomie Django (na przykład buforowanie zestawów zapytań i widoków w memcached może zdziałać cuda) i poza nimi (buforowanie takie jak Squid ). Istotnym czynnikiem będą również specyfikacje serwera bazy danych (i zwykle miejsce, w którym można się wyszaleć), podobnie jak jego dostrojenie. Nie zakładaj na przykład, że Django odpowiednio skonfiguruje indeksy. Nie zakładaj, że domyślna konfiguracja PostgreSQL lub MySQL jest właściwa.

Ponadto zawsze masz opcję posiadania wielu serwerów aplikacji z uruchomionym Django, jeśli jest to powolny punkt, z oprogramowaniem lub sprzętowym modułem równoważącym obciążenie z przodu.

Na koniec, czy udostępniasz treści statyczne na tym samym serwerze, co Django? Czy używasz Apache lub czegoś takiego jak nginx lub lighttpd ? Czy możesz sobie pozwolić na użycie CDN dla treści statycznych? To są rzeczy do przemyślenia, ale wszystko to jest bardzo spekulacyjne. 100 000 odsłon / dzień nie jest jedyną zmienną: ile chcesz wydać? Jak dużą wiedzę masz w zarządzaniu wszystkimi tymi komponentami? Ile masz czasu, aby zebrać to wszystko razem?


9

Zwolennik programisty YouTube wygłosił przemówienie na temat skalowania Pythona na PyCon 2012 , co ma również znaczenie w przypadku skalowania Django.

YouTube ma ponad miliard użytkowników , a YouTube jest oparty na Pythonie.


3
Ale youtube nie jest zbudowany z Django. Python może być szybki, ale nie w przypadku django.
Joshua Partogi

4
Tak, ale chodziło o to, że wraz z rozwojem Django, opiera się on na dobrych podstawach faktoringu prędkości, a dzięki Google pracującemu nad projektami takimi jak Unladen Swallow, będzie jeszcze lepiej.
orokusaki

7

Używam Django od ponad roku i jestem pod wielkim wrażeniem tego, jak udaje mu się połączyć modułowość, skalowalność i szybkość rozwoju. Podobnie jak w przypadku każdej technologii, ma krzywą uczenia się. Jednak ta krzywa uczenia się jest o wiele mniej stroma dzięki doskonałej dokumentacji społeczności Django. Django był w stanie poradzić sobie ze wszystkim, co na niego rzuciłem. Wygląda na to, że będzie w stanie dobrze skalować się w przyszłości.

BidRodeo Penny Auctions to strona internetowa o średniej wielkości zasilana przez Django. Jest to bardzo dynamiczna strona internetowa, która obsługuje dużą liczbę odsłon dziennie.


6

Pamiętaj, że jeśli oczekujesz 100 000 użytkowników dziennie, którzy są aktywni przez wiele godzin na raz (co oznacza maksymalnie 20 000 jednoczesnych użytkowników), będziesz potrzebować DUŻO serwerów. SO ma ~ 15 000 zarejestrowanych użytkowników, a większość z nich prawdopodobnie nie jest aktywna codziennie. Chociaż większość ruchu pochodzi od niezarejestrowanych użytkowników, zgaduję, że bardzo niewielu z nich pozostaje w witrynie dłużej niż kilka minut (tzn. Śledzą wyniki wyszukiwania Google, a następnie wychodzą).

W przypadku tego woluminu spodziewaj się co najmniej 30 serwerów ... co wciąż stanowi dość ciężką liczbę 1000 równoczesnych użytkowników na serwer.


2
Z podcastu wynika, że ​​SO używa tylko 3 serwerów. Ale SO jest zbudowany przy użyciu C #, a nie Python, więc się rozrywa.
S.Lott

1
Oczywiście pytanie brzmi: ile to są potężnych serwerów?
mamcx,

6

Jaka jest „największa” strona zbudowana dzisiaj na Django? (Mierzę rozmiar głównie według ruchu użytkowników) Pinterest
disqus.com
Więcej tutaj: https://www.shuup.com/en/blog/25-of-the-most-popular-python-and-django-websites/

Czy Django może poradzić sobie ze 100 000 użytkowników dziennie, z których każdy odwiedza witrynę przez kilka godzin?
Tak, ale używaj odpowiedniej architektury, projektu bazy danych, pamięci podręcznej, równoważenia obciążenia i wielu serwerów lub węzłów

Czy witryna taka jak Przepełnienie stosu może działać na Django?
Tak, wystarczy postępować zgodnie z odpowiedzią wymienioną w drugim pytaniu


5

Innym przykładem jest rasp.yandex.ru, rosyjska usługa rozkładów jazdy transportu. Jego obecność spełnia twoje wymagania.


5

Jeśli masz witrynę z pewną zawartością statyczną, to nałóż lakier serwera z przodu znacznie zwiększy Twoją wydajność. Nawet pojedyncze urządzenie może wtedy z łatwością wypluć 100 Mbit / s ruchu.

Zauważ, że przy zawartości dynamicznej używanie czegoś takiego jak Lakier staje się znacznie trudniejsze.


1
Problem w tym, że lakier znacznie zwiększy wydajność wszystkiego. A szybsze ramy będą nadal szybsze.
ZJR

5

Moje doświadczenie z Django jest minimalne, ale pamiętam, że w książce Django mają rozdział, w którym przeprowadzają wywiady z osobami korzystającymi z większych aplikacji Django. Oto link. Wydaje mi się, że to może zapewnić pewne spostrzeżenia.

Mówi, że curse.com jest jedną z największych aplikacji Django z około 60-90 milionami odsłon w ciągu miesiąca.


1
adresy URL curse.com kończą się teraz na .aspx ... (nie wiem, jeśli je
stworzą

5

Zajmuję się tworzeniem witryn o dużym natężeniu ruchu przy użyciu Django dla krajowego nadawcy w Irlandii. Działa dla nas dobrze. Opracowanie strony o wysokiej wydajności to coś więcej niż tylko wybór frameworka. Framework będzie tylko jedną częścią systemu, który jest tak silny, jak jego najsłabsze ogniwo. Korzystanie z najnowszego frameworka „X” nie rozwiąże problemów z wydajnością, jeśli problemem są powolne zapytania do bazy danych lub źle skonfigurowany serwer lub sieć.


4

Mimo, że pojawiło się tu wiele świetnych odpowiedzi, chciałbym tylko wskazać, że nikt nie kładł nacisk na ...

To zależy od zastosowania

Jeśli twoja aplikacja jest łatwa w zapisie, ponieważ w trakcie czytania dużo więcej danych z bazy danych niż piszesz. Zatem skalowanie django powinno być dość trywialne, do diabła, ma dość przyzwoite buforowanie danych wyjściowych / widoków od razu po wyjęciu z pudełka. Skorzystaj z tego i powiedzmy, redis jako dostawca pamięci podręcznej, umieść przed nim moduł równoważenia obciążenia, podkręć n-instancji i powinieneś być w stanie poradzić sobie z BARDZO dużą ilością ruchu.

Teraz, jeśli musisz zrobić tysiące skomplikowanych zapisów na sekundę? Inna historia. Czy Django będzie złym wyborem? Cóż, niekoniecznie, zależy to od tego, jak naprawdę zbudujesz swoje rozwiązanie, a także jakie są twoje wymagania.

Tylko moje dwa centy :-)




3

Problemem jest nie wiedzieć, czy django można skalować, czy nie.

Właściwy sposób to zrozumienie i wiedzieć, jakie są wzorce projektowania sieci i narzędzia, które należy poddać projektowi django / symfony / rails, aby dobrze skalować.

Niektóre pomysły mogą być:

  • Multipleksowanie.
  • Odwrócony serwer proxy. Np .: Nginx, lakier
  • Sesja Memcache. Np .: Redis
  • Klasterizacja projektu i db w celu równoważenia obciążenia i tolerancji na błędy: np .: Docker
  • Korzystaj z usług podmiotów zewnętrznych do przechowywania zasobów. Np .: Amazon S3

Mam nadzieję, że to trochę pomoże. To moja maleńka skała do góry.


3

Jeśli chcesz skorzystać z Open source, istnieje wiele opcji dla Ciebie. Ale Python jest najlepszy wśród nich, ponieważ ma wiele bibliotek i super niesamowitą społeczność. Oto kilka powodów, które mogą zmienić zdanie:

  • Python jest bardzo dobry, ale jest to język interpretowany, który spowalnia go. Ale istnieje wiele usług przyspieszających i buforujących, które częściowo rozwiązują ten problem.

  • Jeśli myślisz o szybkim rozwoju, Ruby on Rails jest najlepszy ze wszystkich. Głównym mottem tego frameworka (ROR) jest zapewnienie programistom komfortowego doświadczenia. Jeśli porównasz Ruby i Python, oba mają prawie taką samą składnię.

  • Google App Engine to bardzo dobra usługa, ale wiąże cię w swoim zasięgu, nie masz szansy na eksperymentowanie z nowymi rzeczami. Zamiast tego możesz użyć chmury Digital Ocean, która za najprostszą kroplę pobierze tylko 5 USD miesięcznie . Heroku to kolejna darmowa usługa, w której możesz wdrożyć swój produkt.

  • Tak! Tak! To, co słyszałeś, jest całkowicie poprawne, ale oto kilka przykładów, które wykorzystują inne technologie

    • Railsy: Github, Twitter (wcześniej), Shopify, Airbnb, Slideshare, Heroku itp.
    • PHP: Facebook, Wikipedia, Flickr, Yahoo, Tumbler, Mailchimp itp.

Wniosek jest strukturą lub językiem nie zrobi wszystkiego dla Ciebie. Lepsza architektura, projektowanie i strategia zapewnią skalowalną stronę internetową. Instagram jest największym przykładem, ten niewielki zespół zarządza tak ogromnymi danymi. Oto jeden blog o swojej architekturze musi go przeczytać.


Rozwój Django może być bardzo szybki. Django to platforma internetowa dla perfekcjonistów z terminami.
les

3

Nie sądzę, że problem dotyczy skalowania Django.

Naprawdę sugeruję przyjrzeć się swojej architekturze, która pomoże ci w twoich potrzebach skalowania. Jeśli pomylisz się, nie ma sensu, jak dobrze Django działa. Wydajność! = Skala. Możesz mieć system, który ma niesamowitą wydajność, ale nie skaluje się i odwrotnie.

Czy twoja baza danych aplikacji jest powiązana? Jeśli tak, to i tam leżą problemy z wagą. Jak planujesz interakcję z bazą danych z Django? Co dzieje się, gdy baza danych nie może przetwarzać żądań tak szybko, jak Django je przyjmuje? Co się stanie, gdy Twoje dane wyrosną z jednej fizycznej maszyny. Musisz uwzględnić sposób, w jaki planujesz poradzić sobie z tymi okolicznościami.

Co ponadto dzieje się, gdy Twój ruch przerasta jeden serwer aplikacji? sposób, w jaki radzisz sobie z sesjami w tym przypadku, może być trudny, częściej nie wymagałoby to architektury współdzielonej niczego. To zależy od twojej aplikacji.

W krótkich językach nie decyduje o skali, język jest odpowiedzialny za wydajność (ponownie, w zależności od aplikacji, różne języki działają inaczej). To twój projekt i architektura sprawiają, że skalowanie staje się rzeczywistością.

Mam nadzieję, że to pomoże, chętnie pomogę, jeśli masz pytania.


2

Równomierne rozłożenie zadań, w skrócie optymalizacja każdego aspektu, w tym baz danych, plików, obrazów, CSS itp. Oraz zrównoważenie obciążenia kilkoma innymi zasobami jest konieczne, gdy witryna / aplikacja zacznie się rozwijać. LUB pozostawiasz więcej miejsca na jego rozwój. Wdrażanie najnowszych technologii, takich jak CDN, Cloud, jest koniecznością w przypadku dużych witryn. Samo rozwijanie i ulepszanie aplikacji nie zapewni Ci stuprocentowej satysfakcji, inne elementy również odgrywają ważną rolę.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.