#ruby-on-rails #image #paperclip #load-balancing
#ruby-on-rails #изображение #скрепка #балансировка нагрузки
Вопрос:
Я был в порядке, используя плагин Paperclip для моего приложения Rails для управления изображениями аватара моего пользователя в файловой системе.
Теперь мне нужно выполнить балансировку нагрузки, что вынуждает меня размещать изображение где-нибудь в центре для совместного использования на нескольких серверах.
Я обнаружил, что скрепка не может перейти к пользовательскому хосту ресурсов. Скрепка может использовать S3, но я ищу альтернативный способ, не используя S3. Есть идеи, ребята?
Ответ №1:
Скрепка поддерживает Fog, см. /lib/paperclip/storage/fog.rb и http://fog.io . С их веб-сайта:
Независимо от того, нужны ли вам вычисления, dns, хранилище или множество других сервисов, fog обеспечивает доступную точку входа и облегчает совместимость между сервисами.
Ответ №2:
Я использую Carrierwave для загрузки на S3, поскольку наш хост, Heroku, позволяет хранить файлы только удаленно. Однако вы также можете использовать Carrierwave для загрузки в другие службы хранения, такие как Rackspace. Изначально, как и у вас, у меня были проблемы с балансировкой нагрузки. Поскольку загрузка файла теоретически привела бы к зависанию приложения до завершения загрузки.
Я нашел способ обойти это, загрузив напрямую в нашу службу хранения с помощью javascript. Я использовал jQuery и Uploadify специально для этого. Загрузка напрямую не занимает весь http-поток, что в значительной степени выравнивает баланс нагрузки на сервере.
Что я бы посоветовал, если вы все же решите использовать Paperclip, так это загрузить напрямую в службу хранения (или даже на ваш собственный сервер, если ваш серверный узел это позволяет), используя javascript, а затем назначить файл вашему устройству загрузки скрепок.
Надеюсь, это поможет.