Рельсы, скрепка и балансировщик нагрузки

#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, а затем назначить файл вашему устройству загрузки скрепок.

Надеюсь, это поможет.