只有 1000 行代码的分布式数据库,值得学习

大家好。

今天推荐的项目非常值得使用 Go 语言编程的同学去学习和研究,尤其是对于初学者。minikeyvalue 是一个只有差不多 1000 行代码的分布式 Key-Value 数据库,代码虽然比较少,但是功能一点都不少,支持多机器的状态复制,同时对于 Value 的存储支持 1MB 到 1GB 的大小。

minikeyvalue 项目是受到了 SeaweedFS 的启发,但是 minikeyvalue 能够支持扩展存储 10 亿级别 PB 级的数据文件存储。目前 minikeyvalue 已经在 comma.ai 的生产环境使用。

一个核心简化 minikeyvalue 的设计点是该项目使用 Nginx 做为我们的数据文件的存储服务。

同时 minikeyvalue 依赖 LevelDB 做为数据的索引服务,一定程度上对 minikeyvalue 简化了很多。而所有的数据会以 blob 数据块的形式存储在每台机器的文件系统中,这样我们就可以很容易的在每台机器上对数据块进行增加和删除,用来做数据均衡。

以下是 minikeyvalue 支持的 API:

image-20210110191118445

以下是启动方式,由于依赖了 Nginx,所以服务启动前会先启动 Nginx:

image-20210110191145736

同时也有一些其他基本的使用方法和性能测试命令。

image-20210110191247213

最后说一下代码,就跟文章前面说的一样,真的只有 1000 行左右的代码,除去测试代码实际只有 5 个代码文件,任何同学都可以参考学习一下。

image-20210110191350387

更多项目详情请查看如下链接。

开源项目地址:https://github.com/geohot/minikeyvalue


更多精彩请扫码关注如下公众号。

Written on January 10, 2021