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

watermark,image_bG9nby9jc2RuXzEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLGhfNzg=,g_se,x_0,y_0,t_100


文章首发于微信公众号「GitHub 精选」,欢迎大家关注。

大家好,我是你们的章鱼猫。

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

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

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

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

以下是 minikeyvalue 支持的 API:


watermark,image_bG9nby9jc2RuXzEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLGhfNzg=,g_se,x_0,y_0,t_100


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


watermark,image_bG9nby9jc2RuXzEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLGhfNzg=,g_se,x_0,y_0,t_100


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


watermark,image_bG9nby9jc2RuXzEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLGhfNjI=,g_se,x_0,y_0,t_100


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


watermark,image_bG9nby9jc2RuXzEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLGhfNzg=,g_se,x_0,y_0,t_100


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

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

公众号:「GitHub 精选」,值得你关注,每天都分享开源项目,挖掘开源的价值。

推荐阅读:
你知道吗,用声波也可以传输文件?
重磅推荐:一个免费开源的在线云盘项目
手残党的福利:AI 自动绘画黑科技

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值