1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ygq-ctjdfs

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
设计.txt 1.2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
worldgege Отправлено 06.01.2019 05:04 b5b57e8
分为: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的高可用先不实现
线程可以后期采用线程池

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/ygq-ctjdfs.git
git@api.gitlife.ru:oschina-mirror/ygq-ctjdfs.git
oschina-mirror
ygq-ctjdfs
ygq-ctjdfs
master