Django下FastDFS的使用

对于文件存储来说,Django是带有默认的文件存储类的,官方文档如下:

The FileSystemStorage class¶
class FileSystemStorage(location=None, base_url=None, file_permissions_mode=None, directory_permissions_mode=None)[源代码]¶
The FileSystemStorage class implements basic file storage on a local filesystem. It inherits from Storage and provides implementations for all the public methods thereof.

location¶
Absolute path to the directory that will hold the files. Defaults to the value of your MEDIA_ROOT setting.

base_url¶
URL that serves the files stored at this location. Defaults to the value of your MEDIA_URL setting.

file_permissions_mode¶
The file system permissions that the file will receive when it is saved. Defaults to FILE_UPLOAD_PERMISSIONS.

directory_permissions_mode¶
The file system permissions that the directory will receive when it is saved. Defaults to FILE_UPLOAD_DIRECTORY_PERMISSIONS.

注解

The FileSystemStorage.delete() method will not raise an exception if the given file name does not exist.

从文档可以看出的是Django对文件存储的支持还是挺好的,但是为什么有些地方会用Fast DFS呢?

        实际上,当文件较少的时候,django是可以应付的过来的。但当文件以海量形式出现的时候,Django就并不是那么好用了,于是Fast DFS应运而出。

        FastDFS是一个开源的分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。可以说它就是为互联网而生,为大数据而生的。

FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。 存储节点存储文件,完成文件管理的所有功能:存储、同步和提供存取接口,FastDFS同时对文件的meta data进行管理。跟踪器和存储节点都可以由一台多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。

FastDFS系统结构如下图所示:Django下FastDFS的使用_第1张图片

在Django中使用Fast DFS的流程如下:

Django下FastDFS的使用_第2张图片

 

总结来说为什么使用Fast DFS:

        一、解决海量存储,同时存储容量扩展方便

        二、解决文件内容重复

        三、结合Nginx提高网站提供图片的效率

东西是死的,人是活的,没有最好的方案,只有根据需求找到最适合的方案

 

你可能感兴趣的:(web)