• FastDfs的上传下载流程


    目录

    文件上传三要素:

    什么是FastDfs【Distributed File System】?

    FastDfs的优势:

    FastDfs的上传流程

    Fastdfs下载/访问流程

    为什么需要FastDfs?

    使用FastDfs的时候注意什么?

    FastDFS文件上传返回信息解读


    首先你要知道文件上传的三要素,不满足三要素就无法进行文件上传。

    文件上传三要素:

    1.表单提交方式:post (get方式提交有大小限制,post没有)

    2.表单的enctype属性:必须设置为multipart/form-data【复杂表单项】.

    3.表单必须有文件上传项:file【type=file】

    什么是FastDfs【Distributed File System】

            Fastdfs是用C语言编写的一款轻量级开源的分布式文件系统。它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等

    简单理解:就是可以用来对文件进行存储(上传和下载)的分布式文件系统

            FastDFS服务端有两个角色:跟踪器(trackerserver)存储节点(storageserver)

    跟踪器作用是做调度工作,在访问上起负载均衡的作用【用来分配存储到那个storage服务器中】。

    存储节点作用是做文件存储,客户端上传的文件最终存储在storage服务器上。

     

    FastDfs的优势:

    1. 访问效率高,支持高并发【就是多个线程可以同时访问】

    2. 支持集群【主服务器上的数据可以同步所有从服务器,并且所有的从服务器可以关联其他的主服务器】--避免一个服务器崩了,全崩了

    FastDfs的上传流程

     

    1 storage服务器会定时的向tracker传递自己的状态信息(心跳机制-告诉自己是可以使用的)

    2 当客户端client发送上传连接请求时,

    3 tracker就会进行调度一个可用的storage

    4 并且将storage的ip地址和端口号信息返回给客户端client

    5 客户端根据端口号和ip地址上传内容到storage中进行存储

    6 storage接收到上传文件生成file_id(上传文件的路径和文件名)

    7 将上传的内容写入磁盘,

    8 并返回file_id(上传文件的路径和文件名)给客户端client

    Fastdfs下载/访问流程

     

    1 storage服务器会定时的向tracker传递自己的状态信息(心跳机制-告诉自己是可以使用的)

    2 当客户端client发送下载连接请求时,

    3 tracker就会进行调度一个可用的storage

    4 客户端client将文件的file_id(组名,路径,文件名)发送给storage,storage进行查找

    8 将查找到的文件内容返回给客户端client

    为什么需要FastDfs?

    1因为访问效率高,支持高并发【多个用户同时进行访问。】

    2支持集群【多个服务器运行相同的业务。】

    部署问题:以前部署:将所有的服务部署到一个服务器中,会导致服务器压力过大,挂掉。

    分布式方法改进:还有将每个服务都分别部署到一个服务器上。但是也不支持高并发,不能解决单点故障【就是一台服务器崩了,无法进行挽救,存储的数据就没有了。】

    使用FastDfs的时候注意什么?

    storage返回的只有卷名和文件名,如果想要查看图片就需要加上原本服务器的前缀

    http://127.0.0.1/group1/M00/00/00/wKgZhVkMP4KAZEy-AAA-tCf93Fo973.jpg

    FastDFS文件上传返回信息解读

    客户端上传文件后存储服务器将文件 ID 返回给客户端,此文件 ID 用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。如:

     

    • 组名/卷:文件上传后所在的Storage组名称,在文件上传成功后有Storage服务器返回,需要客户端自行保存

    • 虚拟磁盘路径:Storage配置的虚拟路径,与磁盘选项 store_path*对应。如果配置了store_path0 则是 M00,如果配置了 store_path1 则是 M01,以此类推

    • 数据两级目录:Storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件

    • 文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器 IP 地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息

  • 相关阅读:
    web前端进阶<7>:3d图像翻转效果
    进程与线程
    vue3 + elementPlus实现select下拉框插入确定和取消按钮。
    Windows10 定时拷贝后删除 UBUNTU上的文件
    js中new做了什么
    羊孒个羊过关思路,让你在好友榜单排名第一
    【WSL】下载appx包将WSL装在非系统盘
    巧妙利用unbuffer实时写入
    LabVIEW开发TDS1000 和TDS2000 系列泰克示波器
    [附源码]计算机毕业设计基于springboot血库管理系统
  • 原文地址:https://blog.csdn.net/m0_64210833/article/details/126295422