2013-07-26 58 views
5

Có cách nào để lưu hình ảnh vào lưới của mongo và sau khi tải lên không đồng bộ lên S3 ở chế độ nền không?CarrierWave lưu hình ảnh vào lưới và tải lên ở nền s3

Có thể người tải lên chuỗi có thể?

Sự cố tiếp theo: Nhiều máy chủ được sử dụng, do đó - được lưu vào hình ảnh ổ cứng và quá trình chạy nền có thể trên các máy chủ khác nhau.

Cũng 1. cần xóa khỏi gridfs khi được tải lên s3 2. nó sẽ tự động xóa khỏi s3 khi thực thể tương ứng bị hủy.

Cảm ơn.

+0

Không chắc chắn nhưng hãy xem liệu [this] (http://stackoverflow.com/questions/17871568/rails-3-paperclip-can-i-store-images-both-on-s3-locally/17893929#17893929) help – Viren

Trả lời

0

Tôi đã sử dụng biến tạm thời để lưu trữ vào lưới và tạo Worker (xem this) để thực hiện tải lên không đồng bộ từ gridfs thành s3.

Hy vọng điều này sẽ giúp ai đó, cảm ơn.

1

Kiến trúc triển khai của bạn trông như thế nào? Tôi hơi bối rối khi bạn nói "nhiều máy chủ" - bạn có nghĩa là nhiều trường hợp mongod? Ngoài ra, nó là một chút bối rối khi bạn chỉ định yêu cầu của bạn. Theo yêu cầu 1, nếu bạn tải lên S3, thì tệp gridfs sẽ bị xóa. Tuy nhiên, theo yêu cầu của bạn, nó không thể tồn tại trong cả S3 và Gridfs, do đó yêu cầu 2 dường như là mâu thuẫn với cái đầu tiên, tức là, nó không nên tồn tại trong gridfs ngay từ đầu. Bạn đang bảo quản một số tệp trên cả Gridfs và S3?

Nếu bạn đang chạy trong một tập bản sao hoặc cụm phân đoạn, bạn có thể tạo tailable cursor trên bộ sưu tập gridfs của mình (bạn cũng có thể thực hiện việc này trên một nút duy nhất, mặc dù nó không được khuyến nghị). Khi bạn nhìn thấy một thao tác chèn (sẽ giống như 'op': 'i'), bạn có thể thực thi một kịch bản hoặc làm một cái gì đó trong ứng dụng của bạn để lấy tệp từ gridfs và đẩy tệp thích hợp vào s3. Tương tự, khi bạn thấy thao tác xóa ('op': 'd'), bạn có thể xóa tập tin khỏi s3.

Vẻ đẹp của con trỏ tailable là nó cho phép các thao tác không đồng bộ - bạn có thể có một quy trình khác giám sát oplog trên một máy chủ khác và thực hiện các hành động thích hợp.

+0

Tôi có một số máy chủ ứng dụng. Ý tưởng tiếp theo: tải lên đầu tiên vào gridfs (không phải hệ thống tệp cục bộ) và sau đó đến s3 (từ gridfs). Tải lên s3 occures trong nền thông qua Resque. Hệ thống tập tin không hoạt động trong trường hợp này bởi vì Resque có thể chạy trên máy khác, không phải trên đó có chứa tập tin. Vì vậy, gridfs giống như lưu trữ truy cập globaly. –