« 上一篇下一篇 »

文件存储的设计

在IT创业产品互推平台中有大量的文件需要存储,并且文件存储设计的好坏将会对整个SNS的使用产生巨大的影响,特别是在性能方面。

1.单独磁盘存放文件
对于用户上传的文件,很多时候保存在服务器的磁盘上的。在IT创业产品互推平台站点发展的初期,可能只存在一台服务器,此时,数据库和用程序都会部署在这台服务器上面。

2.独立服务器存放文件
随着SNS站点的发展,文件的上传和下载在服务器上产生了大量的I/O操作。此时服务器的I/O将会成为整个系统的性能瓶颈,而且还会影响数据库及站点的响应能力,因为I/O操作会消耗大量的CPU、内存等资源。此时就需要采用独立的服务器来进行文件处理操作了。

尽管应用程序服务器要对文件服务器进行I/O操作,但是在采用了上述方式之后,性能已经有了一些改善,它将不再是整个系统的性能瓶颈了。

但是,现在需要考虑的另一个问题是:如何组织和存放用户上传的文件。

一般而言,为了便于管理,可以在服务器上以一定的命名规则为每个用户创建文件夹,从而存放所有用户的文件。如果有必要,甚至可以在用户的文件中在创建子文件夹。另外,如何实现大量文件中查询某个文件相关功能也是需要慎重考虑的,此时还要考虑是否要对大量文件建立索引,加快文件的查找。

随着用户量的增长,这种单独文件服务器的部署结构也不会支撑太长时间,即使增加再多的服务器,其成本和回报可能并不会成正比。

3.CDN存放文件
正如可以采用负载均衡技术将请求发送道不同的服务器上,也可以对文件资源的读取进行负载平衡,此时需要考虑有关CDN的问题。

CDN能够帮助用户解决分布式存储、网络请求的重定向和内容管理等问题。

CDN通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”上,使用户可以就近取得所需的内容,缓解了Internet网络的拥塞状况,提高了用户访问网站的响应速度。从技术上全面解决了由于网络带宽小、用户访问量大、网点分布不均而产生的用户访问网站响应速度慢的问题。

采用了CDN之后,SNS的相关实现技术也需要做出调整,另外,对用户文件管理方式也需要做出调整,之前是在服务器上面创建实实在在的文件夹来存放用户文件的。

在采用了CDN之后,我们不在关心文件的存储和组织结构了,并且不需要创建真实的文件夹了,此时创建的是虚拟的文件,仅仅是用来对文件夹进行分类标识的。

« 上一篇下一篇 »