Rails 如果有很多台 web server 同时使用 CarrierWave 的话,那么文件存储和 background worker 有没有更好的 solution for shared space

hlxwell · 2014年02月27日 · 最后由 zgm 回复于 2014年02月27日 · 2340 次阅读

如题。

除了远程 mount 一个 folder 之类的方法以外,有没有一个什么方法可以用在 aws, 或者 azure 这里云服务上的,提供一个比如可以 mount 一个空间到两个 instance 上的,直接可以使用。

因为远程 mount 不是一个非常可靠的方法。个人感觉。

补充

CarrierWave 有一个 Cache 的功能,这个是最大一个坑。当你有多台服务器的时候。这个假设服务器 a,你上传了 cache 文件,表单提交失败,然后你再提交一次,提交到服务器 b 上了,然后就找不到刚才提交的文件了。

这个时候需要用到 shared storage。求各种优秀方案

如果都是小文件,放到 mongodb 里面

前几天做了 rails4 + ckeditor + CarrierWave + qiniu, 遇到不少坑.

CarrierWave 支持 S3,S3 就是共享的啊。

#4 楼 @Rei #2 楼 @ywencn

CarrierWave 有一个 Cache 的功能,这个是最大一个坑。当你有多台服务器的时候。这个假设服务器 a,你上传了 cache 文件,表单提交失败,然后你再提交一次,提交到服务器 b 上了,然后就找不到刚才提交的文件了。

#4 楼 @Rei #3 楼 @zgm #2 楼 @ywencn

Double checked the source code,基本上 cache 这个部分也全部都是本地文件的操作, 临时文件不支持 S3 什么的。所以必须使用一个 shared space.

Ok found it. 大家很快就能解决这个问题,已经有人打了补钉,等啥时候 merge 到 master 后就能用了。 https://github.com/carrierwaveuploader/carrierwave/pull/1312 #4 楼 @Rei #3 楼 @zgm #2 楼 @ywencn #1 楼 @bhuztez

需要 登陆 后方可回复, 如果你还没有账号请 注册新账号