Skip to content

Distributed KV Storage System based on Raft and RocksDB, can be use to store small files, like images.

Notifications You must be signed in to change notification settings

wenweihu86/distkv

Repository files navigation

distkv

分布式KV存储系统,也适用于存储小文件,比如图片。

架构图

distkv架构图

各模块功能介绍

  • distkv-store-server:存储实际key/value数据,是多组raft集群,每组是一个分片。
  • distkv-meta-server:存储key对应到distkv-store-server的哪个分片上。
  • distkv-proxy-server:client请求代理层,负责和distkv-meta-server以及distkv-store-server通信。

主要接口的实现

写入接口实现

  • client发送set请求给proxy-server
  • proxy-server根据store-server分片数量,给请求key分配一个分片id(shardingIndex)
  • proxy-server请求meta-server,将key和分片id写入到meta-server中。
  • proxy-server请求分片id对应的store-server集群,将key和value写入到该分片集群中。
  • proxy-server返回给client成功。

读取接口实现

  • client发送get请求给proxy-server
  • proxy-server请求meta-server,获取key对应的分片id
  • proxy请求分片id对应的store-server集群,获取key对应的value
  • proxy将value返回给client

部署

  • 执行mvn clean package,然后将target下的zip包解压到部署目录,执行./bin/run.sh即可。
  • 对于一个模块多节点部署的,需要更改conf和run.sh中的端口,保证端口不要重复。
  • meta-server和store-server都是raft集群,建议部署三节点以上。
  • proxy-server是无状态的,可以部署任意个节点。
  • example模块是spring boot应用,提供了基本的key/value写入/读取使用方法,同时也提供了图片写入/读取的使用方法。