plt title python




Django是否縮放? (20)

今天在Django上建立的“最大”網站是什麼? (我主要測量用戶流量的大小)

在美國, Mahalo 。 我被告知他們每個月處理大約1000萬個獨特用戶。

國外, Globo網絡(巴西的新聞,體育和娛樂網站); Alexa將他們列入全球前100名(目前約80名)。

其他值得注意的Django用戶包括PBS,國家地理,發現,美國國家航空和宇宙航行局(NASA)(以及美國國家航空航天局內的許多不同部門)以及國會圖書館。

Django可以每天處理10萬個用戶,每個用戶訪問該網站幾個小時?

是的 - 但前提是你已經寫好了你的應用程序,並且你有足夠的硬件。 Django不是一個神奇的子彈。

像StackOverflow這樣的網站可以在Django上運行嗎?

是的(但參見上文)。

技術方面,很容易:看到soclone一次嘗試。 在流量方面,每個月少於100萬個唯一身份的參與者將StackOverflow競爭。 我可以命名至少有十幾個Django網站的流量比SO多。

我正在用Django構建一個Web應用程序。 我選擇Django的原因是:

  • 我想要使​​用免費/開源工具。
  • 我喜歡Python並且覺得這是一種“長期”語言,而關於Ruby我不確定,而PHP似乎是一個巨大的麻煩學習。
  • 我正在為一個想法建立一個原型,並沒有太多考慮未來。 開發速度是主要因素,我已經知道Python。
  • 我知道,如果我將來選擇這樣做,遷移到Google App Engine會更容易。
  • 我聽說Django“很好”。

現在我越來越考慮發布我的作品,我開始關注規模。 我發現的關於Django擴展能力的唯一信息是由Django團隊提供的(我沒有說任何無視它們的東西,但這顯然不是客觀的信息......)。

我的問題:

  • 今天在Django上建立的“最大”網站是什麼? (我主要測量用戶流量的大小)
  • Django能夠每天處理100,000個用戶,每個用戶訪問該網站幾個小時?
  • 像Stack Overflow這樣的站點可以在Django上運行嗎?

  1. “今天在Django上建立的最大網站是什麼?”

    沒有任何一個地方可以收集有關Django網站流量的信息,因此我不得不使用來自不同地點的數據刺探它。 首先,我們在主Django項目頁面的首頁上列出了Django站點列表,然後在djangosites.org列出了Django構建的站點列表。 瀏覽清單並選擇我所知道的一些流量,我們看到:

  2. “Django能夠每天處理100,000個用戶,每個用戶訪問該網站幾個小時?”

    是的,請參閱上文。

  3. “像這樣的站點能在Django上運行嗎?”

    我的直覺是肯定的,但是,正如其他人回答的那樣,Mike Malone在演講中提到,數據庫設計至關重要。 如果我們能夠找到任何可靠的流量統計數據,www.cnprog.com也可以找到有力的證據。 無論如何,這不僅僅是將一堆Django模型放在一起會發生的事情:)

當然,還有更多的網站和博客感興趣,但我必須停下來!

關於使用Django構建高流量網站michaelmoore.com的博客文章描述為排名前10000的網站Quantcast statscompete.com統計

(*)編輯的作者,包括此類引用,曾用作該項目的外包開發人員。


今天在Django上建立的“最大”網站是什麼? (我主要測量用戶流量的大小) Pinterest
disqus.com
更多https://www.shuup.com/en/blog/25-of-the-most-popular-python-and-django-websites/

Django能夠每天處理100,000個用戶,每個用戶訪問該網站幾個小時?
是的,但要使用適當的架構,數據庫設計,使用緩存,使用負載平衡和多個服務器/點

像這樣的站點可以在Django上運行嗎?
是的,只需要按照第二個問題中提到的答案



今天我們使用許多網絡應用和網站來滿足我們的需求。 他們中的大多數都非常有用。 我會告訴你一些python或django使用的。

華盛頓郵報

華盛頓郵報的網站是一個非常受歡迎的在線新聞來源,以配合他們的日報。 它的大量視圖和流量可以通過Django web框架輕鬆處理。 Washington Post - 52.2 million unique visitors (March, 2015)

NASA

美國國家航空航天局的官方網站是查找有關正在進行的太空探索的新聞,圖片和視頻的地方。 這個Django網站可以輕鬆處理大量的視圖和流量。 2 million visitors monthly

守護者

衛報是由衛報傳媒集團擁有的英國新聞和媒體網站。 它包含了衛報和觀察報的幾乎所有內容。 這個龐大的數據由Django處理。 The Guardian (commenting system) - 41,6 million unique visitors (October, 2014)

YouTube

我們都知道YouTube是上傳貓視頻的地方並且失敗。 作為現存最受歡迎的網站之一,它為我們提供了無盡的視頻娛樂時間。 Python編程語言支持它和我們所喜愛的功能。

DropBox

DropBox開始了已成為日常生活一部分的在線文件存儲革命。 我們現在幾乎將所有內容都存儲在雲中。 Dropbox允許我們使用Python的強大功能來存儲,同步和共享幾乎任何東西。

調查猴子

Survey Monkey是最大的在線調查公司。 他們每天可以在他們重新編寫的Python網站上處理超過100萬個響應。

Quora

Quora是在線提問並從個人社區接收答案的最佳地點。 在他們的Python網站上,相關結果由這些社區成員回答,編輯和組織。

Bitly

Bitly URL縮短服務和分析的大部分代碼都是用Python構建的。 他們的服務每天可以處理數以億計的事件。

Reddit

Reddit被稱為互聯網的首頁。 它是在線查找基於數千個不同類別的信息或娛樂的地方。 帖子和鏈接是用戶生成的,並通過投票提升到頂端。 Reddit的許多功能都依賴於Python的功能。

Hipmunk

Hipmunk是一個在線消費者旅遊網站,比較頂級旅遊網站,為您找到最優惠的價格。 這個Python網站的工具可以讓你找到最便宜的酒店和航班為您的目的地。

點擊此處查看更多內容: 25-of-the-most-popular-python-and-django-websitesWhat-are-some-well-known-sites-running-on-Django


以下是在Django中建立的一些比較引人注目的事情的列表:

  1. 監護人的“ 調查你的議員開支 ”應用程序

  2. Politifact.com(這裡是一篇關於(積極)體驗的博文,網站贏得了普利策獎。

  3. 紐約時報' Represent應用程序

  4. EveryBlock

  5. WaPo的程序員之一Peter Harkins在他的博客中列出了他們用Django創建的所有內容

  6. 這有點舊了,但是洛杉磯時報的一位人員給了他們為什麼和Django一起去的基本概述

  7. 洋蔥的AV俱樂部最近從(我認為Drupal)轉移到了Django。

我想這些網站的數量可能會超過每天10萬次以上。 Django當然可以每天點擊10萬次以上。 但YMMV根據你正在建造的東西來獲取你的特定網站。

在Django級別有緩存選項(例如緩存memcached和視圖可以創造奇蹟)和超越(像Squid這樣的上游緩存)。 數據庫服務器規範也將是一個因素(通常是揮霍的地方),以及你調整它的程度。 例如,不要假設Django會正確設置索引。 不要以為默認的PostgreSQLMySQL配置是正確的。

此外,如果這是一個慢點,並且前面有軟件或硬件負載平衡器,那麼您總是可以選擇讓多個應用程序服務器運行Django。

最後,你是否在與Django相同的服務器上提供靜態內容? 你使用的是Apache還是像nginxlighttpd類的東西? 你可以承擔使用CDN靜態內容? 這些都是需要思考的問題,但這都是非常具有推測性的。 每天10萬次點擊並不是唯一的變量:你想花多少錢? 你有多少專業知識管理所有這些組件? 你需要多少時間把它們放在一起?


儘管這裡有很多很好的答案,但我只想指出,沒有人會強調。

這取決於應用程序

如果你的應用程序在寫入時很輕鬆,就像你正在從數據庫中讀取比你寫的更多的數據。 然後縮放django應該是相當平凡的,嘿,它帶來了一些相當體面的輸出/視圖緩存直接開箱即用。 利用它,並說,redis是一個緩存提供者,在它前面放置一個負載均衡器,啟動n個實例,你應該能夠處理大量的流量。

現在,如果你每秒必須做數千次復雜的寫入操作? 不同的故事。 Django會是一個糟糕的選擇嗎? 嗯,不一定,取決於你如何設計你的解決方案,以及你的要求是什麼。

只是我的兩分錢:-)


另一個例子是俄羅斯運輸時間表服務rasp.yandex.ru。 它的出席率符合您的要求。


如果你想使用開源,那麼你有很多選擇。 但python是其中最好的,它有許多圖書館和一個超級棒的社區。 這些可能會改變你的想法:

  • Python非常好,但它是一種解釋型語言,它使其變得緩慢。 但是許多加速器和高速緩存服務在那裡部分解決了這個問題。

  • 如果您正在考慮快速開發,那麼Ruby on Rails是最好的選擇。 這個(ROR)框架的主要座右銘是給開發者一個舒適的體驗。 如果你比較Ruby和Python都有幾乎相同的語法。

  • Google App Engine是非常好的服務,但它會將您綁定在其範圍內,您沒有機會嘗試新事物。 而不是它,你可以使用數字海洋雲,其最簡單的液滴只需要5美元/月的費用。 Heroku是另一項免費服務,您可以在其中部署產品。

  • 是! 是! 你聽到的是完全正確的,但這裡有一些使用其他技術的例子

    • Rails:Github,Twitter(以前),Shopify,Airbnb,Slideshare,Heroku等
    • PHP:Facebook,維基百科,Flickr,雅虎,不倒翁,Mailchimp等。

結論是一個框架或語言不會為你做任何事情。 更好的架構,設計和策略將為您提供可擴展的網站。 Instagram是最大的例子,這個小團隊正在管理這麼龐大的數據。 這裡有一個關於它的架構的blog必須閱讀它。



我一直在使用Django已經有一年多的時間了,對於如何將模塊化,可伸縮性和開發速度結合起來,我印象深刻。 與任何技術一樣,它帶有一條學習曲線。 但是,由於Django社區出色的文檔,這種學習曲線變得不那麼陡峭。 Django能夠很好地處理我所投入的一切。 看起來它可以很好地擴展到未來。

BidRodeo Penny Auctions是一個中等大小的Django支持的網站。 這是一個非常有活力的網站,每天處理大量的頁面瀏覽量。


我不認為這個問題真的是Django擴展。

我真的建議你看看你的架構,這將幫助你擴展需求。如果你弄錯了,那麼Django的表現有多好。 性能!=規模。 你可以擁有一個性能驚人但不縮放的系統,反之亦然。

你的應用程序數據庫被綁 如果是這樣,那麼你的規模問題也是存在的。 你打算如何與Django的數據庫進行交互? 當數據庫無法像Django接受它們那樣快速處理請求時會發生什麼? 當您的數據超過一台物理機器時會發生什麼情況。 你需要說明你打算如何處理這些情況。

此外,當您的流量超過一台應用服務器時會發生什麼? 在這種情況下如何處理會話可能會非常棘手,更經常的情況是您可能需要無共享架構。 這又取決於你的應用程序。

簡而言之,語言不是決定規模的因素,一種語言對性能負責(再次取決於不同語言的應用程序的不同表現)。 這是您的設計和體系結構,使縮放成為現實。

我希望它有幫助,如果您有任何疑問,我很樂意進一步提供幫助。


我們現在正在進行負載測試。 我們認為我們可以支持240個並發請求(24x7每秒120個點擊率的持續速率),而不會顯著降低服務器性能。 這將是每小時432,000次點擊。 響應時間並不短(我們的交易量很大),但隨著負載的增加,我們的基線性能沒有下降。

我們使用Apache前端Django和MySQL。 操作系統是紅帽企業Linux(RHEL)。 64位。 我們在Django中使用守護進程模式下的mod_wsgi。 除了接受默認值之外,我們沒有進行緩存或數據庫優化。

我們都在64位戴爾(我認為)32Gb內存的虛擬機上。

由於20或200個並髮用戶的性能幾乎相同,因此我們不需要花費大量時間“調整”。 相反,我們只需通過普通的SSL性能改進,普通的數據庫設計和實現(索引等),普通的防火牆性能改進等來保持基本性能。

我們測量的是我們的負載測試筆記本電腦在15個進程的瘋狂工作負載下掙扎,運行16個並發線程的請求。


我對Django的經驗很少,但我確實記得在Django Book中他們有一個章節,他們在那裡採訪運行一些較大的Django應用程序的人。 這是一個鏈接。 我想它可以提供一些見解。

它說curse.com是最大的Django應用程序之一,一個月內頁面瀏覽量大約在6000萬到9000萬之間。


我所知道的最大的django網站是華盛頓郵報 ,它肯定會表明它可以很好地擴展。

良好的設計決策可能比其他任何事情都有更大的性能影響。 Twitter經常被引用為一個網站,它體現了另一個基於動態解釋語言的Web框架Ruby on Rails的性能問題 - 但Twitter工程師指出,框架並不像他們早期提出的一些數據庫設計選擇那麼重要上。

Django可以很好地與memcached配合工作,並提供一些用於管理緩存的類,這是解決大部分性能問題的地方。 在網絡上傳輸的內容幾乎比後端的內容更重要 - 使用像yslow這樣的工具對於高性能Web應用程序至關重要。 您可以隨時在後端投擲更多硬件,但無法更改用戶帶寬。


我相信你正在尋找更加可靠的答案,但我能想到的最明顯的客觀驗證是Google推動Django與其App Engine框架一起使用。 如果有人經常了解並處理可擴展性,那就是Google。 從我讀過的內容來看,最受限制的因素似乎是數據庫的後端,這就是為什麼Google使用自己的......


擴展Web應用程序不是關於Web框架或語言,而是關於您的架構。 這是關於你如何處理你的瀏覽器緩存,你的數據庫緩存,你如何使用非標準的持久性提供者(如CouchDB ),數據庫和其他許多東西的調整方式......

不要打擾...


是的,它可以。 它可以是Python或Ruby on Rails上的Django。 它仍然會擴展。

有幾種不同的技術。 首先,緩存不是縮放。 除了硬件平衡器之外,您還可以將多個應用程序服務器與nginx作為前端進行平衡。 要在數據庫端進行擴展,如果使用RDBMS方式,可以使用MySQL / PostgreSQL中的從屬服務器進行遠程訪問。

Django中流量較大的網站的一些好例子可能是:

  • 當他們還在那裡的時候。
  • Discus(通用共享評論管理器)
  • 所有報紙相關網站:華盛頓郵報等。

你可以感到安全。


看看這個名為EveryBlock的微型新聞聚合

它完全用Django編寫。 事實上,他們是自己開發Django框架的人。


請注意,如果您期望每天有100K用戶,這些用戶一次只能活動幾個小時(意味著最多可同時擁有20K個用戶),您將需要大量的服務器。 SO擁有約15,000名註冊用戶,其中大多數可能每天都不活躍。 儘管大部分流量來自未註冊的用戶,但我猜測他們中的很少人會在幾分鐘內呆在網站上(即他們會跟踪谷歌搜索結果,然後離開)。

對於該卷,預計至少有30台服務器......每個服務器仍然有1000個並髮用戶。





scalability