2011-10-12 24 views
5

Tôi có một câu hỏi liên quan đến việc lưu trữ ứng dụng đường ray giao thông cao. Vấn đề là tôi có 3/4 năm kinh nghiệm với các ứng dụng Ruby on Rails nhưng tôi chưa bao giờ có một trang web lưu lượng truy cập cao trước đây. Tôi thực sự vui mừng vì đây là "cấp độ tiếp theo" cho tôi và đồng nghiệp của tôi. Vấn đề là chúng tôi không có kinh nghiệm với một ứng dụng đường ray để xử lý "lưu lượng truy cập cao", trước hết hãy để tôi xác định "lưu lượng truy cập cao" trong trường hợp này.Các câu hỏi về lưu trữ cho ứng dụng đường ray "cao"

Chúng tôi đang phát triển một ứng dụng đường ray cho một trong những nhà cung cấp viễn thông hàng đầu Hà Lan và khoảng. khách truy cập mỗi ngày sẽ có khoảng 400.000 người dùng. Chúng tôi đang lập trình Ruby ruby ​​1.9.2 và Rails 3.1. Chúng tôi đang sử dụng thiết lập để xử lý xác thực. Nhưng chúng tôi đang tìm kiếm một bên đáng tin cậy để lưu trữ ứng dụng này. Chúng tôi đang xem xét Heroku nhưng tôi không có một đầu mối những gì tôi cần và bao nhiêu công nhân, dyno và/hoặc cơ sở dữ liệu chuyên dụng tôi cần. Chúng ta cần xem phim và chúng tôi đang lên kế hoạch để lưu trữ chúng trên một xô amazon s3.

Vì vậy, vấn đề là tôi đang tìm kiếm lời khuyên liên quan đến Heroku và/hoặc các bên chuyên nghiệp và đáng tin cậy khác. Có những điều tôi cần phải xem xét liên quan đến các ứng dụng đường ray?

Cảm ơn!

Trả lời

9

Nó khá dễ dàng để làm việc nó ra về mặt dynos.

Một dyno là chuỗi duy nhất vì vậy nếu trang của bạn mất 200ms để hiển thị, bạn có thể hiển thị 5 trang mỗi giây. Bạn cần phải tìm ra bao nhiêu trang/giây mà 400.000 người dùng sẽ thực hiện. Sau đó, bạn biết có bao nhiêu trang/giây đang được yêu cầu và những gì một dyno đơn có thể xử lý. Vì vậy, bạn chỉ đơn giản là tăng bạn dyno đếm cho đến khi bạn đáp ứng yêu cầu người dùng của bạn cho mỗi con số thứ hai.

ví dụ 1 Dyno @ 200ms = 5 trang mỗi giây 2 dynos @ 200ms = 10 trang mỗi giây

vv vv Đó chỉ là một con số công viên bóng như có sẽ được các yếu tố khác như hiệu suất DB vv nhưng yên tâm Heroku là phù hợp cho loại kịch bản này vì nó chỉ là dễ dàng như vậy để thêm dynos hơn để tăng thông qua đặt.

Bạn sẽ cần phải sử dụng công nhân cho bất kỳ sự kiện chạy dài nào, ví dụ như gửi email, v.v. có bên thứ ba có thể mất thời gian để trả lời và xử lý hàng đợi nếu ứng dụng của bạn sử dụng chúng.

Một khi bạn đi qua cơ sở dữ liệu 20Gb thì bạn cần phải sử dụng cơ sở dữ liệu chuyên dụng và có vẻ như từ khách hàng rằng $ 200 mỗi tháng khởi động DB sẽ không làm cho họ đổ mồ hôi trong tersm chi phí lưu trữ.

Tôi có nhớ gì không? Nếu tôi quay lại với tôi,

+0

với 1 dyno bạn có nghĩa là một trang web hoặc một công nhân dyno? Và một công nhân dyno làm gì? Tôi có thể thấy điều này là quá trình tải lên kẹp giấy và thao tác hình ảnh rmagick/imagemagick không? –

+1

Vì vậy, nó hơi khó hiểu. Nó từng là dynos (cho web) và công nhân (cho các công việc nền). Trên ngăn xếp mới 'Cedar' bạn chỉ có các quy trình. Một công nhân nên được sử dụng cho bất cứ điều gì có thể được thực hiện trong nền hoặc có thể mất một thời gian dài. Nếu bạn không thì những thứ như thay đổi kích thước hình ảnh trong cùng một yêu cầu như trang web sẽ có nghĩa là dyno (hoặc quá trình web) không thể xử lý các nội dung khác trong khi nó bận. Vì vậy, trong các yêu cầu sắp tới sẽ được xếp hàng đợi và cuối cùng đã hết thời gian chờ nếu chúng không nhận được phản hồi trong vòng 30 giây. –

+0

Cảm ơn sự giúp đỡ của bạn! Tôi có một câu hỏi khác liên quan đến an ninh. Có những thứ tôi cần phải suy nghĩ? Tôi có cần phải làm cho id của ngẫu nhiên và không thể đoán trước? Và cách tốt nhất để làm điều đó là gì ?! –