Я создаю веб-приложение с Django. Причины, по которым я выбрал Django:
- Я хотел работать с бесплатными / открытыми инструментами.
- Я люблю Python и чувствую, что это долгосрочный язык, тогда как в отношении Ruby я не был уверен, и PHP выглядел как огромная проблема для изучения.
- Я создаю прототип для идеи и не слишком много думаю о будущем. Скорость разработки была основным фактором, и я уже знал Python.
- Я знал, что переход на Google App Engine будет проще, если я решу сделать это в будущем.
- Я слышал, Джанго был "хорош".
Теперь, когда я все больше думаю о публикации своей работы, я начинаю беспокоиться о масштабе. Единственная информация, которую я нашел о возможностях масштабирования Django, предоставлена командой Django (я не говорю ничего, чтобы игнорировать их, но это явно не объективная информация ...).
Мои вопросы:
- Какой самый большой сайт сегодня построен на Джанго? (Я измеряю размер в основном по пользовательскому трафику)
- Может ли Django иметь дело со 100 000 пользователей ежедневно , каждый из которых посещает сайт в течение нескольких часов?
- Может ли сайт наподобие Stack Overflow работать на Django?
python
django
web-applications
scalability
Роуи Адлер
источник
источник
what's the cost of scaling in the Django?
Ответы:
«Какие самые большие объекты построены сегодня на Джанго?»
Нет ни одного места, где бы собиралась информация о трафике на сайтах, созданных в Django, поэтому мне придется попробовать его, используя данные из разных мест. Во-первых, у нас есть список сайтов Django на главной странице главной страницы проекта Django, а затем список сайтов, созданных Django, на djangosites.org . Просматривая списки и выбирая те, которые, я знаю, имеют приличный трафик, который мы видим:
Instagram : что дает Instagram: сотни экземпляров, десятки технологий .
Pinterest : Alexa рейтинг 37 (21.4.2015) и 70 миллионов пользователей в 2013 году
Bitbucket : 200 ТБ кода и 2.500.000 пользователей
Disqus : обслуживание 400 миллионов человек с Python .
curse.com : 600 000 ежедневных посещений .
tabblo.com : 44 тыс. ежедневных посещений , см. посты Неда Батчелдера Инфраструктура для современных веб-сайтов .
chesspark.com : Alexa занимает около 179 тыс.
pownce.com (больше не активен): Алекса ранг около 65к. Майк Мэлоун из Pownce в своей презентации EuroDjangoCon о масштабировании Django Web Apps говорит, что «сотни обращений в секунду». Это очень хорошая презентация о том, как масштабировать Django, и дает некоторые хорошие замечания, включая (текущие) недостатки в масштабируемости Django.
У HP был сайт, созданный с использованием Django 1.5: центр ePrint . Однако, что касается novemer / 2015, весь веб-сайт был перенесен, и эта ссылка является лишь перенаправлением. Этот веб-сайт представлял собой всемирную службу подписки на Instant Ink и сопутствующие услуги, предлагаемые HP (*).
«Может ли Django иметь дело со 100 000 пользователей ежедневно, каждый из которых посещает сайт в течение нескольких часов?»
Да, смотри выше.
"Может ли такой сайт, как Stack Overflow работать на Django?"
Я чувствую себя хорошо, но, как говорили другие, и Майк Малон упоминает в своей презентации, дизайн базы данных имеет решающее значение. Сильные доказательства можно также найти на www.cnprog.com, если мы сможем найти надежную статистику трафика. Во всяком случае, это не просто то, что произойдет, если собрать воедино кучу моделей Django :)
Есть, конечно, еще много сайтов и интересных блоггеров, но я должен где-то остановиться!
Сообщение в блоге об использовании Django для создания сайта с высоким трафиком michaelmoore.com, описанного как топ-10000 сайтов . Quantcast Статистика и compete.com статистика .
(*) Автор редактирования, включая такую ссылку, раньше работал сторонним разработчиком в этом проекте.
источник
Сейчас мы проводим нагрузочное тестирование. Мы считаем, что мы можем поддерживать 240 одновременных запросов (устойчивая скорость 120 обращений в секунду 24x7) без какого-либо существенного снижения производительности сервера. Это было бы 432 000 хитов в час. Время отклика невелико (наши транзакции велики), но при увеличении нагрузки нет снижения нашей базовой производительности.
Мы используем Apache Django и MySQL. ОС Red Hat Enterprise Linux (RHEL). 64-битный. Мы используем mod_wsgi в режиме демона для Django. Мы не занимались оптимизацией кэша или базы данных, кроме как принять значения по умолчанию.
Мы все в одной виртуальной машине на 64-битной Dell с (я думаю) 32 ГБ ОЗУ.
Поскольку производительность для 20 или 200 одновременно работающих пользователей практически одинакова, нам не нужно тратить огромное количество времени на «подстройку». Вместо этого нам просто нужно поддерживать нашу базовую производительность за счет обычных улучшений производительности SSL, обычного проектирования и реализации базы данных (индексация и т. Д.), Обычных улучшений производительности брандмауэра и т. Д.
Что мы измеряем, так это наши ноутбуки с нагрузочным тестом, испытывающие трудности при безумной рабочей нагрузке 15 процессов, выполняющих 16 параллельных потоков запросов.
источник
Не уверен насчет количества ежедневных посещений, но вот несколько примеров крупных сайтов Django:
Вот ссылка на список сайтов с высоким трафиком Django на Quora .
источник
В США это был Махало . Мне сказали, что они обрабатывают около 10 миллионов уникальных в месяц. Теперь, в 2019 году, Mahalo работает на Ruby on Rails.
За рубежом, сеть Globo (сеть новостных, спортивных и развлекательных сайтов в Бразилии); Alexa оценивает их в топ-100 по всему миру (в настоящее время около 80-го).
Другими известными пользователями Django являются PBS, National Geographic, Discovery, NASA (на самом деле ряд различных подразделений внутри NASA) и Библиотека Конгресса.
Да, но только если вы правильно написали свое приложение и если у вас достаточно оборудования. Джанго не волшебная пуля.
Да (но смотри выше).
Технологически легко: посмотрите на soclone за одну попытку. С точки зрения трафика, конкурирующие колышки StackOverflow менее 1 миллиона уникальных в месяц. Я могу назвать как минимум дюжину сайтов Django с большим трафиком, чем SO.
источник
Масштабирование веб-приложений - это не веб-фреймворки или языки, а ваша архитектура. Речь идет о том, как вы обрабатываете кеш браузера, кеш базы данных, как вы используете нестандартные поставщики персистентности (например, CouchDB ), как настроена ваша база данных и многое другое ...
источник
Немного играя адвоката дьявола:
Вам следует проверить выступление DjangoCon 2008 , предоставленное Кэлом Хендерсоном под названием «Почему я ненавижу Django», где он в значительной степени рассматривает все, чего не хватает Django, что вы, возможно, захотите сделать на веб-сайте с высоким трафиком. В конце дня вы должны принять все это с открытым сердцем , потому что это вполне возможно , чтобы написать Django приложений , что масштаб, но я думал , что это была хорошая презентация и отношение к вашему вопросу.
источник
Самый крупный сайт, посвященный джанго, о котором я знаю, - это « Вашингтон пост» , который, несомненно, будет указывать, что он может хорошо масштабироваться.
Хорошие дизайнерские решения, вероятно, оказывают большее влияние на производительность, чем что-либо еще. Twitter часто называют сайтом, который воплощает проблемы с производительностью в другой динамически интерпретируемой языковой веб-инфраструктуре, Ruby on Rails, однако инженеры Twitter заявляют, что эта среда не такая большая проблема, как некоторые из вариантов дизайна базы данных, которые они сделали на раннем этапе на.
Django очень хорошо работает с memcached и предоставляет некоторые классы для управления кешем, где вы сможете решить большинство проблем с производительностью. То, что вы поставляете по проводам, в реальности почти важнее, чем ваш бэкэнд - использование такого инструмента, как yslow, очень важно для высокопроизводительного веб-приложения. Вы всегда можете добавить больше оборудования на свой сервер, но вы не можете изменить пропускную способность своих пользователей.
источник
Я был на конференции EuroDjangoCon на прошлой неделе, и это было темой пары переговоров - в том числе от основателей крупнейшего сайта на основе Django, Pownce (слайды из одного выступления здесь ). Главное, что вам нужно беспокоиться не о Django, а о правильном кэшировании, балансировке нагрузки, оптимизации базы данных и т. Д.
Django на самом деле имеет хуки для большинства из этих вещей - кеширование, в частности, сделано очень легко.
источник
Я уверен, что вы ищете более надежный ответ, но самая очевидная объективная проверка, о которой я могу подумать, заключается в том, что Google подталкивает Django к использованию со своей платформой App Engine . Если кто-то знает о масштабируемости и занимается ею на регулярной основе, это Google. Из того, что я прочитал, наиболее ограничивающим фактором, по-видимому, является серверная часть базы данных, поэтому Google использует свои собственные ...
источник
Как указано в книге « High Performance Django Book и пройти через этого Кэла Хендерсона»
Смотрите дальнейшие детали, как указано ниже:
Нередко можно услышать, как люди говорят: «Джанго не масштабируется» . В зависимости от того, как вы на это смотрите, утверждение либо полностью верно, либо явно ложно. Джанго, само по себе, не масштабируется.
То же самое можно сказать о Ruby on Rails, Flask, PHP или любом другом языке, используемом динамическим веб-сайтом, управляемым базой данных.
Хорошая новость заключается в том, что Django прекрасно взаимодействует с набором инструментов для кэширования и балансировки нагрузки, которые позволят ему масштабировать столько трафика, сколько вы можете использовать.
Вопреки тому, что вы, возможно, читали в Интернете, это можно сделать без замены основных компонентов, часто помеченных как «слишком медленные», таких как база данных ORM или слой шаблонов.
Disqus обслуживает более 8 миллиардов просмотров страниц в месяц. Это огромные цифры.
Эти команды доказали, что Джанго, безусловно, масштабируется. Наш опыт в Lincoln Loop подтверждает это.
Мы создали большие сайты Django, способные провести день на домашней странице Reddit, не потревожившись.
Масштабные истории успеха Джанго почти слишком многочисленны, чтобы перечислять их на данный момент.
Он поддерживает Disqus, Instagram и Pinterest. Хотите еще доказательств? Instagram смог поддержать более 30 миллионов пользователей в Django с помощью только 3 инженеров (2 из которых не имели серверной разработки)
источник
Сегодня мы используем много веб-приложений и сайтов для наших нужд. Большинство из них очень полезны. Я покажу вам некоторые из них, используемые Python или Django.
Вашингтон Пост
Сайт «Вашингтон Пост» - чрезвычайно популярный источник новостей в Интернете, сопровождающий их ежедневные газеты. Огромное количество просмотров и трафика легко обрабатывается веб-фреймворком 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 известен как главная страница интернета. Это место в Интернете для поиска информации или развлечений на основе тысяч различных категорий. Посты и ссылки создаются пользователями и продвигаются наверх посредством голосов. Многие из возможностей Reddit полагаются на Python для их функциональности.
Hipmunk
Hipmunk - это онлайн-сайт для путешественников, который сравнивает лучшие туристические сайты, чтобы найти для вас лучшие предложения. Инструменты этого сайта Python позволяют вам найти самые дешевые отели и рейсы для вашего пункта назначения.
Нажмите здесь, чтобы узнать больше: 25 самых популярных сайтов с python-and-django , What-are-some-are-теле-сайты-работающие на Django
источник
Я думаю, что мы могли бы также добавить приложение Apple от 2011 года, Instagram , в список, который интенсивно использует django.
источник
Да, оно может. Это может быть Django с Python или Ruby on Rails. Это все еще будет масштабироваться.
Есть несколько разных техник. Во-первых, кеширование не масштабируется. У вас может быть несколько серверов приложений, сбалансированных с помощью nginx, в дополнение к аппаратным балансировщикам. Для масштабирования на стороне базы данных вы можете пойти довольно далеко с read slave в MySQL / PostgreSQL, если вы пойдете по пути RDBMS.
Вот некоторые хорошие примеры сайтов с интенсивным трафиком в Django:
Вы можете чувствовать себя в безопасности.
источник
Вот список некоторых относительно громких вещей, построенных в Django:
Приложение Guardian " Расследуй расходы своего депутата "
Politifact.com (вот сообщение в блоге, рассказывающее о (положительном) опыте. Сайт получил Пулитцеровскую премию.
Нью - Йорк Таймс Представляют приложение
Everyblock
Питер Харкинс, один из программистов в WaPo, перечисляет все материалы, которые они создали с Django, в своем блоге
Он немного староват, но кто-то из LA Times дал общий обзор того, почему они пошли с Джанго.
АВ Клуб Луков был недавно перемещен из (я думаю, Drupal) в Джанго.
Я полагаю, что число этих сайтов, вероятно, получает более 100 000 посещений в день. Django, конечно, может делать 100 тысяч хитов в день и больше. Но у YMMV есть ваш конкретный сайт в зависимости от того, что вы создаете.
Существуют варианты кэширования на уровне Django (например, кэширование наборов запросов и представлений в memcached может творить чудеса) и за его пределами (восходящие кэши, такие как Squid ). Спецификации сервера базы данных также будут иметь значение (и, как правило, место, чтобы разориться), а также то, насколько хорошо вы их настроили. Не думайте, например, что Django собирается правильно настроить индексы. Не думайте, что по умолчанию PostgreSQL или MySQL конфигурация является правильной.
Кроме того, у вас всегда есть возможность иметь несколько серверов приложений под управлением Django, если это медленная точка, с программным или аппаратным балансировщиком нагрузки впереди.
Наконец, вы размещаете статический контент на том же сервере, что и Django? Используете ли вы Apache или что-то вроде nginx или lighttpd ? Можете ли вы позволить себе использовать CDN для статического контента? Об этом стоит подумать, но все это очень умозрительно. 100 000 посещений в день - не единственная переменная: сколько вы хотите потратить? Какой опыт у вас есть для управления всеми этими компонентами? Сколько времени у вас есть, чтобы собрать все это вместе?
источник
Сторонник разработчиков YouTube выступил с докладом о масштабировании Python на PyCon 2012 , который также имеет отношение к масштабированию Django.
У YouTube более миллиарда пользователей , а YouTube построен на Python.
источник
Я использую Django уже больше года и очень впечатлен тем, как ему удается сочетать модульность, масштабируемость и скорость разработки. Как и в случае с любой другой технологией, у нее есть кривая обучения. Тем не менее, эта кривая обучения стала намного менее крутой благодаря отличной документации сообщества Django. Джанго действительно хорошо справился со всем, что я в него бросил. Похоже, он сможет хорошо масштабироваться в будущем.
BidRodeo Penny Auctions - умеренный по размеру сайт на Django. Это очень динамичный веб-сайт, который обрабатывает большое количество просмотров страниц в день.
источник
Обратите внимание, что если вы ожидаете 100 тыс. Пользователей в день, которые активны в течение нескольких часов за раз (то есть максимум 20 тыс. + Одновременных пользователей), вам потребуется МНОГО серверов. У SO ~ 15 000 зарегистрированных пользователей, и большинство из них, вероятно, не активны ежедневно. Хотя основная часть трафика поступает от незарегистрированных пользователей, я предполагаю, что очень немногие из них остаются на сайте дольше пары минут (т.е. следуют за результатами поиска в Google, а затем уходят).
Для этого объема ожидайте, по крайней мере, 30 серверов ... что по-прежнему достаточно 1000 одновременных пользователей на сервер.
источник
Какой самый большой сайт сегодня построен на Джанго? (Я измеряю размер в основном по трафику пользователя) Pinterest
disqus.com
Подробнее здесь: https://www.shuup.com/ru/blog/25-of-the-most-popular-python-and-django-websites/
Может ли Django иметь дело со 100 000 пользователей ежедневно, каждый из которых посещает сайт в течение нескольких часов?
Да, но используйте правильную архитектуру, дизайн базы данных, использование кэша, используйте балансировки нагрузки и несколько серверов или узлов
Может ли сайт наподобие Stack Overflow работать на Django?
Да просто нужно следовать ответу, указанному во 2-м вопросе
источник
Другой пример - rasp.yandex.ru, российский сервис расписаний перевозок. Его посещаемость удовлетворяет вашим требованиям.
источник
Если у вас есть сайт со статическим контентом, то добавьте Varnish сервера впереди значительно повысит вашу производительность. Даже один блок может легко выплеснуть 100 Мбит / с трафика.
Обратите внимание, что с динамическим контентом использование чего-то вроде Varnish становится намного сложнее.
источник
Мой опыт работы с Django минимален, но я помню, что в Книге Django есть глава, где они берут интервью у людей, работающих с некоторыми из более крупных приложений Django. Вот ссылка. Я думаю, что это может дать некоторые идеи.
В нем говорится, что curse.com является одним из крупнейших приложений Django с 60-90 миллионами просмотров страниц в месяц.
источник
Я разрабатываю сайты с большим трафиком, используя Django для национального вещателя в Ирландии. Это хорошо работает для нас. Разработка высокопроизводительного сайта - это больше, чем просто выбор фреймворка. Фреймворк будет только одной частью системы, которая настолько же сильна, насколько это ее самое слабое звено. Использование последней платформы X не решит проблемы с производительностью, если проблема связана с медленными запросами к базе данных или плохо настроенным сервером или сетью.
источник
Несмотря на то, что здесь было много хороших ответов, я просто хочу указать, что никто не сделал упор на ...
Это зависит от приложения
Если ваше приложение работает с небольшими записями, то есть вы читаете намного больше данных из БД, чем пишете. Тогда масштабирование django должно быть довольно тривиальным, черт возьми, оно поставляется с довольно приличным кэшированием вывода / представления прямо из коробки. Воспользуйтесь этим, и, скажем, перенаправьте в качестве поставщика кеша, поставьте перед ним балансировщик нагрузки, раскрутите n-экземпляры, и вы сможете справиться с ОЧЕНЬ большим объемом трафика.
Теперь, если вам нужно сделать тысячи сложных записей в секунду? Другая история. Джанго будет плохим выбором? Ну, не обязательно, зависит от того, как вы действительно разрабатываете свое решение, а также от того, каковы ваши требования.
Просто мои два цента :-)
источник
Вы можете определенно запустить сайт с большим трафиком в Джанго. Проверьте этот предварительный Django 1.0, но все еще соответствующий пост здесь: http://menendez.com/blog/launching-high-performance-django-site/
источник
Проверьте этот микро агрегатор новостей под названием EveryBlock .
Это полностью написано на Джанго. На самом деле это люди, которые разработали саму структуру Django.
источник
Проблема не в том, может ли django масштабироваться или нет.
Правильный путь - это понять и узнать, какие шаблоны проектирования сети и инструменты использовать в проекте django / symfony / rails для хорошего масштабирования.
Некоторые идеи могут быть:
Надеюсь, это поможет немного. Это моя крошечная скала на гору.
источник
Если вы хотите использовать открытый исходный код, есть много вариантов для вас. Но Python - лучший среди них, так как у него много библиотек и супер классное сообщество. Вот несколько причин, которые могут изменить ваше мнение:
Python очень хорош, но это интерпретируемый язык, который делает его медленным. Но есть много служб ускорения и кэширования, которые частично решают эту проблему.
Если вы думаете о быстрой разработке, то Ruby on Rails является лучшим среди всех. Основной девиз этого (ROR) фреймворка заключается в том, чтобы предоставить разработчикам комфортный опыт. Если вы сравниваете Ruby и Python, оба имеют почти одинаковый синтаксис.
Google App Engine - это очень хороший сервис, но он будет связывать вас своими возможностями, у вас нет шансов экспериментировать с новыми вещами. Вместо этого вы можете использовать облако Digital Ocean, которое за простейшую капельку будет брать всего 5 долларов в месяц . Heroku - это еще один бесплатный сервис, где вы можете развернуть свой продукт.
Да! Да! То, что вы слышали, совершенно правильно, но вот несколько примеров, которые используют другие технологии
Заключение - это основа, или язык не сделает все за вас. Лучшая архитектура, дизайн и стратегия обеспечат вам масштабируемый веб-сайт. Instagram - самый большой пример, эта маленькая команда управляет такими огромными данными. Вот один блог о его архитектуре должен прочитать его.
источник
Я не думаю, что проблема действительно в масштабировании Django.
Я действительно предлагаю вам взглянуть на свою архитектуру, и это поможет вам с вашими потребностями в масштабировании. Если вы ошибаетесь, нет никакого смысла в том, насколько хорошо работает Django. Производительность! = Масштаб. У вас может быть система, которая имеет потрясающую производительность, но не масштабируется, и наоборот.
Связана ли база данных вашего приложения? Если это так, то ваши проблемы масштаба также лежат там. Как вы планируете взаимодействовать с базой данных от Django? Что происходит, когда ваша база данных не может обрабатывать запросы так быстро, как Django принимает их? Что происходит, когда ваши данные перерастают одну физическую машину. Вы должны учитывать, как вы планируете справляться с этими обстоятельствами.
Кроме того, что происходит, когда ваш трафик перерастает один сервер приложений? то, как вы обрабатываете сеансы в этом случае, может быть сложным, чаще всего вам, вероятно, потребуется архитектура без общего доступа. Опять же, это зависит от вашего приложения.
В коротких языках это не то, что определяет масштаб, язык отвечает за производительность (опять же, в зависимости от ваших приложений, разные языки работают по-разному). Ваш дизайн и архитектура делают масштабирование реальностью.
Надеюсь, это поможет, будем рады помочь, если у вас есть вопросы.
источник
Равномерное распределение задач, короче говоря, оптимизация каждого аспекта, включая БД, Файлы, Изображения, CSS и т. Д., И балансировка нагрузки с несколькими другими ресурсами необходима, когда ваш сайт / приложение начинает расти. ИЛИ вы делаете больше места для его роста. Внедрение новейших технологий, таких как CDN, Cloud обязательно с огромными сайтами. Простая разработка и настройка приложения не принесет вам процентов, остальные компоненты также играют важную роль.
источник