对于有大量文件上传的需求,有很多的方法可以解决。其中用的比较多的方案就是使用nginx upload module这个nginx插件。如果仅仅是单机处理,直接在nginx上配置上upload module就可以了。但是实际上,为了满足更多更大的文件上传需求,如何才能做到集群华部署?这是一个可以深入研究的课题。
单机部署有两种模式,如下图: 场景1为没有前端的方式,此种方式最简单。场景二中增加了前端服务器,不过对于nginx upload module没有影响。
这两种方式都存在明显的缺点, 对于文件上传的需求来说,都只能是将文件上传到单一的服务器中。这种方式大大限制了upload module的发展空间。对于大量文件上传请求,远远不能满足并发的需求。本文在这种单机部署的情况,提出了upload module在分布式系统中的集成方式。
一般来说,分布式应用的架构可以简化成以下模式:
针对于这种分布模式,提出以下两种设计方案:
1. 方案1:
如下图:
2. 方案2:
如下图:
方案2中nginx前端只能使用ip hash等能够将同一个客户端请求传递都同一个应用服务器的算法,原因为nginx upload module 的ajax获取上传进度的process bar 必须要通过同一个应用服务器处理才行。
原文:http://blog.csdn.net/codelifeofme/article/details/19816577