日期:2014-05-17  浏览次数:20622 次

请教一个关于文件服务器与Web服务器通信的问题
本帖最后由 LonelyCoder2012 于 2014-03-27 20:51:33 编辑
现在有这样一个应用场景:
搭建了一个网站提供视频播放和文档预览的功能,单个文件大小不超过1GB,用户数量级大致是几千人,现在我手上有三台服务器,但是我从来没有组建多台服务器的经验,于是就不知道各台服务器都要做些什么。
现在有一点是确定的,三台中的一台服务器一定是数据库服务器,关于剩下两台服务器的使用方法我和同事产生了分歧。

我的方案:
服务器A做Web服务器,完成业务逻辑,同时存储转码后的文档和视频(因为视频需要转码才能在线播放,文档也需要转码才能在线预览),把文件信息写入数据库;服务器B做文件服务器,上面只有一个linux系统,只提供文件存储服务,所有的文档和视频的原始文件都存储在这里。Web服务器和文件服务器通过nfs进行文件共享。

同事的方案:
服务器A做Web服务器,仅仅提供业务逻辑;服务器B做文件服务器,上面运行一个静态Web服务器如Nginx,原始文件上传、文件转码、转码后的文件存储以及文件信息写入数据库都在这台服务器上完成。用户向Web服务器请求页面后,页面上的视频播放插件会再向文件服务器请求转码后的视频或文档。

我的方案可以实现文件服务和web服务的完全分离,而且各自分工很明确,也很独立,以后如果需要对文件服务器进行增加也很方便。但是听同事说,像我这样会导致Web服务器负载过大,所有的流量都会从Web服务器过,还需接收上传文件和解析视频文件,容易服务器卡死。
可是我觉得照他的做法,两台服务器都暴露给外网不安全,两台服务器都需要访问数据库,这样会显得两台服务器分工不清晰,而且web服务器和文件服务器都需要有域名,往后如果需要增加文件服务器,也得增加域名,然后每台文件服务器都要装一个web服务器。

由于小弟从来没做过服务器组建,也从来没了解过这方面的知识,孰对孰错完全无从评判。还请各位前辈不吝赐教,告知一种靠谱的组建方式。
------解决方案--------------------
个人觉得你同事的方案不错,各个系统分工比较明确,文件上传涉及转码等一系列问题,当成单独的文件服务器