peinhu / AetherUpload-Laravel

A Laravel package to upload large files 上传大文件的Laravel扩展包
GNU General Public License v2.0
919 stars 126 forks source link

请问分布式上传文件怎么做到? #30

Closed breezefeng closed 5 years ago

breezefeng commented 6 years ago

现在我这里有一个场景: 大文件分片上传,等文件上传完成后再合并,现在由于我们的机器有两台,所以不同的小文件会随机上传到两台服务器上,这就给文件合并带来了问题 所以针对这种情况你们有好的解决方案没

peinhu commented 6 years ago

@breezefeng 这个是一边上传一边合并,不是全部上传完成后再合并的。根据你的情况,建议专门弄一台服务器来支持文件上传和储存,文件上传服务不要和web服务器集群混在一起。我目前在开发的上传分离模式,可以让网站的web服务和上传服务完全分开,web服务器不中转和暂存任何文件,所有文件上传都由储存服务器负责,供你参考。

peinhu commented 6 years ago

@breezefeng 目前还有个临时解决方案,可以应付瞬时压力不大的小批量文件上传,也是需要另外弄一台储存服务器,然后这个服务器使用nfs将它的硬盘挂载(mount)到你的那两台web服务器上,这样看上去就像它们的本地硬盘一样,然后那两台web服务器就把上传文件的保存地址设置成这个mount过来的地址,这样它们上传文件保存的地址就是同一个了。
如果实在只有两台服务器也可以,你把一台的目录mount到另一台上去,但是会一定程度上影响提供nfs服务的那台web服务器的性能。

peinhu commented 5 years ago

AetherUpload 2 已发布,根据用户反馈和需求,添加分布式部署支持、添加Mime-Type检查、添加头文件redis储存驱动、添加跨域中间件、添加秒传开关配置项、添加自定义黑名单配置项、代码重构优化。
分布式上传文件已支持。现集中关闭已解决问题,如仍有疑问请跟帖留言。