Масштабируется ли Django? [закрытый]

Я создаю веб-приложение с Django. Я выбрал Джанго по следующим причинам:--1-->

  • Я хотел работать с бесплатными / открытыми исходными инструментами.
  • мне нравится Python и чувствую, что это "долгосрочный" язык, тогда как относительно Ruby я не был уверен, и PHP казался огромной проблемой для изучения.
  • Я создаю прототип идеи и не слишком много думал о будущем. Скорость разработки была основным фактором, и я уже знал Python.
  • I знал, что миграция в Google App Engine будет проще, если я решу сделать это в будущем.
  • Я слышал, что Джанго был "хороший".

теперь, когда я приближаюсь к мысли о публикации моей работы, я начинаю беспокоиться о масштабе. Единственная информация, которую я нашел о возможностях масштабирования Django, предоставляется командой Django (я ничего не говорю, чтобы игнорировать их, но это явно не объективная информация...).

мой вопросы:

  • какой" самый большой " сайт, который построен на Django сегодня? (Я измеряю размер в основном пользовательским трафиком)
  • может ли Django иметь дело с 100 000 пользователей ежедневно, каждый посещает сайт в течение нескольких часов?
  • может ли сайт, такой как переполнение стека, работать на Django?

29 ответов


  1. " какие самые большие сайты построены на Джанго сегодня?"

    нет ни одного места, которое собирает информацию о трафике на сайтах, построенных Django, поэтому мне придется нанести удар по нему, используя данные из разных мест. Во-первых, у нас есть список сайтов Django на главной странице главная страница проекта Django а затем список построенных сайтов Django в djangosites.org. Просматриваю списки и выбираю что я знаю, у приличного трафика мы видим:

  2. " может Django иметь дело с 100 000 пользователей ежедневно, каждый посещение сайт на пару часов?"

    да, см. выше.

  3. " может ли сайт, такой как переполнение стека, работать на Django?"

    мое внутреннее чувство-да, но, как ответили другие, и Майк Малоун упоминает в своей презентации, дизайн базы данных имеет решающее значение. Сильные доказательства можно также найти на www.cnprog.com если мы сможем найти надежную статистику трафика. Во всяком случае, это не просто то, что произойдет, собрав кучу Django модели :)

есть, конечно, еще много сайтов и блоггеров, представляющих интерес, но я должен где-то остановиться!


блоге о использование Django для создания сайта с высоким трафиком michaelmoore.com описано как топ 10,000 веб-сайт. аудитории с помощью нескольких различных статистика и compete.com статистика.


(*) автор правки, включая такую ссылку, использовал для работы как аутсорсинговый разработчик в этом проекте.


мы сейчас проводим нагрузочное тестирование. Мы считаем, что можем поддерживать 240 одновременных запросов (устойчивая скорость 120 ударов в секунду 24x7) без какого-либо значительного снижения производительности сервера. Это будет 432 000 попаданий в час. Время отклика не маленькое (наши транзакции большие), но нет ухудшения от нашей базовой производительности по мере увеличения нагрузки.

мы используем Apache front-ending Django и MySQL. ОС-Red Hat Enterprise Linux (RHEL). 64-битовый. Мы использовать mod_wsgi в режиме демона для Django. Мы не делали никакой оптимизации кэша или базы данных, кроме как принимать значения по умолчанию.

мы все в одной виртуальной машине на 64-битной Dell с (я думаю) 32GB RAM.

поскольку производительность почти одинакова для 20 или 200 одновременных пользователей, нам не нужно тратить огромное количество времени на "настройку". Вместо этого нам просто нужно поддерживать нашу базовую производительность с помощью обычных улучшений производительности SSL, обычного дизайна и реализации базы данных (индексация и т. п.), обычные улучшения производительности брандмауэра, и т. д.

то, что мы измеряем, - это наши тестовые ноутбуки, борющиеся с безумной нагрузкой 15 процессов, выполняющих 16 параллельных потоков запросов.


Не уверен в количестве ежедневных посещений, но вот несколько примеров больших сайтов Django:

вот ссылка на список высокий трафик сайтов Django на Quora.


какой" самый большой " сайт, который построен на Django сегодня? (Я измеряю размер в основном пользовательским трафиком)

в нас спасибо. Мне сказали, что они обрабатывают примерно 10 миллионов уников в месяц.

за рубежом Глобо сеть (сеть новостных, спортивных и развлекательных сайтов в Бразилии); Alexa занимает их в топ-100 по всему миру (около 80-го в настоящее время).

другие известные пользователи Django включают PBS, Национальный Географический, Discovery, NASA (фактически ряд различных подразделений в NASA) и Библиотека Конгресса.

может ли Django иметь дело со 100k пользователями ежедневно, каждый посещает сайт в течение нескольких часов?

да -- но только если вы правильно написали свое приложение и если у вас достаточно оборудования. Джанго-не волшебная пуля.

может ли такой сайт, как StackOverflow, работать на Django?

да (но см. выше.)

технология-мудрый, легко: см soclone за одну попытку. Трафик-мудрый, соревнуйтесь с колышками StackOverflow на уровне менее 1 миллиона uniques в месяц. Я могу назвать по крайней мере дюжину сайтов Django с большим трафиком.


играя адвоката дьявола немного:

вы должны проверить DjangoCon Лейтмотивом 2008, доставлен Кэл Хендерсон, под названием "Почему я ненавижу Джанго", где он в значительной степени переходит все, что Джанго отсутствует, что вы можете сделать на веб-сайте с высоким трафиком. В конце концов, вы должны принять это все с открытым умом, потому что это is вполне возможно писать приложения Django такого масштаба, но я думал, что это хорошо презентация и отношение к вашему вопросу.


масштабирование веб-приложений - это не веб-фреймворки или языки, а ваша архитектура. Речь идет о том, как вы обрабатываете кэш браузера, кэш базы данных, как вы используете нестандартные поставщики сохраняемости (например,CouchDB), как настроена ваша база данных и многое другое...


самый большой сайт django, который я знаю, это Vawingtona Пост, что, безусловно, указывает на то, что это can шкала хорошо.

хорошие проектные решения, вероятно, оказывают большее влияние на производительность, чем что-либо еще. Twitter часто упоминается как сайт, который воплощает проблемы с производительностью с другой динамической интерпретируемой языковой веб-структурой, Ruby on Rails - тем не менее инженеры Twitter заявили, что структура не является такой же проблемой, как некоторые из выбор дизайна базы данных они сделали на ранней стадии.

Django очень хорошо работает с memcached и предоставляет некоторые классы для управления кэшем, где вы решите большинство проблем с производительностью. То, что вы доставляете по проводам, почти важнее, чем ваш бэкэнд в реальности - использование такого инструмента, как yslow, имеет решающее значение для высокопроизводительного веб-приложения. Вы всегда можете бросить больше оборудования на свой бэкэнд, но вы не можете изменить пропускную способность пользователей.


Я был на конференции EuroDjangoCon на прошлой неделе, и это было предметом нескольких переговоров - в том числе от основателей того, что было крупнейшим сайтом Django, Pownce (слайды из одного разговора здесь). Основное сообщение заключается в том, что вам нужно беспокоиться не о Django, а о правильном кэшировании, балансировке нагрузки, оптимизации базы данных и т. д.

Django на самом деле имеет крючки для большинства из этих вещей - кэширование, в частности, очень легко.


Я уверен, что вы ищете более твердый ответ, но самая очевидная объективная проверка, о которой я могу думать, заключается в том, что Google толкает Django для использования с его App Engine основы. Если кто-то знает и занимается масштабируемостью на регулярной основе, это Google. Из того, что я прочитал, самым ограничивающим фактором, похоже, является база данных back-end, поэтому Google использует свои собственные...


Я думаю, что мы могли бы также добавить приложение Apple года на 2011 год,Instagram, в список, который интенсивно использует django.


сегодня мы используем много веб-приложений и сайтов для наших нужд. Большинство из них очень полезны. Я покажу вам некоторые из них, используемые python или django.

Vawingtona Пост

веб-сайт Washington Post является чрезвычайно популярным источником новостей в интернете, чтобы сопровождать свою ежедневную газету. Его " огромное количество просмотров и трафика могут быть легко обработаны веб-фреймворком Django. Washington Post - 52.2 million unique visitors (March, 2015)

НАСА

Национальная аэронавтика и Официальный сайт космического управления-это место, где можно найти новости, фотографии и видео об их текущих космических исследованиях. Этот сайт Django может легко обрабатывать огромное количество просмотров и трафика. 2 million visitors monthly

Страж

The Guardian-британский новостной и медиа-сайт, принадлежащий Guardian Media Group. В нем содержится почти все содержание газет The Guardian и The Observer. Эти огромные данные обрабатываются Джанго. The Guardian (commenting system) - 41,6 million unique visitors (October, 2014)

YouTube

мы все знаем YouTube как место для загрузки кошачьих видео и терпит неудачу. Как один из самых популярных сайтов в мире, он дает нам бесконечные часы развлечений. Язык программирования Python питает его и функции, которые мы любим.

в Dropbox

DropBox начал онлайн-революцию хранения документов, которая стала частью повседневной жизни. Теперь мы храним почти все на облаках. Dropbox позволяет нам хранить, синхронизировать и делиться почти всем, используя силу Python.

Обследование Обезьяна

Survey Monkey является крупнейшей компанией онлайн-опроса. Они могут обрабатывать более миллиона ответов каждый день на своем переписанном веб-сайте Python.

очередную статью

Quora-это место номер один в интернете, чтобы задать вопрос и получить ответы от сообщества людей. На их веб-сайте Python соответствующие результаты отвечают, редактируются и организуются этими членами сообщества.

Bitly

большинство кода для Bitly URL shortening services и analytics все построены с Python. Их служба может обрабатывать сотни миллионов событий в день.

Reddit

Reddit известен как первая страница в интернете. Это место онлайн, чтобы найти информацию или развлечения, основанные на тысячах разные категории. Сообщения и ссылки генерируются пользователем и продвигаются к вершине через голоса. Многие из возможностей Reddit полагаются на Python для их функциональности.

Hipmunk

Hipmunk - это онлайн-туристический сайт, который сравнивает лучшие туристические сайты, чтобы найти вам лучшие предложения. Инструменты этого веб-сайта Python позволяют найти самые дешевые отели и рейсы для вашего назначения.

Кликните здесь для получения дополнительной: 25-из-самых популярных-python-и-django-сайтов, что-некоторые-известные-сайты-running-on-Django


да, может. Это может быть Django с Python или Ruby на рельсах. Он все равно будет масштабироваться.

существует несколько различных методов. Во-первых, кэширование не масштабируется. Вы можете иметь несколько серверов приложений, сбалансированных с nginx в качестве фронта в дополнение к аппаратным балансировщикам. Для масштабирования на стороне базы данных вы можете пойти довольно далеко с read slave в MySQL / PostgreSQL, если вы идете по пути RDBMS.

некоторые хорошие примеры сайтов с интенсивным трафиком в Django могут быть:

  • Pownce когда они еще были там.
  • Discus (общий менеджер общих комментариев)
  • все газеты, связанные веб-сайты: Washington Post и другие.

вы можете чувствовать себя в безопасности.


Как указано в высокой производительности Книга Джанго и пройти через это Кэл Хендерсон

увидеть более подробную информацию, как указано ниже:

Это не редкость слышать, как люди говорят "Django не шкалы". В зависимости от того, как вы смотрите на это утверждение полностью верно или недостоверной. Джанго сам по себе не масштабируется.

то же самое можно сказать о Ruby on Rails, Flask, PHP или любом другом языке, используемом динамический веб-сайт, управляемый базой данных.

хорошей новостью, однако, является то, что Django прекрасно взаимодействует с набором кэширования и инструменты балансировки нагрузки, которые позволят масштабировать трафик до максимально возможного уровня.

вопреки тому, что вы, возможно, читали онлайн, это можно сделать без замены основных компонентов, часто помеченных как "слишком медленные", таких как база данных ORM или слой шаблона.

Disqus обслуживает более 8 миллиардов просмотров страниц в месяц. Это какие-то огромные цифры.

эти команды доказали, что Django, безусловно, масштабируется. Наш опыт в Lincoln Loop подтверждает это.

мы построили большие сайты Django, способные провести день на главной странице Reddit, не потея.

истории успеха масштабирования Django почти слишком многочисленны, чтобы перечислить на данный момент.

Он поддерживает Disqus, Instagram и Pinterest. Хочешь еще доказательств? Instagram смог поддержать более 30 миллионов пользователей на Django только с 3 инженерами (2 из которых не имели back-end development


вот список некоторых относительно громких вещей, построенных в Django:

  1. Хранителя "исследуйте расходы вашего депутата " app

  2. Politifact.com (вот блоге говоря о (положительном) опыте. Сайт получил Пулитцеровскую.

  3. NY Times'представляют app

  4. EveryBlock

  5. Петр Харкинс, один из программистов WaPo,перечисляет все вещи, которые они построили с Django в своем блоге

  6. Это немного старый, но кто-то из LA Times дал общий обзор почему они пошли с Джанго.

  7. AV-клуб Onion недавно был перемещен из (Я думаю, Drupal) в Django.

Я думаю, что некоторые из этих сайтов, вероятно, получает более 100k + хитов в день. Django, безусловно, может сделать 100k хитов/день и многое другое. Но YMMV в получении вашего конкретного сайта, там в зависимости от того, что вы строите.

есть параметры кэширования на уровне Django (например, кэширование запросов и представлений в memcached может творить чудеса) и за его пределами (в обоих кэшей как кальмаров). Спецификации сервера баз данных также будут фактором (и обычно местом для расточительства), а также насколько хорошо вы его настроили. Не предполагайте, например, что Джанго собирается правильно настроить индексы. Не предполагайте, что по умолчанию PostgreSQL или в MySQL конфигурация является правильным.

кроме того, у вас всегда есть возможность иметь несколько серверов приложений под управлением Django, если это медленная точка, с программным или аппаратным балансировщиком нагрузки впереди.

наконец, вы обслуживаете статический контент на том же сервере, что и Django? Вы используете Apache или что-то вроде nginx и или lighttpd? Можете ли вы позволить себе использовать CDN для статического контента? Об этом стоит подумать, но все это очень умозрительно. 100к хитов в сутки-это не единственная переменная: сколько вы хотите потратить? Сколько у вас опыта в управлении всеми этими компонентами? Сколько у тебя времени, чтобы собрать все воедино?


разработчик адвокат для YouTube дал поговорим о масштабировании Python на PyCon 2012, что также относится к масштабированию Django.

YouTube имеет больше, чем миллиарда пользователей, а YouTube построен на Python.


обратите внимание, что если вы ожидаете 100K пользователей в день, которые активны в течение нескольких часов (то есть максимум 20k+ одновременных пользователей), вам понадобится много серверов. Так имеет ~15,000 зарегистрированных пользователей, и большинство из них, вероятно, не активны ежедневно. Хотя основная часть трафика поступает от незарегистрированных пользователей, я предполагаю, что очень немногие из них остаются на сайте более чем на пару минут (т. е. они следуют результатам поиска google, а затем уходят).

для этого тома, ожидайте по крайней мере 30 серверов ... который по-прежнему является довольно тяжелым 1000 одновременных пользователей на сервер.


другой пример rasp.yandex.ru, Русская служба расписания транспорта. Своя посещаемость удовлетворяет ваши требования.


Я использую Django уже более года и очень впечатлен тем, как ему удается сочетать модульность, масштабируемость и скорость разработки. Как и в любой технологии, она имеет кривую обучения. Однако эта кривая обучения стала намного менее крутой благодаря отличной документации от сообщества Django. Джанго был в состоянии справиться со всем, что я бросил на него очень хорошо. Похоже, что он сможет хорошо масштабироваться в будущем.

BidRodeo Пенни Аукционы является веб-сайт среднего размера Django питание. Это очень динамичный сайт и обрабатывает большое количество просмотров страниц в день.


Если у вас есть сайт со статическим контентом, то поставьте лак сервер спереди значительно увеличит вашу производительность. Даже одна коробка может легко выплюнуть 100 Мбит / с трафика.

обратите внимание, что с динамическим контентом, используя что-то вроде лака становится намного сложнее.


какой" самый большой " сайт, который построен на Django сегодня? (Я измеряю размер в основном пользовательским трафиком) Pinterest
disqus.com
Подробнее здесь https://www.shuup.com/en/blog/25-of-the-most-popular-python-and-django-websites/

может ли Django иметь дело с 100 000 пользователей ежедневно, каждый посещает сайт в течение нескольких часов?
Да, но используйте правильную архитектуру, дизайн базы данных, использование кэша, использование баланс нагрузки и несколько серверов / кивает

может ли сайт, такой как переполнение стека, работать на Django?
Да, просто нужно следовать ответу, упомянутому во 2-м вопросе


мой опыт работы с Django минимален, но я помню, что в книге Django у них есть глава, где они берут интервью у людей, работающих с некоторыми из больших приложений Django. вот ссылка. Я думаю, это может дать некоторые идеи.

там написано curse.com является одним из крупнейших приложений Django с около 60-90 миллионов просмотров страниц в месяц.


даже несмотря на то, что здесь было много отличных ответов, я просто хочу указать, что никто не сделал акцент..

зависит от приложения

Если вы приложение свет на записи, как в Вы читаете гораздо больше данных из БД, чем вы пишете. Тогда масштабирование django должно быть довольно тривиальным, черт возьми, оно поставляется с довольно приличным кэшированием вывода/представления прямо из коробки. Используйте это и, скажем, redis в качестве кэша провайдер, поставьте перед ним балансировщик нагрузки, раскрутите N-экземпляры и вы сможете иметь дело с очень большим количеством трафика.

теперь, если вам нужно сделать тысячи сложных записей в секунду? Другая история. Будет ли Django плохим выбором? Ну, не обязательно, зависит от того, как вы действительно создаете свое решение, а также, каковы ваши требования.

просто мои два цента :-)


вы можете определенно запустить сайт с высоким трафиком в Django. Проверьте это pre-Django 1.0, но все еще актуальное сообщение здесь:http://menendez.com/blog/launching-high-performance-django-site/


проверьте этот микро агрегатор новостей под названием EveryBlock.

это полностью написано в Django. На самом деле это люди, которые разработали саму структуру Django.


Я разрабатываю сайты с высоким трафиком, используя Django для национального вещателя в Ирландии. Это хорошо работает для нас. Разработка высокопроизводительного сайта-это больше, чем просто выбор фреймворка. Фреймворк будет только одной частью системы, которая так же сильна, как и самое слабое звено. Использование последней платформы " X " не решит ваши проблемы с производительностью, если проблема заключается в медленных запросах базы данных или плохо настроенном сервере или сети.


Я не думаю, что проблема действительно в масштабировании Django.

Я действительно предлагаю вам заглянуть в свою архитектуру, это то, что поможет вам с масштабированием потребностей.Если вы ошибаетесь, нет смысла говорить о том, насколько хорошо работает Django. Представление != Масштаб. Вы можете иметь систему, которая имеет удивительную производительность, но не масштабируется и наоборот.

привязана ли ваша база данных приложений? Если это так, то ваши проблемы с масштабом также лежат там. Как вы планируете взаимодействие с базой данных с Django? Что происходит, когда база данных не может обрабатывать запросы так быстро, как Джанго принимает их? Что происходит, когда ваши данные перерастают одну физическую машину. Вам нужно объяснить, как вы планируете справляться с этими обстоятельствами.

кроме того, что происходит, когда ваш трафик вырастает один сервер приложений? как вы обрабатываете сеансы в этом случае, может быть сложно, чаще всего вам, вероятно, потребуется общая архитектура nothing. Опять же это зависит от вашего приложение.

в коротких языках не то, что определяет масштаб, язык отвечает за производительность (опять же, в зависимости от ваших приложений разные языки работают по-разному). Именно ваш дизайн и архитектура делают масштабирование реальностью.

Я надеюсь, что это поможет, был бы рад помочь дальше, если у вас есть вопросы.


Если вы хотите использовать с открытым исходным кодом, то есть много вариантов для вас. Но python лучше всего среди них имеет много библиотек и супер удивительное сообщество. Вот причины, которые могут изменить Ваше мнение:

  • Python очень хорош, но это интерпретируемый язык, который делает его медленным. Но есть много сервисов ускорителя и кэширования, которые частично решают эту проблему.

  • Если вы думаете о быстром развитии, то Ruby on Rails лучше всех. Основной девиз этой (ROR) структуры-дать разработчикам комфортный опыт. Если вы сравните Ruby и Python, оба имеют почти одинаковые синтаксисы.

  • Google App Engine-очень хороший сервис, но он свяжет вас в своем объеме, у вас не будет возможности экспериментировать с новыми вещами. Вместо него вы можете использовать Цифровой Океан облако, которое будет только забрать 5$/месяц поручите для своей самой простой капельки. здесь еще одна бесплатная услуга, где вы можете развернуть свой продукт.

  • да! Да! Что вы слышали совершенно правильно, но вот некоторые примеры, которые используют другие технологии

    • Rails: Github, Twitter(ранее), Shopify, Airbnb, Slideshare, Heroku и т. д.
    • PHP: Facebook, Википедия, Flickr, Yahoo, Tumbler, Mailchimp и т. д.

заключение-это фреймворк, или язык не сделает все за вас. Ля Лучшая архитектура, проектирование и стратегия даст вам масштабируемый веб-сайт. Instagram-самый большой пример, эта небольшая команда управляет такими огромными данными. Вот один блог о его архитектуре должны прочитать его.


равномерно распределяя задачи, короче говоря, оптимизируя каждый аспект, включая DBs, файлы, изображения, CSS и т. д. и балансировка нагрузки с несколькими другими ресурсами необходима, как только ваш сайт / приложение начнет расти. Или вы создаете больше пространства для его роста. Внедрение новейших технологий, таких как CDN, Cloud, необходимо с огромными сайтами. Просто разработка и настройка приложения не даст вам удовлетворения процентов, другие компоненты также играют важную роль.


проблема в том, чтобы не знать, может ли django масштабироваться или нет.

правильный способ-понять и знать, какие шаблоны и инструменты сетевого дизайна нужно поместить под проект django/symfony/rails для масштабирования.

некоторые идеи могут быть :

  • мультиплексирования.
  • обратные прокси. Пример: Nginx, Лак
  • Сеанс Memcache. Экс : Рэдис
  • кластеризация на вашем проекте и db для балансировки нагрузки и неисправности допуск: Ex: Docker
  • используйте третью сторону для хранения активов. Пример: Amazon S3

надеюсь, что это поможет. Это мой маленький камень в гору.