欢迎光临
我们一直在努力

如何实现负载均衡的文件上传?

负载均衡的文件上传

负载均衡的文件上传

一、文件上传原理

选择tracker server

在FastDFS中,客户端首先选择一个tracker server,如果集群中有多个tracker服务,由于tracker之间是对等的关系,客户端可以任意选择一个进行连接,高可用性通过冗余方式实现,确保即使某个tracker失效,其他tracker仍能提供服务。

选择存储的group及其负载均衡算法

当tracker接收到上传文件的请求时,会为该文件分配一个可以存储该文件的group,支持以下几种选择group的规则:

Round robin:所有的group间轮询。

Specified group:指定某一个确定的group。

Load balance:选择最大剩余空间的组上传文件。

3.选择storage server及其负载均衡算法

负载均衡的文件上传

选定group后,tracker会在group内选择一个storage server给客户端,支持以下几种选择storage的规则:

Round robin:在group内的所有storage间轮询。

First server ordered by ip:按IP排序,也会轮询。

First server ordered by priority:按优先级排序(优先级在storage上配置);可以理解为权重的方式,权重高的优先选择。

4.选择storage path及其负载均衡算法

当分配好storage server后,客户端将向storage发送写文件请求,storage将会为文件分配一个数据存储目录,支持如下规则:

Round robin:多个存储目录间轮询。

负载均衡的文件上传

剩余存储空间最多的优先:优先使用剩余空间最多的路径。

生成Fileid

选定存储目录之后,storage会为文件生一个Fileid,由 storage server ip、文件创建时间、文件大小、文件crc32、一个随机数拼接而成,然后将这个二进制串进行base64编码,转换为可打印的字符串。

选择两级目录

当选定存储目录之后,storage会为文件分配一个fileid,每个存储目录下有两级256*256的子目录,storage会路由到其中一个子目录,然后将文件以fileid为文件名存储到该子目录下。

生成文件名

当文件存储到某个子目录后,即认为该文件存储成功,接下来会为该文件生成一个文件名,文件名由:group、存储目录、两级子目录、fileid、文件后缀名(由客户端指定,主要用于区分文件类型)拼接而成。

二、下载文件逻辑

客户端upload file成功后,会拿到一个storage生成的文件名,接下来客户端根据这个文件名即可访问到该文件,和upload file一样,在download file时客户端可以选择任意tracker server,client发送download请求给某个tracker,必须带上文件名信息,tracke从文件名中解析出文件的group、大小、创建时间等信息,然后为该请求选择一个storage用来服务读请求。

三、常见问题与解答

问题1:为什么shell管理工具文件上传需要分包?

答:这是因为Tomcat默认参数大小为2M,所以需要对上传操作分包上传。

问题2:是否有其他方式上传大文件?

答:实际上可以通过自己构造一个上传点通过解析上传表单的内容实现一次性上传大文件的需求。

到此,以上就是小编对于“负载均衡的文件上传”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《如何实现负载均衡的文件上传?》
文章链接:https://yuyunkj.com/article/28598.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发