ขนาด Django หรือไม่? [ปิด]


1135

ฉันกำลังสร้างแอปพลิเคชันเว็บด้วย Django เหตุผลที่ฉันเลือก Django คือ:

  • ฉันต้องการทำงานกับเครื่องมือฟรี / โอเพนซอร์ซ
  • ฉันชอบ Python และรู้สึกว่ามันเป็นภาษาระยะยาวในขณะที่ Ruby เกี่ยวกับฉันไม่แน่ใจและ PHP ดูเหมือนจะยุ่งยากอย่างมากในการเรียนรู้
  • ฉันกำลังสร้างต้นแบบสำหรับความคิดและไม่ได้คิดมากเกี่ยวกับอนาคต ความเร็วในการพัฒนาเป็นปัจจัยหลักและฉันก็รู้จัก Python อยู่แล้ว
  • ฉันรู้ว่าการโยกย้ายไปยัง Google App Engine จะง่ายขึ้นหากฉันเลือกที่จะทำในอนาคต
  • ฉันได้ยินมาว่า Django นั้น "ดี"

ตอนนี้ฉันเริ่มคิดถึงการตีพิมพ์งานของฉันมากขึ้น ข้อมูลเดียวที่ฉันพบเกี่ยวกับความสามารถในการปรับขนาดของ Django นั้นมาจากทีมงานของ Django (ฉันไม่ได้พูดอะไรเลยที่จะเพิกเฉยต่อพวกเขา แต่นี่ไม่ใช่ข้อมูลที่เป็นเป้าหมายอย่างชัดเจน ... )

คำถามของฉัน:

  • เว็บไซต์ "ใหญ่ที่สุด" ที่สร้างบน Django ในวันนี้คืออะไร (ฉันวัดขนาดส่วนใหญ่ตามปริมาณการใช้ของผู้ใช้)
  • Django สามารถจัดการกับผู้ใช้ 100,000 รายต่อวันแต่ละครั้งที่เข้าชมเว็บไซต์เป็นเวลาสองชั่วโมงหรือไม่?
  • ไซต์เช่น Stack Overflow สามารถทำงานบน Django ได้หรือไม่

2
หากคุณยังไม่ได้แนะนำให้อ่านส่วนเกี่ยวกับการปรับขนาดใน The Django Book: djangobook.com/en/1.0/chapter20หรือเวอร์ชันที่ใหม่กว่า: djangobook.com/en/2.0/chapter12
monkut

15
อาจต้องการแก้ไข "ความเร็วเป็นปัจจัยหลัก" เพื่อชี้แจงหากคุณกำลังพูดถึงความเร็วในการดำเนินการหรือความพยายามในการพัฒนา ดูเหมือนความพยายามในการพัฒนาซึ่งสมเหตุสมผล
S.Lott

6
คงน่าสนใจที่จะเปรียบเทียบกับ RoR
Kozyarchuk

6
@ ajkumar25, AFAIK disqus ใช้ django blog.disqus.com/post/62187806135/… .
alxs

6
คำถามควรเป็นwhat's the cost of scaling in the Django?
Sławomir Lenart

คำตอบ:


932
  1. "อะไรคือไซต์ที่ใหญ่ที่สุดที่สร้างบน Django ในวันนี้"

    ไม่มีสถานที่เดียวที่รวบรวมข้อมูลเกี่ยวกับการจราจรบนเว็บไซต์ที่สร้างขึ้นของ Django ดังนั้นฉันจะต้องแทงด้วยข้อมูลจากสถานที่ต่างๆ ครั้งแรกที่เรามีรายชื่อของเว็บไซต์ Django บนหน้าของหน้าโครงการ Django หลักแล้วรายการ Django สร้างเว็บไซต์ที่djangosites.org จะผ่านรายการและเลือกบางอย่างที่ฉันรู้ว่ามีปริมาณการใช้ที่เหมาะสมที่เราเห็น:

    • Instagram :อะไรพลัง Instagram: ร้อยอินสแตนซ์นับสิบของเทคโนโลยี

    • Pinterest : Alexa อยู่ในอันดับที่ 37 (21.4.2015)และ 70 ล้านคนในปี 2556

    • Bitbucket : 200TB ของรหัสและ 2.500.000 ผู้ใช้

    • สอบ :ให้บริการ 400 ล้านคนกับงูหลาม

    • curse.com : 600k ผู้เข้าชมทุกวัน

    • tabblo.com : 44k เข้าชมรายวัน , เห็นโพสต์เน็ด Batchelder ของโครงสร้างพื้นฐานสำหรับเว็บไซต์ที่ทันสมัย

    • chesspark.com : Alexa อยู่ในอันดับประมาณ 179k

    • pownce.com (ไม่มีการใช้งานอีกต่อไป): alexa อยู่ในอันดับประมาณ 65k Mike Malone of Pownce ในการนำเสนอ EuroDjangoCon บน Scaling Django Web Appsกล่าวว่า "หลายร้อยครั้งต่อวินาที" นี่เป็นการนำเสนอที่ดีมากเกี่ยวกับวิธีการปรับขนาด Django และสร้างจุดที่ดีรวมถึงข้อบกพร่อง (ปัจจุบัน) ในการปรับขนาดของ Django

    • เอชพีมีสถานที่สร้างขึ้นด้วย Django 1.5: ศูนย์ ePrint อย่างไรก็ตามสำหรับ novemer / 2015 เว็บไซต์ทั้งหมดได้รับการโยกย้ายและลิงก์นี้เป็นเพียงการเปลี่ยนเส้นทาง เว็บไซต์นี้เป็นบริการทั่วโลกที่เข้าร่วมการสมัครสมาชิก Instant Ink และบริการที่เกี่ยวข้องที่ HP เสนอ (*)

  2. "Django สามารถจัดการผู้ใช้ 100,000 รายต่อวันได้หรือไม่แต่ละชั่วโมงเข้าชมเว็บไซต์"

    ใช่ดูด้านบน

  3. "ไซต์อย่าง Stack Overflow สามารถทำงานบน Django ได้หรือไม่"

    ความรู้สึกของฉันคือใช่ แต่ตามที่คนอื่นตอบและ Mike Malone กล่าวถึงในงานนำเสนอของเขาการออกแบบฐานข้อมูลเป็นสิ่งสำคัญ อาจพบหลักฐานที่แข็งแกร่งที่ www.cnprog.com หากเราสามารถหาสถิติการเข้าชมที่เชื่อถือได้ อย่างไรก็ตามมันไม่ใช่แค่บางสิ่งที่จะเกิดขึ้นโดยการรวมกลุ่มของ Django ไว้ด้วยกัน :)

แน่นอนว่ามีเว็บไซต์และบล็อกเกอร์ที่น่าสนใจอีกมากมาย แต่ฉันต้องหยุดที่ไหนซักแห่ง!


บล็อกโพสต์เกี่ยวกับการใช้ Django เพื่อสร้างเว็บไซต์ที่มีปริมาณการใช้งานสูง michaelmoore.comอธิบายว่าเป็นเว็บไซต์ 10,000 อันดับแรก สถิติ Quantcastและcompete.com สถิติ


(*) ผู้เขียนของการแก้ไขรวมถึงการอ้างอิงดังกล่าวที่ใช้ในการทำงานในฐานะนักพัฒนาภายนอกในโครงการนั้น


267

เรากำลังทำการทดสอบโหลดตอนนี้ เราคิดว่าเราสามารถรองรับ 240 คำขอที่เกิดขึ้นพร้อมกัน (อัตราการคงที่ 120 ครั้งต่อวินาที 24x7) โดยไม่มีการลดลงอย่างมีนัยสำคัญในประสิทธิภาพของเซิร์ฟเวอร์ นั่นจะเป็น 432,000 ครั้งต่อชั่วโมง เวลาตอบสนองไม่เล็ก (ธุรกรรมของเรามีขนาดใหญ่) แต่ไม่มีการเสื่อมประสิทธิภาพจากประสิทธิภาพพื้นฐานของเราเมื่อการโหลดเพิ่มขึ้น

เรากำลังใช้งาน Django และ MySQL ของ Apache ระบบปฏิบัติการคือ Red Hat Enterprise Linux (RHEL) 64 บิต เราใช้ mod_wsgi ในโหมด daemon สำหรับ Django เราไม่ได้ทำการเพิ่มประสิทธิภาพแคชหรือฐานข้อมูลอื่นนอกจากยอมรับค่าเริ่มต้น

เราทุกคนอยู่ใน VM เดียวบนเดลล์ 64 บิตพร้อม (ฉันคิดว่า) 32Gb RAM

เนื่องจากประสิทธิภาพการทำงานใกล้เคียงกันสำหรับผู้ใช้ 20 หรือ 200 คนพร้อมกันเราจึงไม่จำเป็นต้องใช้ "tweaking" เป็นจำนวนมาก แต่เราเพียงแค่ต้องรักษาประสิทธิภาพพื้นฐานของเราให้ดีขึ้นผ่านการปรับปรุงประสิทธิภาพ SSL ทั่วไปการออกแบบฐานข้อมูลและการติดตั้งใช้งานทั่วไป (การจัดทำดัชนีและอื่น ๆ ) การปรับปรุงประสิทธิภาพไฟร์วอลล์ทั่วไปเป็นต้น

สิ่งที่เราทำคือแล็ปท็อปทดสอบโหลดของเรากำลังดิ้นรนภายใต้ภาระงานที่บ้าคลั่งของ 15 กระบวนการที่เรียกใช้ 16 คำร้องขอพร้อมกัน


3
ยังอยากรู้อยากเห็น: DB ของคุณทำงานบนเครื่องเดียวกันหรือเซิร์ฟเวอร์แยกต่างหากหรือไม่
Jarret ฮาร์ดี

16
หนึ่ง VM พร้อม Apache, Django และ MySQL mod_wsgi RHEL
S.Lott

4
มีการอัปเดตเกี่ยวกับการวัดประสิทธิภาพหรือไม่
SexyBeast

1
คุณให้คะแนนที่ดี - ถ้าคุณคิดว่าปริมาณการเข้าชมเว็บไซต์เป็นคิวคุณสามารถตอบสนองได้กี่ชั่วโมงต่อชั่วโมง หากคุณใช้เวลาตอบสนองสั้น ๆ คุณสามารถให้บริการได้มากขึ้นและมี 'ความยืดหยุ่นที่มากขึ้น' - ไม่สำคัญว่าคุณจะใช้ Django, Twisted, Rails หรือเทคโนโลยีจากดาวเคราะห์ Zod
Ralph Bolton

2
ฉันทำงานกับ Django มาหลายปีแล้วและฉันไม่เคยเห็นการแสดงแบบนี้มาก่อนนอกเหนือจากแอพของเล่นที่อ่านได้อย่างเดียวเท่านั้น แอปพลิเคชันของคุณมีลักษณะอย่างไร สิ่งใดก็ตามที่มีเทมเพลตหรือมิดเดิลแวร์หรือเซสชันหรือการเชื่อมต่อฐานข้อมูลจะไม่สนับสนุนการเข้าชม 120 ครั้งต่อวินาที
Cerin

176

ไม่แน่ใจเกี่ยวกับจำนวนการเข้าชมรายวัน แต่นี่คือตัวอย่างบางส่วนของไซต์ Django ขนาดใหญ่:

นี่คือการเชื่อมโยงไปยังรายการของการจราจรสูงเว็บไซต์ Django บน Quora


107

เว็บไซต์ "ใหญ่ที่สุด" ที่สร้างบน Django ในวันนี้คืออะไร (ฉันวัดขนาดส่วนใหญ่ตามปริมาณการใช้ของผู้ใช้)

ในสหรัฐอเมริกามันเป็นMahalo ฉันบอกว่าพวกเขาจัดการกับวัตถุโบราณประมาณ 10 ล้านต่อเดือน ตอนนี้ในปี 2019 Mahalo ขับเคลื่อนโดย Ruby on Rails

ต่างประเทศเครือข่ายGlobo (เครือข่ายข่าวกีฬาและเว็บไซต์บันเทิงในบราซิล); Alexa จัดอันดับให้อยู่ใน 100 อันดับแรกของโลก (ประมาณ 80 ในปัจจุบัน)

ผู้ใช้ Django ที่มีชื่อเสียงคนอื่น ๆ ได้แก่ PBS, National Geographic, Discovery, NASA (อันที่จริงแล้วเป็นหน่วยงานต่าง ๆ ภายใน NASA) และ Library of Congress

Django สามารถจัดการกับผู้ใช้ 100k รายวันได้หรือไม่แต่ละครั้งที่เข้าชมเว็บไซต์เป็นเวลาสองชั่วโมง

ใช่ - เฉพาะเมื่อคุณเขียนใบสมัครของคุณถูกต้องและหากคุณมีฮาร์ดแวร์เพียงพอ Django ไม่ใช่กระสุนวิเศษ

ไซต์อย่าง StackOverflow สามารถทำงานบน Django ได้หรือไม่

ใช่ (แต่ดูด้านบน)

เทคโนโลยีฉลาดง่าย: ดูsocloneสำหรับหนึ่งครั้ง การจราจรที่ชาญฉลาดแข่งขันตอก StackOverflow ที่ต่ำกว่า 1 ล้านแห่งต่อเดือน ฉันสามารถตั้งชื่อเว็บไซต์อย่างน้อยโหลโหลโกที่มีปริมาณการเข้าชมมากกว่านั้น


2
คุณสามารถประมาณการราคาโดยประมาณสำหรับ 5000 การเข้าชมต่อวินาทีโดยสมมติว่ามันเป็น Linkedin โดยใช้ Django สมมติว่าโปรแกรมเมอร์โดยเฉลี่ยได้สร้างเว็บไซต์และเพิ่มหลักสูตรของแคช สมมติว่าอัลกอริทึมนั้น (เพื่อทำให้สิ่งต่าง ๆ เร็ว) ยังไม่ได้ใช้อย่างที่ฉันยังไม่ได้ทำ
2349115

5
@ user2349115 ตามเวลาที่แอปพลิเคชันของคุณได้รับ 5,000 ครั้งต่อวินาทีคุณจะมีความรู้พื้นฐานเพียงพอที่จะเข้าใจว่าทำไมจึงเป็นคำถามที่ผิด
Kye R

นินจาของฉัน (ส่วนขยายเบราว์เซอร์ของ wrappalyzer) บอกว่า mahalo เป็นทับทิมบนรางขับเคลื่อนตอนนี้ในเดือนมีนาคม 2019
Miles Davis

87

การปรับขนาดเว็บแอปไม่ได้เกี่ยวกับกรอบเว็บหรือภาษา แต่เกี่ยวกับสถาปัตยกรรมของคุณ มันเกี่ยวกับวิธีที่คุณจัดการกับแคชเบราว์เซอร์แคชฐานข้อมูลของคุณวิธีการที่คุณใช้ผู้ให้บริการการเก็บข้อมูลที่ไม่ได้มาตรฐาน (เช่นCouchDB ) การปรับฐานข้อมูลเป็นอย่างไรและอื่น ๆ อีกมากมาย ...


กรอบงานเว็บมีความหมาย! ดูว่าพายุทอร์นาโดเร็วแค่ไหนเมื่อเทียบกับการออกแบบเว็บงูเหลือมอื่น ๆ : tornadoweb.org/documentation#performance
Joshua Partogi

ฉันไม่ได้ลงคะแนน แต่ฉันคิดว่าคุณปิดหัวข้อเล็กน้อยเพราะพวกเขาพูดคุยถึงข้อดีของ django และคุณไม่สามารถใช้ทุกฐานข้อมูลปรับฐานข้อมูลของคุณและใช้ couchdb ได้สูงสุดในทุกกรอบงานที่กำหนด แน่นอนว่าคุณไม่ต้องเขียนชิ้นใหญ่ ๆ
ZJR

8
@ZLR ฉันไม่เชื่อว่าฉันไปนอกหัวข้อ เขาถามว่า Django สามารถปรับขนาดได้หรือไม่ฉันตอบว่าใช่เพราะเกือบทุกเว็บเฟรม
เวิร์คที่

ใช่การบล็อกกับการบล็อกไม่ใช่ IO นั้นมีความสำคัญตามตัวอย่างของ Tornado ถึงแม้ว่าจะกล่าวว่า Tornado ไม่ใช่เว็บเฟรมเวิร์ก แต่แอปพลิเคชันของคุณจะต้องเขียนในลักษณะที่ใช้ประโยชน์จาก nonblocking IO
Rob Grant

ด้วย Tornado มันง่ายมากที่จะเขียนการบล็อกรหัส IO และนั่นไม่ได้ทำให้เกิดภาวะพร้อมกันสูง กรอบงานจริง ๆ ไม่สำคัญ
Shiplu Mokaddim

80

เล่นทนายของมารหน่อย:

คุณควรตรวจสอบDjangoCon 2008 Keynoteซึ่งจัดทำโดยCal Hendersonชื่อ "ทำไมฉันเกลียด Django" ที่เขาสวยไปทุกอย่างที่ Django หายไปซึ่งคุณอาจต้องการทำในเว็บไซต์ที่มีปริมาณการใช้งานสูง ในตอนท้ายของวันที่คุณต้องใช้ทั้งหมดนี้ด้วยใจที่เปิดกว้างเพราะมันเป็นไปได้อย่างสมบูรณ์แบบในการเขียนแอพ Django ในระดับนั้น แต่ฉันคิดว่ามันเป็นการนำเสนอที่ดีและเกี่ยวข้องกับคำถามของคุณ


3
นอกจากนี้ Flickr ไม่ได้สร้างขึ้นในวันเดียว
Deniz Dogan

34
ดูเหมือนว่าปัญหาหลายอย่างที่ Cal harped กำลังเป็นคุณสมบัติมาตรฐาน: docs.djangoproject.com/en/dev/topics/db/multi-db
Dolph

51

ไซต์ django ที่ใหญ่ที่สุดที่ฉันรู้จักคือWashington Postซึ่งแน่นอนว่าบ่งบอกได้ว่ามันสามารถขยายขนาดได้

การตัดสินใจออกแบบที่ดีอาจส่งผลกระทบต่อประสิทธิภาพที่ใหญ่กว่าสิ่งอื่นใด Twitter อ้างถึงบ่อยครั้งว่าเป็นเว็บไซต์ที่รวบรวมปัญหาเกี่ยวกับประสิทธิภาพการทำงานกับกรอบเว็บที่แปลภาษาแบบไดนามิก Ruby on Rails - แต่วิศวกรของ Twitter ได้ระบุว่ากรอบไม่ได้เป็นปัญหามากเท่ากับตัวเลือกการออกแบบฐานข้อมูลที่พวกเขาทำไว้ บน.

Django ทำงานได้ดีมากกับ memcached และมีคลาสสำหรับจัดการแคชซึ่งเป็นที่ที่คุณจะแก้ไขปัญหาประสิทธิภาพการทำงานส่วนใหญ่ของคุณ สิ่งที่คุณมอบให้กับสายสำคัญกว่าแบ็คเอนด์ในความเป็นจริงของคุณ - การใช้เครื่องมือเช่น yslow มีความสำคัญสำหรับเว็บแอปพลิเคชั่นที่มีประสิทธิภาพสูง คุณสามารถขว้างฮาร์ดแวร์เพิ่มเติมได้ที่แบ็กเอนด์ของคุณ แต่คุณไม่สามารถเปลี่ยนแบนด์วิธผู้ใช้ได้


1
ไม่ได้เป็นเพียงส่วนหนึ่งของ washingtonpost.com ที่ทำงานบน Django หรือ หน้าแรกของ Django ดูเหมือนจะบ่งบอกว่าเป็นโปรเจค
washingtonpost.com/congress

3
คุณอาจสับสนกับ Washington Post กับ Washington Times ฉันเชื่อว่าเวลาทั้งหมดอยู่ใน Django แต่มันเป็นกระดาษที่เล็กกว่ามาก
อีไล

32

ฉันอยู่ที่การประชุม EuroDjangoCon เมื่อสัปดาห์ที่แล้วและนี่เป็นหัวข้อของการพูดคุยสองสามครั้ง - รวมถึงผู้ก่อตั้งเว็บไซต์ที่ใหญ่ที่สุดใน Django คือ Pownce (สไลด์จากการพูดคุยที่นี่ ) ข้อความหลักคือไม่ใช่ Django ที่คุณต้องกังวล แต่สิ่งต่าง ๆ เช่นการแคชที่เหมาะสมการปรับสมดุลโหลดการเพิ่มประสิทธิภาพฐานข้อมูล ฯลฯ

จริง ๆ แล้ว Django มีตะขอสำหรับสิ่งเหล่านี้ส่วนใหญ่ - แคชโดยเฉพาะทำง่ายมาก


24

ฉันแน่ใจว่าคุณกำลังมองหาคำตอบที่ชัดเจนยิ่งขึ้น แต่การตรวจสอบวัตถุประสงค์ที่ชัดเจนที่สุดที่ฉันคิดได้ก็คือ Google ผลักดัน Django สำหรับใช้กับApp Engineเฟรมเวิร์กหากใครรู้และเกี่ยวข้องกับความสามารถในการปรับขนาดได้เป็นประจำนั่นก็คือ Google จากสิ่งที่ฉันได้อ่านปัจจัยที่ จำกัด ที่สุดน่าจะเป็นฐานข้อมูลส่วนหลังซึ่งเป็นเหตุผลที่ Google ใช้ของตัวเอง ...


การโปรโมต Django / Python อาจเกี่ยวข้องกับนโยบายของ Google ในการโปรโมต Python มากกว่าการเลือกภาษา 'อื่น ๆ ' หลังจาก C ++?
GuruM

เมื่อฉันต้องใช้ GAE มันค่อนข้างใกล้เคียงกับบางอย่างเช่น Tornado ...
Luis Masuelli

18

ตามที่ระบุไว้ในหนังสือประสิทธิภาพสูง Django และไปผ่านCal Henderson นี้

ดูรายละเอียดเพิ่มเติมตามที่ระบุไว้ด้านล่าง:

ไม่ใช่เรื่องแปลกที่ผู้คนจะพูดว่า“ Django ไม่ได้ปรับขนาด”ไม่ได้ระดับ” ขึ้นอยู่กับว่าคุณดูอย่างไรแถลงการณ์นั้นเป็นจริงอย่างสมบูรณ์หรือเป็นเท็จโดยชัดแจ้ง Django ด้วยตัวของมันเองไม่ได้ปรับขนาด

เช่นเดียวกันกับ Ruby on Rails, Flask, PHP หรือภาษาอื่น ๆ ที่ใช้โดยเว็บไซต์แบบไดนามิกที่ใช้ฐานข้อมูล

อย่างไรก็ตามข่าวดีก็คือว่า Django โต้ตอบอย่างสวยงามกับชุดเครื่องมือแคชและโหลดบาลานซ์ที่จะช่วยให้ปริมาณการรับส่งข้อมูลมากเท่าที่คุณสามารถทำได้

ตรงกันข้ามกับสิ่งที่คุณอาจอ่านออนไลน์มันสามารถทำได้โดยไม่ต้องเปลี่ยนส่วนประกอบหลักซึ่งมักจะระบุว่า“ ช้าเกินไป” เช่นฐานข้อมูล ORM หรือเลเยอร์เทมเพลต

Disqus ให้บริการการแสดงหน้าเว็บมากกว่า 8 พันล้านครั้งต่อเดือน นั่นเป็นจำนวนมาก

ทีมเหล่านี้พิสูจน์แล้วว่า Django เป็นสเกลที่แน่นอนที่สุด ประสบการณ์ของเราที่ Lincoln Loop สำรองไว้

เราได้สร้างเว็บไซต์ Django ขนาดใหญ่ที่สามารถใช้เวลาทั้งวันในหน้าแรกของ Reddit ได้โดยไม่ต้องเหนื่อย

เรื่องราวความสำเร็จของการปรับขนาดของ Django นั้นมีอยู่มากมายเกินกว่าที่จะแสดงไว้ ณ จุดนี้

มันสนับสนุน Disqus, Instagram และ Pinterest ต้องการหลักฐานเพิ่มเติมหรือไม่ Instagram สามารถรักษาผู้ใช้กว่า 30 ล้านคนบน Django ด้วยวิศวกรเพียง 3 คน (2 ในนั้นไม่มีการพัฒนาด้านหลัง


17

วันนี้เราใช้เว็บแอพและเว็บไซต์มากมายสำหรับความต้องการของเรา ส่วนใหญ่มีประโยชน์อย่างมาก ฉันจะแสดงให้คุณเห็นบางส่วนของพวกเขาใช้โดยหลามหรือ django

วอชิงตันโพสต์

เว็บไซต์ของวอชิงตันโพสต์เป็นแหล่งข่าวออนไลน์ที่ได้รับความนิยมอย่างมากพร้อมกับรายงานประจำวันของพวกเขา มุมมองและปริมาณข้อมูลจำนวนมากสามารถจัดการได้ง่ายโดยเว็บเฟรมของ Django Washington Post - 52.2 million unique visitors (March, 2015)

นาซา

เว็บไซต์อย่างเป็นทางการของวิชาการการบินและอวกาศแห่งชาติเป็นที่สำหรับค้นหาข่าวรูปภาพและวิดีโอเกี่ยวกับการสำรวจอวกาศอย่างต่อเนื่อง เว็บไซต์ Django นี้สามารถจัดการจำนวนการดูและปริมาณการใช้งานได้อย่างง่ายดาย 2 million visitors monthly

เดอะการ์เดียน

เดอะการ์เดียนเป็นเว็บไซต์ข่าวและสื่อของอังกฤษที่การ์เดียนมีเดียกรุ๊ปเป็นเจ้าของ มันมีเนื้อหาเกือบทั้งหมดของหนังสือพิมพ์ 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 และการวิเคราะห์ Bitly นั้นสร้างขึ้นด้วย Python บริการของพวกเขาสามารถจัดการเหตุการณ์หลายร้อยล้านต่อวัน

Reddit

Reddit เรียกได้ว่าเป็นหน้าแรกของอินเทอร์เน็ต มันเป็นสถานที่ออนไลน์เพื่อค้นหาข้อมูลหรือความบันเทิงตามหมวดหมู่ที่แตกต่างกันหลายพัน โพสต์และลิงก์นั้นสร้างขึ้นโดยผู้ใช้ ความสามารถของ Reddit มากมายขึ้นอยู่กับ Python สำหรับการใช้งาน

Hipmunk

Hipmunk เป็นเว็บไซต์ท่องเที่ยวสำหรับผู้บริโภคออนไลน์ที่เปรียบเทียบเว็บไซต์ท่องเที่ยวยอดนิยมเพื่อค้นหาข้อเสนอที่ดีที่สุด เครื่องมือของเว็บไซต์ Python ช่วยให้คุณค้นหาโรงแรมและเที่ยวบินที่ถูกที่สุดสำหรับปลายทางของคุณ

คลิกที่นี่เพื่อดูข้อมูลเพิ่มเติม: 25 เว็บไซต์ที่ได้รับความนิยมมากที่สุดเว็บไซต์ไพ ธ อนและ django , เว็บไซต์ที่มีชื่อเสียง


15

ฉันคิดว่าเราอาจเพิ่มแอพของ Apple สำหรับปี 2011, Instagramลงในรายการที่ใช้ django อย่างเข้มข้น


12

ใช่มันสามารถ อาจเป็น Django กับ Python หรือ Ruby on Rails มันจะยังคงปรับขนาด

มีเทคนิคแตกต่างกันเล็กน้อย ก่อนอื่นการแคชไม่ใช่การปรับขนาด คุณสามารถมีแอพพลิเคชั่นเซิร์ฟเวอร์หลายตัวที่สมดุลกับ nginx ซึ่งเป็นส่วนเสริมนอกเหนือจากตัวปรับสมดุลฮาร์ดแวร์ ในการขยายขนาดด้านฐานข้อมูลคุณสามารถไปได้ไกลด้วย read slave ใน MySQL / PostgreSQL ถ้าคุณใช้วิธี RDBMS

ตัวอย่างที่ดีของเว็บไซต์การจราจรหนาแน่นใน Django อาจเป็น:

  • Pownceเมื่อพวกเขายังอยู่ที่นั่น
  • Discus (ผู้จัดการความคิดเห็นทั่วไปที่แบ่งปัน)
  • เว็บไซต์ที่เกี่ยวข้องกับหนังสือพิมพ์ทั้งหมด: Washington Post และอื่น ๆ

คุณสามารถรู้สึกปลอดภัย


2
เพียงแค่ว่า ... เครือข่ายสังคมที่ตายแล้วทำให้ตัวอย่างที่ปรับขนาดได้ไม่ดี :)
ZJR

3
ฉันไม่คิดว่าคนตาย Pownce เกี่ยวข้องกับปัญหาการปรับขนาดได้
Kedare

9

นี่คือรายการของสิ่งที่ค่อนข้างสูงโปรไฟล์สร้างขึ้นใน Django:

  1. แอป" ตรวจสอบค่าใช้จ่ายของ MP " ของผู้พิทักษ์

  2. Politifact.com (นี่คือบล็อกโพสต์ที่พูดถึงประสบการณ์ (บวก) ไซต์ชนะรางวัลพูลิตเซอร์

  3. แอพเป็นตัวแทนของ NY Times

  4. EveryBlock

  5. Peter Harkins หนึ่งในโปรแกรมเมอร์ที่ WaPo แสดงรายการทั้งหมดที่พวกเขาสร้างขึ้นด้วย Djangoในบล็อกของเขา

  6. มันเก่าไปหน่อย แต่มีคนจาก LA Times ให้ภาพรวมเบื้องต้นว่าทำไมพวกเขาถึงไปกับ Django

  7. AV Club ของ Onion เพิ่งถูกย้ายจาก (ฉันคิดว่า Drupal) ไปยัง Django

ฉันคิดว่าหลายเว็บไซต์เหล่านี้อาจได้รับความนิยมมากกว่า 100k + ต่อวัน Django สามารถทำยอดฮิตได้ 100k / วันขึ้นไป แต่ YMMV ในการทำให้เว็บไซต์ของคุณอยู่ที่นั่นขึ้นอยู่กับสิ่งที่คุณกำลังสร้าง

มีตัวเลือกการแคชที่ระดับ Django (ตัวอย่างเช่นการสืบค้นคิวรีและมุมมองในmemcachedสามารถทำงานได้อย่างมหัศจรรย์) และเกิน (แคชต้นน้ำเช่นSquid ) ข้อกำหนดของเซิร์ฟเวอร์ฐานข้อมูลจะเป็นปัจจัย (และโดยปกติจะเป็นที่ที่จะแยกออก) เช่นเดียวกับที่คุณปรับจูนได้ดีเพียงใด ตัวอย่างเช่นสมมติว่า Django กำลังจัดทำดัชนีอย่างเหมาะสม อย่าสันนิษฐานว่าการกำหนดค่าเริ่มต้นPostgreSQLหรือMySQLเป็นสิ่งที่ถูกต้อง

นอกจากนี้คุณยังมีตัวเลือกในการมีเซิร์ฟเวอร์แอปพลิเคชั่นหลายตัวที่ใช้งาน Django อยู่เสมอหากเป็นจุดที่ช้าพร้อมกับตัวโหลดซอฟต์แวร์หรือฮาร์ดแวร์โหลดบาลานซ์

ในที่สุดคุณให้บริการเนื้อหาคงที่บนเซิร์ฟเวอร์เดียวกับ Django หรือไม่? คุณใช้ Apache หรืออะไรบางอย่างเช่นnginxหรือlighttpd ? คุณสามารถที่จะใช้CDNสำหรับเนื้อหาแบบคงที่ได้หรือไม่? สิ่งเหล่านี้เป็นสิ่งที่ควรคำนึงถึง แต่ทุกอย่างล้วนเป็นการเก็งกำไร 100k hits / วันไม่ใช่ตัวแปรเดียว: คุณต้องการใช้จ่ายเท่าไหร่? คุณมีความเชี่ยวชาญในการจัดการส่วนประกอบเหล่านี้มากแค่ไหน? เวลาเท่าไหร่ที่คุณต้องดึงมันทั้งหมดเข้าด้วยกัน?


9

ผู้ให้การสนับสนุนผู้พัฒนาสำหรับ YouTube ได้พูดคุยเกี่ยวกับการปรับขนาดของ Python ใน PyCon 2012ซึ่งเกี่ยวข้องกับการปรับ Django

YouTube มีผู้ใช้มากกว่าพันล้านคนและ YouTube สร้างด้วย Python


3
แต่ youtube ไม่ได้สร้างด้วย django Python อาจเร็ว แต่ไม่ใช่สำหรับ django
Joshua Partogi

4
ใช่แล้ว แต่ประเด็นก็คือเมื่อ Django เติบโตขึ้นมันนั่งอยู่บนรากฐานที่ดีสำหรับการคืนค่าความเร็วและด้วย Google ที่มีการทำงานในโครงการเช่น Unladen Swallow มันจะดีขึ้น
orokusaki

7

ฉันใช้ Django มานานกว่าหนึ่งปีแล้วและรู้สึกประทับใจอย่างมากกับวิธีการที่จะผสมผสานความเป็นโมดูลการปรับขนาดได้และความเร็วในการพัฒนา เช่นเดียวกับเทคโนโลยีใด ๆ มันมาพร้อมกับช่วงการเรียนรู้ อย่างไรก็ตามเส้นโค้งการเรียนรู้นี้ทำน้อยชันมากโดยเอกสารที่ยอดเยี่ยมจากชุมชน Django Django สามารถจัดการทุกอย่างที่ฉันโยนได้ดีมาก ดูเหมือนว่ามันจะสามารถขยายสู่อนาคตได้ดี

BidRodeo Penny Auctionsเป็นเว็บไซต์ Django ที่มีขนาดปานกลาง เป็นเว็บไซต์ที่มีพลวัตมากและจัดการจำนวนการดูหน้าเว็บได้ดีต่อวัน


6

โปรดทราบว่าหากคุณคาดหวังว่าผู้ใช้ 100K ต่อวันที่ใช้งานต่อชั่วโมง (หมายถึงผู้ใช้พร้อมกันสูงสุด 20K +) คุณจะต้องใช้เซิร์ฟเวอร์จำนวนมาก ดังนั้นมีผู้ใช้ที่ลงทะเบียนประมาณ 15,000 คนและส่วนใหญ่อาจไม่ได้ใช้งานทุกวัน ในขณะที่ปริมาณการใช้งานมาจากผู้ใช้ที่ไม่ลงทะเบียน แต่ฉันเดาว่ามีเพียงไม่กี่คนที่อยู่ในไซต์มากกว่าสองนาที

สำหรับไดรฟ์ข้อมูลนั้นคาดว่าจะมีอย่างน้อย 30 เซิร์ฟเวอร์ ... ซึ่งยังคงมีผู้ใช้งานพร้อมกัน 1,000 คนต่อเซิร์ฟเวอร์


2
ปรากฏขึ้นจากพอดคาสต์ที่ SO ใช้เพียง 3 เซิร์ฟเวอร์ แต่ SO นั้นถูกสร้างโดยใช้ C # ไม่ใช่ Python ดังนั้นมันจึงฉีก
S.Lott

1
เห็นได้ชัดว่าคำถามจะเป็น: เซิร์ฟเวอร์ที่มีประสิทธิภาพเท่าไหร่พวกเขา?
mamcx

6

เว็บไซต์ "ใหญ่ที่สุด" ที่สร้างบน Django ในวันนี้คืออะไร (ฉันวัดขนาดส่วนใหญ่ตามปริมาณผู้ใช้) Pinterest
disqus.com
เพิ่มเติมที่นี่: https://www.shuup.com/th/blog/25-of-the-most-popular-python-and-django-websites/

Django สามารถจัดการกับผู้ใช้ 100,000 รายต่อวันแต่ละครั้งที่เข้าชมเว็บไซต์เป็นเวลาสองชั่วโมงหรือไม่?
ใช่ แต่ใช้สถาปัตยกรรมที่เหมาะสมการออกแบบฐานข้อมูลการใช้แคชใช้ load load และเซิร์ฟเวอร์หรือโหนดจำนวนมาก

ไซต์เช่น Stack Overflow สามารถทำงานบน Django ได้หรือไม่
ใช่แค่ต้องทำตามคำตอบที่กล่าวถึงในคำถามที่ 2


5

อีกตัวอย่างหนึ่งคือ rasp.yandex.ru บริการตารางเวลาการขนส่งของรัสเซีย มันเข้าร่วมตอบสนองความต้องการของคุณ


5

หากคุณมีเว็บไซต์ที่มีเนื้อหาคงที่ให้ใส่วานิชเซิร์ฟเวอร์ไว้ด้านหน้าจะช่วยเพิ่มประสิทธิภาพการทำงานของคุณได้อย่างมาก แม้แต่กล่องเดียวก็สามารถคายปริมาณการเข้าชมได้ 100 Mbit / s

โปรดทราบว่าด้วยเนื้อหาแบบไดนามิกการใช้บางสิ่งบางอย่างเช่นวานิชจะกลายเป็นเรื่องยุ่งยากมากขึ้น


1
ปัญหาที่เกิดขึ้นที่นี่คือวานิชจะเพิ่มประสิทธิภาพการทำงานของทุกอย่าง และเฟรมเวิร์กที่เร็วขึ้นจะยังเร็วกว่า
ZJR

5

ประสบการณ์ของฉันกับ Django นั้นน้อยมาก แต่ฉันจำได้ใน The Django Book พวกเขามีบทที่พวกเขาสัมภาษณ์ผู้คนที่ใช้แอพพลิเคชั่น Django ที่ใหญ่กว่า นี่คือลิงค์ ฉันคิดว่ามันสามารถให้ข้อมูลเชิงลึกบางอย่าง

มันบอกว่า curse.com เป็นหนึ่งในแอปพลิเคชั่น Django ที่ใหญ่ที่สุดที่มีประมาณ 60-90 ล้านเพจวิวในหนึ่งเดือน


1
url curse.comตอนนี้ลงท้ายด้วย. aspx ... (dunno หากพวกเขาสร้างมันขึ้นมา)
ZJR

5

ฉันพัฒนาไซต์ที่มีปริมาณการใช้งานสูงโดยใช้ Django สำหรับผู้ประกาศในประเทศไอร์แลนด์ มันทำงานได้ดีสำหรับพวกเรา. การพัฒนาเว็บไซต์ที่มีประสิทธิภาพสูงเป็นมากกว่าแค่การเลือกกรอบงาน เฟรมเวิร์กจะเป็นเพียงส่วนหนึ่งของระบบที่แข็งแกร่งพอ ๆ กับลิงก์ที่อ่อนแอที่สุด การใช้เฟรมเวิร์ก 'X' ล่าสุดจะไม่ช่วยแก้ปัญหาประสิทธิภาพการทำงานของคุณหากปัญหาคือการสืบค้นฐานข้อมูลที่ช้าหรือเซิร์ฟเวอร์หรือเครือข่ายที่กำหนดค่าไม่ดี


4

แม้ว่าจะมีคำตอบที่ยอดเยี่ยมมากมายที่นี่ฉันแค่รู้สึกเหมือนชี้ให้เห็นว่าไม่มีใครให้ความสำคัญกับ ..

ขึ้นอยู่กับแอพพลิเคชั่น

หากแอปพลิเคชั่นของคุณอ่านง่ายเนื่องจากคุณกำลังอ่านข้อมูลจากฐานข้อมูลมากกว่าที่คุณเขียน จากนั้นการปรับขนาด django น่าจะเป็นเรื่องเล็กน้อยเฮ็คมันมาพร้อมกับแคปต์เอาท์พุท / มุมมองที่ค่อนข้างดีออกมาจากกล่อง ใช้ประโยชน์จากสิ่งนั้นและกล่าวว่า Redis ในฐานะผู้ให้บริการแคชวางตัวโหลดบาลานซ์ไว้ข้างหน้าหมุนเอ็น - อินสแตนซ์และคุณควรจะสามารถจัดการกับทราฟฟิกจำนวนมากได้

ทีนี้ถ้าคุณต้องเขียนคอมเพล็กซ์หลายพันอันต่อวินาที? เรื่องราวที่แตกต่าง Django จะเป็นตัวเลือกที่ไม่ดีหรือไม่? ไม่จำเป็นต้องขึ้นอยู่กับวิธีที่คุณออกแบบวิธีแก้ปัญหาของคุณจริง ๆ และสิ่งที่คุณต้องการคืออะไร

แค่สองเซ็นต์ของฉัน :-)




3

ปัญหาคือไม่ทราบว่า django สามารถปรับขนาดได้หรือไม่

วิธีที่ถูกต้องคือการทำความเข้าใจและรู้ว่ารูปแบบการออกแบบเครือข่ายและเครื่องมือใดที่นำมาใช้ในโครงการ django / symfony / rails ของคุณเพื่อขยายขนาด

ความคิดบางอย่างสามารถ:

  • Multiplexing
  • พร็อกซีที่ถูกบุกรุก เช่น Nginx, วานิช
  • Memcache เซสชัน ตัวอย่าง: Redis
  • การทำคลัสเตอร์ในโปรเจ็กต์และ db ของคุณสำหรับการทำโหลดบาลานซ์และการยอมรับข้อผิดพลาด: Ex: Docker
  • ใช้บุคคลที่สามเพื่อจัดเก็บเนื้อหา เช่น Amazon S3

หวังว่ามันจะช่วยได้เล็กน้อย นี่คือหินก้อนเล็ก ๆ ของฉันไปที่ภูเขา


3

หากคุณต้องการใช้โอเพ่นซอร์สมีตัวเลือกมากมายสำหรับคุณ แต่หลามนั้นดีที่สุดในหมู่พวกมันเพราะมันมีห้องสมุดมากมายและชุมชนที่ยอดเยี่ยมมาก นี่คือสาเหตุบางประการที่อาจเปลี่ยนใจของคุณ:

  • Python ดีมาก แต่เป็นภาษาที่ตีความซึ่งทำให้ช้า แต่บริการเร่งความเร็วและแคชจำนวนมากอยู่ที่นั่นซึ่งแก้ปัญหานี้ได้บางส่วน

  • หากคุณกำลังคิดเกี่ยวกับการพัฒนาอย่างรวดเร็ว Ruby on Rails นั้นดีที่สุดในบรรดาทั้งหมด คำขวัญหลักของกรอบ (ROR) นี้คือการให้ประสบการณ์ที่สะดวกสบายแก่นักพัฒนา หากคุณเปรียบเทียบ Ruby และ Python ทั้งคู่จะมีไวยากรณ์เหมือนกันเกือบทั้งหมด

  • Google App Engine เป็นบริการที่ดีมาก แต่มันจะผูกมัดคุณในขอบเขตของมันคุณจะไม่ได้รับโอกาสในการทดลองสิ่งใหม่ ๆ แทนที่จะเป็นคุณสามารถใช้Digital Ocean cloud ซึ่งจะคิดค่าบริการ$ 5 / เดือนสำหรับหยดที่ง่ายที่สุด Herokuเป็นอีกหนึ่งบริการฟรีที่คุณสามารถปรับใช้ผลิตภัณฑ์ของคุณ

  • ใช่ ใช่ สิ่งที่คุณได้ยินนั้นถูกต้องทั้งหมด แต่นี่คือตัวอย่างที่ใช้เทคโนโลยีอื่น

    • Rails: Github, Twitter (ก่อนหน้านี้), Shopify, Airbnb, Slideshare, Heroku เป็นต้น
    • PHP: Facebook, Wikipedia, Flickr, Yahoo, Tumbler, Mailchimp เป็นต้น

บทสรุปเป็นกรอบหรือภาษาจะไม่ทำทุกอย่างเพื่อคุณ สถาปัตยกรรมที่ดีกว่าการออกแบบและกลยุทธ์จะช่วยให้คุณมีเว็บไซต์ที่ปรับขนาดได้ Instagram เป็นตัวอย่างที่ใหญ่ที่สุดทีมเล็ก ๆ นี้กำลังจัดการข้อมูลขนาดใหญ่เช่นนี้ นี่คือหนึ่งบล็อกเกี่ยวกับสถาปัตยกรรมที่ต้องอ่าน


การพัฒนา Django นั้นรวดเร็วมาก Django เป็นเฟรมเวิร์กเว็บสำหรับผู้ที่ชอบความสมบูรณ์แบบพร้อมกำหนดส่ง
les

3

ฉันไม่คิดว่าปัญหานี้เกี่ยวกับการปรับขนาด Django

ฉันขอแนะนำให้คุณดูสถาปัตยกรรมของคุณว่าจะช่วยให้คุณปรับขนาดความต้องการของคุณได้อย่างไรถ้าคุณทำสิ่งนั้นผิดจะไม่มีประเด็นว่า Django ทำงานได้ดีแค่ไหน ประสิทธิภาพ! = สเกล คุณสามารถมีระบบที่มีประสิทธิภาพที่น่าทึ่ง แต่ไม่ได้ปรับขนาดและในทางกลับกัน

ฐานข้อมูลแอปพลิเคชันของคุณถูกผูกไว้หรือไม่ ถ้าเป็นเช่นนั้นปัญหาเรื่องขนาดของคุณก็อยู่ที่นั่นเช่นกัน คุณวางแผนที่จะโต้ตอบกับฐานข้อมูลจาก Django อย่างไร จะเกิดอะไรขึ้นเมื่อฐานข้อมูลของคุณไม่สามารถดำเนินการตามคำขอได้อย่างรวดเร็วเท่าที่ Django ยอมรับ จะเกิดอะไรขึ้นเมื่อข้อมูลของคุณมีขนาดใหญ่กว่าเครื่องจริงเพียงเครื่องเดียว คุณต้องพิจารณาว่าคุณวางแผนรับมือกับสถานการณ์เหล่านั้นอย่างไร

นอกจากนี้จะเกิดอะไรขึ้นเมื่อการรับส่งข้อมูลของคุณมีมากกว่าแอปเซิร์ฟเวอร์หนึ่งตัว วิธีที่คุณจัดการเซสชันในกรณีนี้อาจมีความยุ่งยากบ่อยครั้งกว่าที่คุณไม่ต้องการสถาปัตยกรรมแบบไม่มีการแบ่งปัน อีกครั้งที่ขึ้นอยู่กับใบสมัครของคุณ

ในภาษาสั้น ๆไม่ใช่สิ่งที่กำหนดขนาดภาษามีหน้าที่รับผิดชอบในการปฏิบัติงาน (อีกครั้งขึ้นอยู่กับแอปพลิเคชันของคุณภาษาที่แตกต่างกันมีประสิทธิภาพแตกต่างกัน) มันคือการออกแบบและสถาปัตยกรรมของคุณที่ทำให้การปรับขนาดเป็นจริง

ฉันหวังว่าจะช่วยได้ยินดีที่จะช่วยเหลือเพิ่มเติมหากคุณมีข้อสงสัย


2

การกระจายงานอย่างสม่ำเสมอโดยการปรับให้เหมาะสมในทุก ๆ ด้านรวมถึง DBs, ไฟล์, รูปภาพ, CSS และสมดุลภาระกับทรัพยากรอื่น ๆ เป็นสิ่งจำเป็นเมื่อไซต์ / แอปพลิเคชันของคุณเริ่มเติบโต หรือคุณสร้างพื้นที่เพิ่มเพื่อให้มันเติบโต การนำเทคโนโลยีล่าสุดมาใช้เช่น CDN, Cloud เป็นสิ่งที่ต้องมีในเว็บไซต์ขนาดใหญ่ เพียงแค่การพัฒนาและปรับแต่งแอปพลิเคชั่นจะไม่ให้ความพึงพอใจแก่คุณร้อยละส่วนประกอบอื่น ๆ ก็มีบทบาทสำคัญเช่นกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.