Шкала Django?

Я создаю веб-приложение с Django. Причины, по которым я выбрал Django, были следующими:

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

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

Мои вопросы:

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

Ответ 1

  • "Каковы крупнейшие сайты, построенные на Django сегодня?"

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

  • "Может ли Django обрабатывать 100 000 пользователей ежедневно, каждый посетив сайт в течение нескольких часов?"

    Да, см. выше.

  • "Может ли такой сайт, как Stack Overflow, запускаться на Django?"

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

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


Сообщение в блоге о Использование Django для создания сайта с высоким трафиком michaelmoore.com описано как топ-10 000 сайтов. Статистика Quantcast и статистика compete.com.


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

Ответ 2

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

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

Мы все находимся в одной виртуальной машине на 64-разрядной Dell с (я думаю) 32 ГБ оперативной памяти.

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

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

Ответ 3

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

Screencast о том, как развернуть django с масштабированием в памяти http://ontwik.com/python/django-deployment-workshop-by-jacob-kaplan-moss/

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

Ответ 4

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

В США Mahalo. Мне говорят, что они обрабатывают примерно 10 миллионов уникальных предметов в месяц.

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

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

Может ли Django ежедневно обрабатывать 100 тыс. пользователей, каждый из которых посещает сайт в течение нескольких часов?

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

Может ли такой сайт, как StackOverflow, запускаться на Django?

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

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

Ответ 5

Играя дьявола, немного помогайте:

Вы должны проверить DjangoCon 2008 Keynote, поставленный Cal Henderson, озаглавленный "Почему я ненавижу Django", где он в значительной степени обошел все, что Django не хватает, что вы можете захотеть сделать на сайте с высоким трафиком. В конце концов вы должны принять это все с открытым умом, потому что вполне возможно писать приложения Django, которые масштабируются, но я думал, что это хорошая презентация и релевантная вашему вопросу.

Ответ 6

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

Не беспокойтесь...

Ответ 7

Самый большой сайт django, о котором я знаю, - это Washington Post, который, несомненно, укажет, что он может масштабироваться хорошо.

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

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

Ответ 8

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

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

Ответ 9

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

Ответ 11

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

Ответ 13

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

Washington Post

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

NASA

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

The Guardian

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

YouTube

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

DropBox

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

Обезьяна обзора

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

Quora

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

Bitly

Большая часть кода для служб и аналитики по сокращению битового URL-адреса построена с помощью Python. Их служба может обрабатывать сотни миллионов событий в день.

Reddit

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

Hipmunk

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

Нажмите здесь для получения дополнительной информации: 25-of-the-most-popular-python-and-django-websites, What-are-some-well-known-sites-running-on-Django

Ответ 14

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

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

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

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

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

Ответ 15

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

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

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

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

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

Ответ 17

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

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

Ответ 18

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

Ответ 19

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

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

Ответ 20

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

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

Ответ 21

Как указано в высокопроизводительной книге Django введите описание ссылки здесь  и пройдите через Cal Henderson

Подробнее см. ниже:

Его не редкость слышать, как люди говорят: "Django does not scale". В зависимости от того, как вы смотрите на это, утверждение либо полностью верно, либо явно ложно. Django сам по себе не масштабируется.

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

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

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

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

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

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

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

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

Ответ 22

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

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

Ответ 23

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

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

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

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

Только мои два цента: -)

Ответ 25

Посмотрите на этот агрегатор микро новостей, который называется EveryBlock.

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

Ответ 26

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

Ответ 27

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

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

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

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

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

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

Ответ 28

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

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

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

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

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

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

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

Ответ 29

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

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

Может ли такой сайт, как Stack Overflow, запускаться на Django?
Да, просто нужно следить за ответом, упомянутым во втором вопросе.

Ответ 30

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