it-swarm.com.ru

Django масштабируется?

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

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

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

Мои вопросы:

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

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

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

    Да, смотри выше.

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

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

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


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


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

849
Van Gale

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

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

Мы все в одном VM на 64-битной Dell с (я думаю) 32 ГБ ОЗУ.

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

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

254
S.Lott

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

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

169
Neil

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

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

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

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

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

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

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

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

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

99
jacobian

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

81
razenha

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

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

78
Paolo Bergantino

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

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

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

51
Bayard Randel

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

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

31
Daniel Roseman

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

24
jess

Как указано в High Performance Django Book и пройти через это Cal Henderson

Смотрите дальнейшие детали, как указано ниже:

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

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

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

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

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

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

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

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

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

17
Mushahid Khan

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

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. Эти огромные данные обрабатываются 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

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

Редит

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

Hipmunk

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

Нажмите здесь для получения дополнительной информации: 25 самых популярных сайтов с python-and-Django-сайтами , Какие-то известные сайты работают на Джанго

17
Simplans

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

15
Milind

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

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

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

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

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

11
coulix

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

  1. Приложение Guardian " Расследовать расходы вашего члена парламента "

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

  3. NY Times ' представляют приложение

  4. Everyblock

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

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

  7. АВ Клуб Луков был недавно перемещен из (я думаю, Drupal) в Django.

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

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

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

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

9
mazelife

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

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

8
orokusaki

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

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

7
Krystian Cybulski

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

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

6
Beep beep

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

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

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

5
Ranju R

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

5
Glader

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

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

5
Anders Rune Jensen

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

5
redsnapper

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

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

5
tomeedee

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

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

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

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

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

4
JustDanyul

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

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

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

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

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

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

3
Anand Davis

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

Это полностью написано на Джанго. Фактически это люди, которые разработали саму платформу Django.

3
siddu

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

3
Ed Menendez

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

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

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

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

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

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

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

3
pulkit

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

Правильный путь - это понять и узнать, какие шаблоны проектирования сети и инструменты использовать в проекте Django/symfony/Rails для хорошего масштабирования.

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

  • Мультиплексирование.
  • Обратный прокси. Пример: Nginx, Лак
  • Memcache Session. Пример: Redis
  • Кластеризация вашего проекта и базы данных для балансировки нагрузки и отказоустойчивости: Пример: Docker
  • Используйте третье лицо для хранения активов. Пример: Amazon S3

Надеюсь, это поможет немного. Это моя крошечная скала на гору.

2
gmourier

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

2
Ashwin