#key-value-store #persistent #key-value #store-key

bin+lib kalavara

一个支持 http 的分布式持久化键值存储

3 个版本 (重大更新)

0.3.0 2019年6月26日
0.2.0 2019年5月27日
0.1.0 2019年5月8日

2866数据库接口

CC0 许可证

29KB
561

Kalavara

Travis Status Gitlab CI crates.io

一个支持 http 的分布式持久化键值存储。受 minkeyvalue 启发。

安装

预编译的二进制文件可在 发布页面 获取,或者您可以运行 cargo install kalavara 命令来安装 kalavara

主服务器

主服务器在 rocksdb 中存储索引(键,存储值的卷服务器的 URL)。在更新元数据后,请求将被重定向到相应的卷服务器。

要启动服务器,请运行

master -p 6000 -d /tmp/kalavadb -v http://volume1:6001 http://volume2:6002

卷服务器

卷服务器将值存储在文件系统中。为此方法能够工作,destdir/tmp 目录和目标路径应在同一文件系统中。在目标路径中创建临时文件,然后将其移动到目标路径。

要启动卷服务器,请运行

volume -p 7000 -d /tmp/kalavarastore

如果主服务器不知道这个卷服务器,请使用以下命令进行注册

volume -p 7000 -d /tmp/kalavarastore -m http://master.server -b http://this.volume.server:7000

用法

  1. 插入键值对
curl -XPUT -L -d value https://127.0.0.1:6000/store/key
  1. 检索值
curl -XGET -L https://127.0.0.1:6000/store/key
  1. 删除键
curl -XDELETE -L https://127.0.0.1:6000/store/key
  1. 向主服务器注册新的卷服务器
curl -XPOST -d http://newvolume.server https://127.0.0.1:6000/admin/add-volume

性能

./wrk -t2 -c100 -d10s https://127.0.0.1:6000/missingkey
Running 10s test @ https://127.0.0.1:6000/missingkey
  2 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     2.04ms    1.61ms  28.98ms   83.07%
    Req/Sec    21.33k     4.76k   34.42k    66.00%
  426423 requests in 10.07s, 65.88MB read
  Non-2xx or 3xx responses: 426423
Requests/sec:  42359.95
Transfer/sec:      6.54MB

许可证

CC0

在法律允许的范围内,作者已将本软件的所有相关版权和邻接权奉献给全球公众领域。本软件分发时不附带任何保证。

依赖项

~28–39MB
~714K SLoC