/IFS

image storage system

Primary LanguageRust

IFS

image storage system,基于tikv,同时参考bfs实现的分布式小文件(图片)存储系统

运行步骤

1、编译、启动pd

git clone https://github.com/scottzzq/pd
cd pd
make
./bin/pd-server

2、编译store server

git clone https://github.com/scottzzq/IFS
make
sh start_cluster.sh

3、用python client发送上传、下载、删除图片请求

git clone https://github.com/scottzzq/kvproto
cd kvproto/py_src/
python cmd.py, 可以自己修改cmd.py

架构

架构图

优化

  • 优化raftlog存储格式,考虑到图片数据文件较大,故总是将raftlog中的PUT请求中的数据转换Needle写入volume文件中,raftlog只保存Needle在volume中的offset&size
  • 上传图片
  • 下载图片
  • 删除图片
  • 动态增加Volume
  • 动态增加store机器
  • Compact Volume,将已经删除的图片Needle文件回收空间
  • go实现http proxy,提供http上传、下载、删除接口
  • 图片元信息存储,filename和volumeid&key映射关系,考虑使用类redis的硬盘存储介质,360开源pika可能是一个不错的选择