加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
设计.txt 1.24 KB
一键复制 编辑 原始数据 按行查看 历史
ygq 提交于 2019-01-06 10:04 . init
分为:client客户端、trancker调度端、storage数据端
#上传
客户端先把文件的md5值计算和文件的大小计算后请求trancker,获取分配进行存储的storage的ip和端口(上传地址)
trancker根据维系的storage来分配空闲的服务器,根据每一台storage存储20mb来计算。然后把这个文件id
与分配的每一个storage及大小存储到记录表中
文件hash值:[
0-20:192.168.11.11:2689,
20-40:192.168.11.22:2689
]
然后把这个记录对象返回给客户端
客户端然后遍历获取的storage的ip和端口,进行按照对应的块范围进行上传
storage接收文件流进行存储
客户端全部上传完后,返回给调用端文件id(即文件hash值)
#下载
客户端先根据文件id,请求trancker服务端
trancker服务器根据id,到记录表中获取对应的记录对象,并返回给客户端
客户端得到对应记录对象,遍历请求每一个storage的ip和端口,进行下载文件
然后把每一块文件进行按照对应块位置进行合并
客户端负责对文件的分块上传到不同的storage
客户端负责从不同的storage中下载文件后,合并
对于trancker和storage的高可用先不实现
线程可以后期采用线程池
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化