2009-07-22 30 views
7

Tôi đoán câu hỏi này đã được hỏi rất nhiều. Tôi biết Đường ray có thể mở rộng vì tôi đã làm việc trên đó và nó thật tuyệt vời. Và không có nhiều nghi ngờ về điều đó như xa như khung PHP có liên quan.Chi phí nhân rộng Rails so với chi phí mở rộng khung PHP và Python

Tôi không muốn biết khung nào tốt hơn.

Mức chênh lệch về chi phí nhân rộng Rails so với các khung công tác khác (PHP, Python) giả định một ứng dụng lớn với 1 triệu lượt truy cập mỗi tháng là bao nhiêu?

Đây là thứ tôi được hỏi rất nhiều. Tôi có thể giải thích cho mọi người rằng "Rails có quy mô khá tốt" nhưng về lâu dài, nền kinh tế là gì?

Nếu ai đó có thể cung cấp một số chỉ số, điều đó thật tuyệt vời.

+2

Tôi cũng rất tò mò nhưng tôi thực sự nghi ngờ có bất kỳ câu trả lời cụ thể nào cho câu hỏi này. Có quá nhiều biến. Thiết kế trang web, giá trị của thời gian lập trình so với thời gian máy, v.v. Tôi nghĩ rằng có những ví dụ về các trang web lớn cho hầu hết các nền tảng, –

Trả lời

5

Một yếu tố chính trong việc này là không bị ảnh hưởng bởi việc chọn khung là truy cập cơ sở dữ liệu. Cho dù bạn có cách tiếp cận nào, bạn có thể đặt dữ liệu vào cơ sở dữ liệu quan hệ. Sau đó, câu hỏi là làm thế nào hiệu quả bạn có thể lấy dữ liệu ra khỏi cơ sở dữ liệu. Điều này chủ yếu phụ thuộc vào RDBMS (Oracle so với Postgres so với MySQL), chứ không phải trên khung công tác - ngoại trừ một số thư viện ánh xạ dữ liệu có thể sử dụng SQL không hiệu quả.

Đối với tham số "số lượt truy cập" thuần túy, câu hỏi thực sự là hệ thống tạo khuôn mẫu HTML của bạn hoạt động nhanh đến mức nào. Vì vậy, câu hỏi là: có bao nhiêu trang bạn có thể hiển thị mỗi giây? Tôi sẽ làm cho điều này là số liệu chính để xác định mức độ tốt của một hệ thống.

Tất nhiên, các trang khác nhau có thể có các chi phí khác nhau; đối với một số người, bạn có thể sử dụng bộ nhớ đệm, nhưng không thể sử dụng cho người khác. Vì vậy, trong việc đo lường khả năng mở rộng, hãy chia nhỏ 1 triệu lượt truy cập của bạn thành các trang rẻ tiền và đắt tiền và đo lường chúng một cách riêng biệt. Cùng nhau, họ nên đưa ra ước tính tốt về tải trọng mà hệ thống của bạn có thể thực hiện (hoặc số lượng hệ thống bạn cần để đáp ứng nhu cầu).

Ngoài ra còn có vấn đề về sử dụng bộ nhớ. Nếu bạn có dữ liệu trong SQL, điều này không quan trọng - nhưng với bộ nhớ đệm, bạn cũng có thể cần xem xét khả năng mở rộng. sử dụng bộ nhớ chính.

4

IMHO Tôi không nghĩ rằng chi phí của việc chia tỷ lệ sẽ khác biệt giữa ba điều này vì không có thiết bị nào có "pin có thể mở rộng" được bao gồm. Tôi không thấy bất kỳ sự khác biệt lớn về kiến ​​trúc giữa ba lựa chọn đó sẽ gây ra sự khác biệt đáng kể trong việc mở rộng quy mô.

Nói cách khác, kiến ​​trúc ứng dụng của bạn sẽ thống trị cách quy mô ứng dụng không phụ thuộc vào ba ngôn ngữ nào.

Nếu bạn cần bộ nhớ đệm, bạn sẽ sử dụng ít nhất memcached (hoặc một cái gì đó tương tự sẽ giao tiếp với cả ba ngôn ngữ). Có lẽ bạn giúp khả năng mở rộng của bạn bằng nginx để phục vụ trực tiếp từ memcache, nhưng rõ ràng là sẽ không thay đổi hiệu suất của php/perl/python/ruby.

Nếu bạn sử dụng MySQL hoặc Postgresql, bạn sẽ phải thiết kế cơ sở dữ liệu của mình một cách chính xác cho việc chia tỷ lệ bất kể ngôn ngữ ứng dụng của bạn và bất kỳ công cụ nào bạn sử dụng để bắt đầu phân cụm/phản chiếu sẽ nằm ngoài ứng dụng của bạn.

Tôi nghĩ về mặt sử dụng bộ nhớ Python (với chế độ daemon mod_wsgi) và Ruby (doanh nghiệp ruby ​​với hành khách/mod_rack) có dấu chân khá phong phú ít nhất có thể so sánh với PHP theo fcgi và có lẽ tốt hơn PHP dưới mod_php (tức là apache MPM prefork + php trong tất cả các quá trình apache hút rất nhiều bộ nhớ).Ở đây, câu hỏi này có thể thú vị khi so sánh 3 ngôn ngữ đó với Erlang, nơi bạn được cho là có khả năng mở rộng được xây dựng sẵn trong tất cả các quy trình Erlang, nhưng thậm chí bạn sẽ bị tắc nghẽn cơ sở dữ liệu RDBMS. trừ khi ứng dụng của bạn độc đáo phù hợp với một trong những cách cơ sở dữ liệu Erlang làm việc, ví dụ couchdb.

1

Thật không may, tôi không biết bất kỳ so sánh chi phí nào của Rails, PHP và Django. Nhưng tôi biết so sánh chi phí của một số khung công tác web Java: Spring (9k $), Wicket (59k $), GWT (6k $) và JSF (49k $).

Bạn có buổi họp ban đầu ở đây:

http://www.devoxx.com/display/DV11/WWW++World+Wide+Wait++A+Performance+Comparison+of+Java+Web+Frameworks

Ở đó bạn có một bài về nó (ngắn hơn):

http://blog.websitesframeworks.com/2013/03/web-frameworks-benchmarks-192/

Nếu bạn muốn thử infere về chi phí này . Bạn có thể vượt qua dữ liệu này với các bencharmk bởi Techempower đề xuất:

http://www.techempower.com/benchmarks/

Vì vậy, nếu bạn biết mùa xuân là khá rẻ so với wicket và Django/Rails có dấu tồi tệ hơn trong tiêu chuẩn hơn wicket và mùa xuân, nó có thể có nghĩa là chúng sẽ đại diện cho chi phí cao hơn.

Hy vọng điều đó sẽ hữu ích.

Các vấn đề liên quan