Django có quy mô không? [đóng cửa]


1135

Tôi đang xây dựng một ứng dụng web với Django. Những lý do tôi chọn Django là:

  • Tôi muốn làm việc với các công cụ miễn phí / nguồn mở.
  • Tôi thích Python và cảm thấy đó là một ngôn ngữ dài hạn , trong khi liên quan đến Ruby tôi không chắc chắn và PHP có vẻ như là một rắc rối lớn để học.
  • Tôi đang xây dựng một nguyên mẫu cho một ý tưởng và đã không nghĩ quá nhiều về tương lai. Tốc độ phát triển là yếu tố chính và tôi đã biết Python.
  • Tôi biết việc di chuyển sang Google App Engine sẽ dễ dàng hơn nếu tôi chọn thực hiện trong tương lai.
  • Tôi nghe nói Django là "tốt đẹp".

Bây giờ tôi đang tiến gần hơn đến suy nghĩ về việc xuất bản tác phẩm của mình, tôi bắt đầu quan tâm đến quy mô. Thông tin duy nhất tôi tìm thấy về khả năng mở rộng của Django được cung cấp bởi nhóm Django (Tôi không nói bất cứ điều gì để coi thường họ, nhưng đây rõ ràng không phải là thông tin khách quan ...).

Những câu hỏi của tôi:

  • Trang web "lớn nhất" nào được xây dựng trên Django ngày nay? (Tôi đo kích thước chủ yếu theo lưu lượng người dùng)
  • Django có thể đối phó với 100.000 người dùng hàng ngày , mỗi người truy cập trang web trong một vài giờ không?
  • Một trang web như Stack Overflow có thể chạy trên Django không?

2
Nếu bạn chưa sẵn sàng, tôi khuyên bạn nên đọc phần trên rộng trong The Django Sách: djangobook.com/en/1.0/chapter20 Hoặc phiên bản mới hơn: djangobook.com/en/2.0/chapter12
monkut

15
Có thể muốn sửa "tốc độ là yếu tố chính" để làm rõ nếu bạn đang nói về tốc độ thực hiện hoặc nỗ lực phát triển. Nghe có vẻ như nỗ lực phát triển, có ý nghĩa.
S.Lott

6
Sẽ rất thú vị khi so sánh điều này với RoR.
Kozyarchuk

6
@ ajkumar25, AFAIK disqus sử dụng django blog.disqus.com/post/62187806135/ .
alxs

6
câu hỏi nên làwhat's the cost of scaling in the Django?
Sławomir Lenart

Câu trả lời:


932
  1. "Các trang web lớn nhất được xây dựng trên Django ngày nay là gì?"

    Không có nơi nào thu thập thông tin về lưu lượng truy cập trên các trang web được xây dựng Django, vì vậy tôi sẽ phải sử dụng dữ liệu từ nhiều địa điểm khác nhau. Đầu tiên, chúng tôi có một danh sách các trang web Django trên trang nhất của trang dự án Django chính và sau đó là danh sách các trang web Django được xây dựng tại djangosites.org . Đi qua các danh sách và chọn một số mà tôi biết có lưu lượng truy cập tốt, chúng tôi thấy:

  2. "Django có thể đối phó với 100.000 người dùng hàng ngày, mỗi người truy cập trang web trong một vài giờ không?"

    Vâng, xem ở trên.

  3. "Một trang web như Stack Overflow có thể chạy trên Django không?"

    Cảm giác ruột của tôi là có, nhưng, như những người khác đã trả lời và Mike Malone đề cập đến trong bài trình bày của mình, thiết kế cơ sở dữ liệu là rất quan trọng. Bằng chứng mạnh mẽ cũng có thể được tìm thấy tại www.cnprog.com nếu chúng tôi có thể tìm thấy bất kỳ số liệu thống kê lưu lượng đáng tin cậy nào. Dù sao, đó không chỉ là điều sẽ xảy ra bằng cách tập hợp một loạt các mô hình Django :)

Tất nhiên, có nhiều trang web và blogger quan tâm hơn, nhưng tôi phải dừng lại ở đâu đó!


Bài đăng trên blog về Sử dụng Django để xây dựng trang web có lưu lượng truy cập cao michaelmoore.com được mô tả là một trang web 10.000 hàng đầu . Số liệu thống kêthống kê cạnh tranh.com .


(*) Tác giả của bản chỉnh sửa, bao gồm tài liệu tham khảo đó, được sử dụng để làm nhà phát triển thuê ngoài trong dự án đó.


267

Chúng tôi đang thực hiện kiểm tra tải ngay bây giờ. Chúng tôi nghĩ rằng chúng tôi có thể hỗ trợ 240 yêu cầu đồng thời (tốc độ duy trì 120 lần truy cập mỗi giây 24x7) mà không làm giảm đáng kể hiệu suất của máy chủ. Đó sẽ là 432.000 lượt truy cập mỗi giờ. Thời gian phản hồi không nhỏ (giao dịch của chúng tôi lớn) nhưng không có sự suy giảm so với hiệu suất cơ bản của chúng tôi khi tải tăng lên.

Chúng tôi đang sử dụng Django và MySQL mặt trước của Apache. Hệ điều hành là Red Hat Enterprise Linux (RHEL). 64-bit. Chúng tôi sử dụng mod_wsgi trong chế độ daemon cho Django. Chúng tôi đã không thực hiện tối ưu hóa bộ đệm hoặc cơ sở dữ liệu ngoài việc chấp nhận mặc định.

Tất cả chúng ta đều ở trong một VM trên Dell 64-bit với RAM 32Gb (tôi nghĩ).

Vì hiệu suất gần như tương đương với 20 hoặc 200 người dùng đồng thời, chúng tôi không cần phải dành thời gian lớn để "điều chỉnh". Thay vào đó, chúng tôi chỉ cần duy trì hiệu suất cơ bản của mình thông qua các cải tiến hiệu suất SSL thông thường, thiết kế và triển khai cơ sở dữ liệu thông thường (lập chỉ mục, v.v.), cải tiến hiệu suất tường lửa thông thường, v.v.

Những gì chúng tôi đo lường là máy tính xách tay thử tải của chúng tôi đang vật lộn dưới khối lượng công việc điên rồ của 15 quy trình chạy 16 luồng yêu cầu đồng thời.


3
Cũng tò mò: DB của bạn đang chạy trên cùng một máy hay một máy chủ riêng biệt?
Jarret Hardie

16
Một VM với Apache, Django và MySQL. mod_wsgi. RĂNG.
S.Lott

4
Bất kỳ cập nhật về các số liệu hiệu suất?
SexyBeast

1
Bạn đưa ra một quan điểm tốt - nếu bạn nghĩ về lưu lượng truy cập trang web của mình như một hàng đợi, thì bạn có thể phục vụ bao nhiêu phản hồi mỗi giờ? Nếu bạn giữ thời gian phản hồi ngắn, bạn có thể phục vụ nhiều hơn và do đó có 'khả năng mở rộng lớn hơn' - thực sự không quan trọng nếu bạn sử dụng Django, Twisted, Rails hoặc công nghệ từ hành tinh Zod.
Ralph Bolton

2
Tôi đã làm việc với Django trong nhiều năm và tôi chưa bao giờ thấy loại hiệu suất này trong bất kỳ thứ gì ngoài ứng dụng đồ chơi hầu hết chỉ đọc. Bản chất của ứng dụng của bạn là gì? Bất cứ điều gì với các mẫu hoặc phần mềm trung gian hoặc phiên hoặc kết nối cơ sở dữ liệu sẽ không bao giờ hỗ trợ 120 lần truy cập mỗi giây mà không có một lượng lớn bộ nhớ đệm để bỏ qua tất cả điều đó.
Cerin

176

Không chắc chắn về số lượt truy cập hàng ngày nhưng đây là một vài ví dụ về các trang web Django lớn:

Dưới đây là một liên kết đến danh sách các trang web Django lưu lượng truy cập cao trên Quora .


107

Trang web "lớn nhất" nào được xây dựng trên Django ngày nay? (Tôi đo kích thước chủ yếu theo lưu lượng người dùng)

Ở Mỹ, đó là Mahalo . Tôi được bảo là họ xử lý khoảng 10 triệu đồng mỗi tháng. Bây giờ, vào năm 2019, Mahalo được cung cấp bởi Ruby on Rails.

Ở nước ngoài, mạng Globo (một mạng lưới các trang web tin tức, thể thao và giải trí ở Brazil); Alexa xếp họ vào top 100 trên toàn cầu (hiện tại là khoảng 80).

Những người dùng Django đáng chú ý khác bao gồm PBS, National Geographic, Discovery, NASA (thực tế là một số bộ phận khác nhau trong NASA) và Thư viện Quốc hội.

Django có thể giao dịch với 100 nghìn người dùng hàng ngày, mỗi người truy cập trang web trong một vài giờ không?

Có - nhưng chỉ khi bạn viết đúng ứng dụng của mình và nếu bạn có đủ phần cứng. Django không phải là một viên đạn ma thuật.

Một trang web như StackOverflow có thể chạy trên Django không?

Có (nhưng xem ở trên).

Công nghệ khôn ngoan, dễ dàng: xem soclone cho một lần thử. Lưu lượng truy cập khôn ngoan, cạnh tranh chốt StackOverflow ở mức dưới 1 triệu đơn vị mỗi tháng. Tôi có thể đặt tên cho ít nhất hàng chục trang Django có lưu lượng truy cập nhiều hơn SO.


2
Bạn có thể vui lòng ước tính giá xấp xỉ cho 5000 lượt truy cập mỗi giây, giả sử nó giống như Linkedin, sử dụng Django. Giả sử một lập trình viên trung bình đã xây dựng trang web và thêm bộ nhớ đệm. Giả sử rằng các thuật toán vv (để làm cho mọi thứ nhanh chóng) không được sử dụng vì tôi chưa sử dụng chúng.
dùng2349115

5
@ user2349115 vào thời điểm ứng dụng của bạn nhận được 5000 'lượt truy cập mỗi giây', bạn sẽ có đủ kiến ​​thức nền tảng để hiểu tại sao đó là câu hỏi sai.
Kye R

Các ninja của tôi (phần mở rộng trình duyệt Wrappalyzer) nói rằng mahalo là ruby ​​trên đường ray được cung cấp vào tháng 3 năm 2019.
Miles Davis

87

Mở rộng ứng dụng Web không phải là về khung hoặc ngôn ngữ web, là về kiến ​​trúc của bạn. Đó là về cách bạn xử lý bộ đệm của trình duyệt, bộ đệm cơ sở dữ liệu của bạn, cách bạn sử dụng các nhà cung cấp bền vững không chuẩn (như CouchDB ), cách điều chỉnh là cơ sở dữ liệu của bạn và rất nhiều thứ khác ...


Khung web làm quan trọng! Hãy xem cơn lốc xoáy nhanh như thế nào so với các webframework khác của python: tornadoweb.org/documentation#performance
Joshua Partogi

Tôi đã không downvote, nhưng tôi cho rằng bạn đã đi sâu vào chủ đề một chút khi họ thảo luận về giá trị của django và bạn không thể sử dụng mọi cơ sở dữ liệu, điều chỉnh cơ sở dữ liệu của bạn và sử dụng couchdb ở mức tối đa trong mọi khung cụ thể. Trừ khi bạn không, tất nhiên, viết lại những phần lớn của nó.
ZJR

8
@ZLR tôi không tin là tôi đã lạc đề. Anh ấy hỏi liệu Django có thể mở rộng quy mô không, tôi nói có, bởi vì hầu hết tất cả các khung web hiện đại, bất kể ngôn ngữ, đều có thể mở rộng nếu bạn sử dụng phương pháp kiến ​​trúc phù hợp
razenha

Yeah, chặn vs nonblocking IO không vấn đề, theo ví dụ Tornado. Mặc dù đã nói rằng, Tornado không phải là một khung web, nhưng ứng dụng của bạn sẽ cần phải được viết theo cách tận dụng lợi thế của việc không chặn IO.
Rob Grant

Với Tornado, việc viết mã IO chặn rất dễ dàng. Và điều đó không mang lại sự đồng thời cao. Khung thực sự không quan trọng.
Shiplu Mokaddim

80

Chơi ma quỷ ủng hộ một chút:

Bạn nên kiểm tra Keynote DjangoCon 2008 , được phân phối bởi Cal Henderson , có tiêu đề "Tại sao tôi ghét Django", nơi anh ấy đi qua tất cả mọi thứ Django đang thiếu mà bạn có thể muốn làm trong một trang web có lưu lượng truy cập cao. Vào cuối ngày, bạn phải thực hiện việc này tất cả chỉ với một tâm trí cởi mở vì nó hoàn toàn có thể viết Django ứng dụng quy mô đó, nhưng tôi nghĩ rằng nó là một bài thuyết trình tốt và phù hợp với câu hỏi của bạn.


3
Ngoài ra, Flickr không được xây dựng trong một ngày.
Deniz Dogan

34
Dường như một số vấn đề mà Cal mắc phải hiện đang là các tính năng tiêu chuẩn: docs.djangoproject.com/en/dev/topics/db/multi-db
Dolph

51

Trang web django lớn nhất mà tôi biết là Washington Post , chắc chắn sẽ chỉ ra rằng nó có thể mở rộng tốt.

Quyết định thiết kế tốt có thể có tác động hiệu suất lớn hơn bất cứ điều gì khác. Twitter thường được coi là một trang web thể hiện các vấn đề về hiệu năng với một khung web dựa trên ngôn ngữ được diễn giải động khác, Ruby on Rails - nhưng các kỹ sư của Twitter đã tuyên bố rằng khung này không phải là vấn đề như một số lựa chọn thiết kế cơ sở dữ liệu mà họ đã đưa ra sớm trên.

Django hoạt động rất độc đáo với memcached và cung cấp một số lớp để quản lý bộ đệm, đây là nơi bạn sẽ giải quyết phần lớn các vấn đề về hiệu suất của mình. Những gì bạn cung cấp trên dây gần như quan trọng hơn phụ trợ của bạn trong thực tế - sử dụng một công cụ như yslow rất quan trọng cho một ứng dụng web hiệu suất cao. Bạn luôn có thể ném thêm phần cứng vào phần phụ trợ của mình, nhưng bạn không thể thay đổi băng thông người dùng.


1
Không phải chỉ là một phần của washingtonpost.com chạy trên Django? Trang nhất của Django dường như chỉ ra rằng nó chỉ là các dự
án.washingtonpost.com / cressress

3
Có lẽ bạn đang nhầm lẫn Washington Post với Washington Times. Tôi tin rằng Times là tất cả trên Django, nhưng nó là một tờ giấy nhỏ hơn nhiều.
Eli

32

Tôi đã có mặt tại hội nghị EuroDjangoCon vào tuần trước và đây là chủ đề của một vài cuộc nói chuyện - bao gồm từ những người sáng lập trang web lớn nhất dựa trên Django, Pownce (slide từ một cuộc nói chuyện ở đây ). Thông điệp chính là không phải Django mà bạn phải lo lắng, mà là những thứ như bộ nhớ đệm phù hợp, cân bằng tải, tối ưu hóa cơ sở dữ liệu, v.v.

Django thực sự có móc cho hầu hết những thứ đó - đặc biệt là bộ nhớ đệm, được thực hiện rất dễ dàng.


24

Tôi chắc chắn rằng bạn đang tìm kiếm một câu trả lời chắc chắn hơn, nhưng xác thực khách quan rõ ràng nhất mà tôi có thể nghĩ đến là Google đẩy Django để sử dụng với khung Máy ứng dụng của mình . Nếu có ai biết và thường xuyên xử lý khả năng mở rộng, thì đó là Google. Từ những gì tôi đã đọc, yếu tố hạn chế nhất dường như là cơ sở dữ liệu phụ trợ, đó là lý do tại sao Google sử dụng ...


Quảng bá Django / Python có thể liên quan nhiều hơn đến chính sách quảng cáo Python của Google như là lựa chọn ngôn ngữ 'Khác' sau C ++?
Giáo sư

Khi tôi phải sử dụng GAE, nó khá gần với thứ gì đó như Tornado ...
Luis Masuelli

18

Như đã nêu trong Sách Django hiệu suất cao và đi qua Cal Henderson này

Xem thêm chi tiết như được đề cập dưới đây:

Không có gì lạ khi nghe mọi người nói rằng Dj Django không mở rộng quy mô . Tùy thuộc vào cách bạn nhìn vào nó, tuyên bố là hoàn toàn đúng hoặc sai một cách rõ ràng. Django, trên chính nó, không quy mô.

Điều tương tự cũng có thể nói về Ruby on Rails, Flask, PHP hoặc bất kỳ ngôn ngữ nào khác được sử dụng bởi một trang web động dựa trên cơ sở dữ liệu.

Tuy nhiên, tin tốt là Django tương tác tuyệt vời với bộ công cụ cân bằng tải và bộ đệm sẽ cho phép nó mở rộng lưu lượng truy cập nhiều như bạn có thể ném vào nó.

Trái với những gì bạn có thể đã đọc trực tuyến, nó có thể làm như vậy mà không cần thay thế các thành phần cốt lõi thường được gắn nhãn là quá chậm cứng như cơ sở dữ liệu ORM hoặc lớp mẫu.

Disqus phục vụ hơn 8 tỷ lượt xem trang mỗi tháng. Đó là một số lượng lớn.

Các đội đã chứng minh Django chắc chắn có quy mô. Kinh nghiệm của chúng tôi ở đây tại Lincoln Loop ủng hộ nó.

Chúng tôi đã xây dựng các trang web Django lớn có khả năng dành cả ngày trên trang chủ Reddit mà không đổ mồ hôi.

Câu chuyện thành công mở rộng của Django gần như quá nhiều để liệt kê vào thời điểm này.

Nó hỗ trợ Disqus, Instagram và Pinterest. Muốn có thêm bằng chứng? Instagram đã có thể duy trì hơn 30 triệu người dùng trên Django chỉ với 3 kỹ sư (2 trong số đó không có sự phát triển phía sau


17

Ngày nay chúng tôi sử dụng nhiều ứng dụng web và trang web cho nhu cầu của chúng tôi. Hầu hết chúng đều rất hữu ích. Tôi sẽ chỉ cho bạn một số trong số chúng được sử dụng bởi python hoặc django.

Bưu điện Washington

Trang web của Washington Post là một nguồn tin tức trực tuyến cực kỳ phổ biến để đi kèm với bài báo hàng ngày của họ. Số lượng lượt xem và lưu lượng truy cập khổng lồ của nó có thể được xử lý dễ dàng bằng khung web Django. Washington Post - 52.2 million unique visitors (March, 2015)

NASA

Trang web chính thức của Cơ quan Hàng không và Vũ trụ Quốc gia là nơi để tìm kiếm tin tức, hình ảnh và video về chuyến thám hiểm không gian đang diễn ra của họ. Trang web Django này có thể dễ dàng xử lý số lượng lớn lượt xem và lưu lượng truy cập. 2 million visitors monthly

Người bảo vệ

The Guardian là một trang web tin tức và phương tiện truyền thông của Anh thuộc sở hữu của Tập đoàn truyền thông Guardian. Nó chứa gần như tất cả nội dung của các tờ báo The Guardian và The Observer. Dữ liệu khổng lồ này được xử lý bởi Django. The Guardian (commenting system) - 41,6 million unique visitors (October, 2014)

YouTube

Chúng ta đều biết YouTube là nơi để tải lên video mèo và thất bại. Là một trong những trang web phổ biến nhất trong sự tồn tại, nó cung cấp cho chúng ta những giờ giải trí video vô tận. Ngôn ngữ lập trình Python cung cấp năng lượng cho nó và các tính năng mà chúng tôi yêu thích.

DropBox

DropBox bắt đầu cuộc cách mạng lưu trữ tài liệu trực tuyến đã trở thành một phần của cuộc sống hàng ngày. Bây giờ chúng tôi lưu trữ hầu hết mọi thứ trong đám mây. Dropbox cho phép chúng tôi lưu trữ, đồng bộ hóa và chia sẻ hầu hết mọi thứ bằng cách sử dụng sức mạnh của Python.

Khảo sát Khỉ

Survey Monkey là công ty khảo sát trực tuyến lớn nhất. Họ có thể xử lý hơn một triệu phản hồi mỗi ngày trên trang web Python viết lại của họ.

Quora

Quora là nơi số một trực tuyến để đặt câu hỏi và nhận câu trả lời từ cộng đồng các cá nhân. Trên trang web Python của họ, các kết quả có liên quan được trả lời, chỉnh sửa và tổ chức bởi các thành viên cộng đồng này.

Một chút

Phần lớn mã cho các dịch vụ và phân tích rút ngắn URL của Bitly đều được xây dựng bằng Python. Dịch vụ của họ có thể xử lý hàng trăm triệu sự kiện mỗi ngày.

Reddit

Reddit được gọi là trang đầu của internet. Đây là nơi trực tuyến để tìm thông tin hoặc giải trí dựa trên hàng ngàn danh mục khác nhau. Bài viết và liên kết được người dùng tạo và được quảng bá lên hàng đầu thông qua phiếu bầu. Nhiều khả năng của Reddit dựa vào Python cho chức năng của chúng.

Hipmunk

Hipmunk là một trang web du lịch tiêu dùng trực tuyến so sánh các trang web du lịch hàng đầu để tìm cho bạn những giao dịch tốt nhất. Các công cụ của trang web Python này cho phép bạn tìm các khách sạn và chuyến bay rẻ nhất cho điểm đến của mình.

Bấm vào đây để biết thêm: 25-of-the-nhất-phổ biến-python-and-django-trang web , What--là một số-nổi tiếng-trang-chạy-on-Django


15

Tôi nghĩ rằng chúng tôi cũng có thể thêm Ứng dụng của Apple cho năm 2011, Instagram , vào danh sách sử dụng django mạnh mẽ.


12

Có nó có thể. Nó có thể là Django với Python hoặc Ruby on Rails. Nó vẫn sẽ mở rộng quy mô.

Có một vài kỹ thuật khác nhau. Đầu tiên, bộ nhớ đệm không được chia tỷ lệ. Bạn có thể có một số máy chủ ứng dụng được cân bằng với nginx làm mặt trước ngoài (các) bộ cân bằng phần cứng. Để mở rộng quy mô về phía cơ sở dữ liệu, bạn có thể đi khá xa với đọc nô lệ trong MySQL / PostgreSQL nếu bạn đi theo cách RDBMS.

Một số ví dụ hay về các trang web lưu lượng truy cập lớn trong Django có thể là:

  • Pownce khi họ vẫn còn ở đó.
  • Discus (người quản lý bình luận chia sẻ chung)
  • Tất cả các trang web liên quan đến tờ báo: Washington Post và những người khác.

Bạn có thể cảm thấy an toàn.


2
Chỉ cần nói rằng ... các mạng xã hội đã chết là một ví dụ về khả năng mở rộng tồi tệ :)
ZJR

3
Tôi không nghĩ rằng cái chết Pownce có liên quan đến vấn đề về khả năng mở rộng.
Kedare

9

Dưới đây là danh sách một số thứ tương đối cao được xây dựng trong Django:

  1. Của Guardian " Điều tra chi phí của MP của bạn " ứng dụng

  2. Politifact.com (đây là một bài đăng trên Blog nói về trải nghiệm (tích cực). Trang web đã giành được Pulitzer.

  3. Ứng dụng đại diện của NY Times

  4. EveryBlock

  5. Peter Harkins, một trong những lập trình viên tại WaPo, liệt kê tất cả những thứ họ đã xây dựng với Django trên blog của mình

  6. Nó hơi cũ, nhưng ai đó từ LA Times đã đưa ra một cái nhìn tổng quan cơ bản về lý do tại sao họ đi với Django.

  7. Câu lạc bộ AV của Onion gần đây đã được chuyển từ (tôi nghĩ Drupal) sang Django.

Tôi tưởng tượng một số các trang web này có thể nhận được hơn 100 nghìn lượt truy cập mỗi ngày. Django chắc chắn có thể thực hiện 100 nghìn lượt truy cập / ngày và hơn thế nữa. Nhưng YMMV trong việc đưa trang web cụ thể của bạn đến đó tùy thuộc vào những gì bạn đang xây dựng.

Có các tùy chọn bộ đệm ở cấp Django (ví dụ: bộ truy vấn bộ đệm và chế độ xem trong memcached có thể làm việc kỳ diệu) và hơn thế nữa (bộ đệm ngược dòng như Squid ). Thông số kỹ thuật của Máy chủ Cơ sở dữ liệu cũng sẽ là một yếu tố (và thường là nơi để phô trương), cũng như mức độ bạn đã điều chỉnh nó. Đừng cho rằng, ví dụ, Django sẽ thiết lập các chỉ mục đúng cách. Đừng cho rằng cấu hình PostgreSQL hoặc MySQL mặc định là đúng.

Hơn nữa, bạn luôn có tùy chọn có nhiều máy chủ ứng dụng chạy Django nếu đó là điểm chậm, với bộ cân bằng tải phần mềm hoặc phần cứng ở phía trước.

Cuối cùng, bạn có đang phục vụ nội dung tĩnh trên cùng một máy chủ với Django không? Bạn đang sử dụng Apache hoặc một cái gì đó như nginx hoặc lighttpd ? Bạn có đủ khả năng sử dụng CDN cho nội dung tĩnh không? Đây là những điều cần suy nghĩ, nhưng tất cả đều rất suy đoán. 100 nghìn lượt truy cập / ngày không phải là biến số duy nhất: bạn muốn chi bao nhiêu? Bạn có bao nhiêu chuyên môn để quản lý tất cả các thành phần này? Bao nhiêu thời gian bạn phải kéo tất cả lại với nhau?


9

Nhà phát triển ủng hộ YouTube đã nói về quy mô Python tại PyCon 2012 , cũng liên quan đến việc nhân rộng Django.

YouTube có hơn một tỷ người dùng và YouTube được xây dựng trên Python.


3
Nhưng youtube không được xây dựng với django. Python có thể nhanh, nhưng không phải vậy đối với django.
Joshua Partogi

4
Phải, nhưng vấn đề là khi Django phát triển, nó đang dựa trên nền tảng tốt để tái hiện tốc độ và với Google đang làm việc trên các dự án như Unladen Swallow, mọi chuyện sẽ tốt hơn.
orokusaki

7

Tôi đã sử dụng Django hơn một năm nay và rất ấn tượng với cách nó quản lý để kết hợp mô đun, khả năng mở rộng và tốc độ phát triển. Giống như với bất kỳ công nghệ, nó đi kèm với một đường cong học tập. Tuy nhiên, đường cong học tập này được thực hiện ít dốc hơn bởi tài liệu tuyệt vời từ cộng đồng Django. Django đã có thể xử lý tất cả mọi thứ tôi đã ném vào nó thực sự tốt. Có vẻ như nó sẽ có thể mở rộng quy mô tốt trong tương lai.

BidRodeo Penny Auctions là một trang web Django có kích thước vừa phải. Đây là một trang web rất năng động và xử lý số lượt xem trang tốt mỗi ngày.


6

Lưu ý rằng nếu bạn mong đợi 100K người dùng mỗi ngày, hoạt động hàng giờ liền (nghĩa là tối đa 20K + người dùng đồng thời), bạn sẽ cần RẤT NHIỀU máy chủ. SO có ~ 15.000 người dùng đã đăng ký và hầu hết trong số họ có thể không hoạt động hàng ngày. Mặc dù phần lớn lưu lượng truy cập đến từ người dùng chưa đăng ký, tôi đoán rằng rất ít trong số họ ở lại trang web hơn một vài phút (tức là họ theo dõi kết quả tìm kiếm của google sau đó rời đi).

Đối với khối lượng đó, mong đợi ít nhất 30 máy chủ ... vẫn là 1.000 người dùng đồng thời khá nặng trên mỗi máy chủ.


2
Nó xuất hiện từ podcast rằng SO chỉ sử dụng 3 máy chủ. Nhưng SO được xây dựng bằng C #, không phải Python, vì vậy nó trích xuất.
S.Lott

1
Rõ ràng câu hỏi sẽ là: Chúng có bao nhiêu máy chủ mạnh mẽ?
mamcx

6

Trang web "lớn nhất" nào được xây dựng trên Django ngày nay? (Tôi đo kích thước chủ yếu là do lưu lượng người dùng) Pinterest
disqus.com
đây thêm: https://www.shuup.com/en/blog/25-of-the-most-popular-python-and-django-websites/

Django có thể đối phó với 100.000 người dùng hàng ngày, mỗi người truy cập trang web trong một vài giờ không?
Có nhưng sử dụng kiến ​​trúc phù hợp, thiết kế cơ sở dữ liệu, sử dụng bộ đệm, sử dụng cân bằng tải và nhiều máy chủ hoặc nút

Một trang web như Stack Overflow có thể chạy trên Django không?
Có, chỉ cần làm theo câu trả lời được đề cập trong câu hỏi thứ 2


5

Một ví dụ khác là rasp.yandex.ru, dịch vụ lịch trình vận chuyển của Nga. Tham dự của nó đáp ứng yêu cầu của bạn.


5

Nếu bạn có một trang web có một số nội dung tĩnh, thì việc đặt máy chủ Varnish ở phía trước sẽ tăng đáng kể hiệu suất của bạn. Ngay cả một hộp duy nhất sau đó có thể dễ dàng phun ra 100 Mbit / s lưu lượng.

Lưu ý rằng với nội dung động, việc sử dụng một cái gì đó như Varnish trở nên khó khăn hơn rất nhiều.


1
Vấn đề ở đây là véc ni sẽ làm tăng đáng kể hiệu suất của mọi thứ. Và khung nhanh hơn vẫn sẽ nhanh hơn.
ZJR

5

Trải nghiệm của tôi với Django là tối thiểu nhưng tôi nhớ trong Cuốn sách Django họ có một chương nơi họ phỏng vấn những người chạy một số ứng dụng Django lớn hơn. Đây là một liên kết. Tôi đoán nó có thể cung cấp một số hiểu biết.

Nó cho biết curse.com là một trong những ứng dụng Django lớn nhất với khoảng 60-90 triệu lượt xem trang trong một tháng.


1
curse.com url bây giờ kết thúc bằng .aspx ... (dunno nếu họ chế tạo chúng)
ZJR

5

Tôi phát triển các trang lưu lượng truy cập cao bằng Django cho đài truyền hình quốc gia ở Ireland. Nó hoạt động tốt cho chúng tôi. Phát triển một trang web hiệu suất cao không chỉ đơn thuần là chọn một khung. Một khung sẽ chỉ là một phần của hệ thống mạnh như liên kết yếu nhất. Sử dụng khung mới nhất 'X' sẽ không giải quyết được các vấn đề về hiệu suất của bạn nếu sự cố là truy vấn cơ sở dữ liệu chậm hoặc máy chủ hoặc mạng được cấu hình kém.


4

Mặc dù đã có rất nhiều câu trả lời tuyệt vời ở đây, tôi chỉ cảm thấy muốn chỉ ra rằng không ai nhấn mạnh vào ..

Nó phụ thuộc vào ứng dụng

Nếu ứng dụng của bạn nhẹ khi ghi, vì trong bạn đang đọc nhiều dữ liệu từ DB hơn là bạn đang viết. Sau đó, quy mô django nên khá tầm thường, quái, nó đi kèm với một số đầu ra / xem bộ nhớ cache khá tốt ra khỏi hộp. Sử dụng điều đó, và nói, làm lại như một nhà cung cấp bộ đệm, đặt một bộ cân bằng tải trước nó, quay các trường hợp n và bạn sẽ có thể xử lý một lượng lớn lưu lượng RẤT.

Bây giờ, nếu bạn phải làm hàng ngàn phức tạp viết một giây? Một câu chuyện khác. Django sẽ là một lựa chọn tồi? Vâng, không nhất thiết, phụ thuộc vào cách bạn kiến ​​trúc sư giải pháp của bạn thực sự, và cũng, yêu cầu của bạn là gì.

Chỉ hai xu của tôi :-)




3

Vấn đề là không biết liệu django có thể mở rộng quy mô hay không.

Cách đúng đắn là hiểu và biết các mẫu và công cụ thiết kế mạng nào được đặt trong dự án django / symfony / rails của bạn để mở rộng quy mô.

Một số ý tưởng có thể là:

  • Ghép kênh.
  • Đảo ngược proxy. Vd: Nginx, Varnish
  • Phiên Memcache. Vd: Redis
  • Phân cụm trên dự án và db của bạn để cân bằng tải và chịu lỗi: Ex: Docker
  • Sử dụng bên thứ ba để lưu trữ tài sản. Vd: Amazon S3

Hy vọng nó sẽ giúp một chút. Đây là tảng đá nhỏ của tôi lên núi.


3

Nếu bạn muốn sử dụng Nguồn mở thì có nhiều tùy chọn cho bạn. Nhưng python là tốt nhất trong số đó vì nó có nhiều thư viện và một cộng đồng siêu tuyệt vời. Đây là một vài lý do có thể thay đổi suy nghĩ của bạn:

  • Python là rất tốt nhưng nó là một ngôn ngữ diễn giải làm cho nó chậm. Nhưng nhiều dịch vụ tăng tốc và bộ nhớ đệm có một phần giải quyết vấn đề này.

  • Nếu bạn đang nghĩ về sự phát triển nhanh chóng thì Ruby on Rails là tốt nhất trong số tất cả. Phương châm chính của khung (ROR) này là mang lại trải nghiệm thoải mái cho các nhà phát triển. Nếu bạn so sánh Ruby và Python thì cả hai đều có cùng một cú pháp.

  • Google App Engine là dịch vụ rất tốt nhưng nó sẽ ràng buộc bạn trong phạm vi của nó, bạn không có cơ hội thử nghiệm những điều mới. Thay vì nó, bạn có thể sử dụng đám mây Digital Ocean , sẽ chỉ mất 5 đô la / tháng cho giọt đơn giản nhất của nó. Heroku là một dịch vụ miễn phí khác, nơi bạn có thể triển khai sản phẩm của mình.

  • Đúng! Đúng! Những gì bạn nghe là hoàn toàn chính xác nhưng đây là một số ví dụ đang sử dụng các công nghệ khác

    • Rails: Github, Twitter (trước đây), Shopify, Airbnb, Sl slideshoware, Heroku, v.v.
    • PHP: Facebook, Wikipedia, Flickr, Yahoo, Tumbler, Mailchimp, v.v.

Kết luận là một khuôn khổ hoặc ngôn ngữ sẽ không làm mọi thứ cho bạn. Một kiến ​​trúc, thiết kế và chiến lược tốt hơn sẽ cung cấp cho bạn một trang web có thể mở rộng. Instagram là ví dụ lớn nhất, nhóm nhỏ này đang quản lý dữ liệu khổng lồ như vậy. Đây là một blog về kiến ​​trúc của nó phải đọc nó.


Phát triển Django có thể rất nhanh. Django là khung web cho những người cầu toàn với thời hạn.
les

3

Tôi không nghĩ vấn đề thực sự là về tỉ lệ Django.

Tôi thực sự khuyên bạn nên nhìn vào kiến ​​trúc của mình, điều đó sẽ giúp bạn với nhu cầu mở rộng của bạn. Nếu bạn hiểu sai thì không có vấn đề gì về việc Django hoạt động tốt như thế nào. Hiệu suất! = Tỷ lệ. Bạn có thể có một hệ thống có hiệu suất tuyệt vời nhưng không mở rộng và ngược lại.

Là cơ sở dữ liệu ứng dụng của bạn bị ràng buộc? Nếu đó là vấn đề quy mô của bạn cũng nằm ở đó. Làm thế nào bạn có kế hoạch tương tác với cơ sở dữ liệu từ Django? Điều gì xảy ra khi cơ sở dữ liệu của bạn không thể xử lý các yêu cầu nhanh như Django chấp nhận chúng? Điều gì xảy ra khi dữ liệu của bạn vượt xa một máy vật lý. Bạn cần tính đến cách bạn lên kế hoạch đối phó với những trường hợp đó.

Hơn nữa, Điều gì xảy ra khi lưu lượng truy cập của bạn vượt quá một máy chủ ứng dụng? Làm thế nào bạn xử lý các phiên trong trường hợp này có thể khó khăn, thường xuyên hơn không bạn có thể yêu cầu một kiến ​​trúc không chia sẻ. Một lần nữa điều đó phụ thuộc vào ứng dụng của bạn.

Trong các ngôn ngữ ngắn không phải là yếu tố quyết định tỷ lệ, một ngôn ngữ chịu trách nhiệm về hiệu suất (một lần nữa tùy thuộc vào ứng dụng của bạn, các ngôn ngữ khác nhau thực hiện khác nhau). Chính thiết kế và kiến ​​trúc của bạn làm cho quy mô trở thành hiện thực.

Tôi hy vọng nó có ích, sẽ rất vui lòng giúp thêm nếu bạn có thắc mắc.


2

Phân bổ đều các nhiệm vụ, tối ưu hóa ngắn gọn từng khía cạnh bao gồm DB, Tệp, Hình ảnh, CSS, v.v. và cân bằng tải với một số tài nguyên khác là cần thiết khi trang web / ứng dụng của bạn bắt đầu phát triển. HOẶC bạn tạo thêm không gian cho nó phát triển. Việc triển khai các công nghệ mới nhất như CDN, Cloud phải có với các trang web lớn. Chỉ cần phát triển và điều chỉnh một ứng dụng sẽ không mang lại cho bạn sự hài lòng phần trăm, các thành phần khác cũng đóng một vai trò quan trọng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.