少于1000行的分布式键值存储

2021-01-05 15:27:50

minikeyvalue是一个约1000行的分布式键值存储,支持复制,多台计算机以及每台计算机多个驱动器。针对1MB到1GB之间的值进行了优化。受SeaweedFS启发,但很简单。应该扩展到数十亿个文件和PB级数据。在comma.ai上用于生产。

即使这段代码很烂,磁盘上的格式也非常简单!我们依靠文件系统进行Blob存储,并依靠LevelDB进行索引。可以通过重建来重建索引。可以通过重新平衡来添加或删除卷。

#这只是在PORT = 3001下的nginx ./volume / tmp / volume1 /& PORT = 3002 ./volume / tmp / volume2 /&PORT = 3003 ./volume / tmp / volume3 /&amp ;;

#放入&bigswag"输入密钥" curl -v -L -X PUT -d bigswag localhost:3000 / wehave#获取密钥" wehave" (应该是" bigswag")curl -v -L localhost:3000 / wehave#删除键" wehave" curl -v -L -X -D DELETE localhost:3000 / wehave#取消链接键& #34; wehave&#34 ;,这是一个虚拟deletecurl -v -L -X UNLINK localhost:3000 / wehave#列表键,以" we" curl -v -L localhost:3000 / we?list开头#列出可用于DELETEcurl的未链接键-v -L localhost:3000 /?未链接#将文件放入键" file.txt" curl -v -L -X PUT -T / path / to / local / file .txt本地主机:3000 / file.txt#获取密钥" file.txt" curl -v -L -o /path/to/local/file.txt本地文件:3000 / file.txt

用法:./ mkv<服务器,重建,重新平衡> -db字符串leveldb的路径-fallback字符串缺少键的后备服务器-port int服务器要侦听的端口(默认3000)-protect在删除前强制UNLINK -replicas int组成数据的副本数量(默认3)- subvolumes int子卷数量,每台计算机的磁盘数量(默认为10)-volumes字符串用于存储的卷,以逗号分隔

#必须先关闭主服务器,因为LevelDB仅可通过一个进程访问./mkv -volumes localhost:3001,localhost:3002,localhost:3003 -db / tmp / indexdb / rebalance

#获取不存在的密钥:116338 req / secwrk -t2 -c100 -d10s http:// localhost:3000 / key#运行thrasher.gostarting thrasher10000以2.620922675sthats 3815.40 / sec的速度写/读/删除