itsharex / birdkv

一个基于 Raft 共识算法的分布式 key-value 存储服务

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

BirdKV

一个基于 Raft 共识算法的分布式 key-value 存储服务,从 MIT 6.824 分布式系统课程实验中扩展而来

Get Started

编译

进入 cmd 目录

编译客户端

go build -o birdkv-cli client.go 

编译服务端

go build -o birdkv-server server.go

运行

在每个节点上启动服务端,参数中传递服务端节点地址,顺序最好一致,最后一个参数表示当前服务器是第几个节点(从 1 开始)。需要至少 3 个节点才能实现可靠的容错

birdkv-server 127.0.0.1:8000 127.0.0.1:8001 127.0.0.1:8002 1

启动客户端,传递服务器节点地址

birdkv-cli 127.0.0.1:8000 127.0.0.1:8001 127.0.0.1:8002

客户端连接成功后,进入交互模式,支持 3 种操作:

  • Get k:获取 key k 的值
  • Put k v:设置 key k 的值为 v
  • Append k v:在 key k 上追加值 v
> Put x 100
100
> Get x
100
> Append x 200
100200

TODO

  • 实现 Raft(Leader选举,日志复制,持久化,快照)
  • 基于 Raft 构建可容错、线性化的分布式 key-value 服务
  • Raft 成员变更
  • Multi-Raft, 数据分区
  • 更多数据结构支持
  • 分布式事务

参考资料

  1. In Search of an Understandable Consensus Algorithm (Extended Version)(Raft 论文)
  2. MIT 6.824 分布式系统课程
  3. 条分缕析 Raft 算法 | 多颗糖
  4. 条分缕析 Raft 算法(续):日志压缩和性能优化 | 多颗糖
  5. 线性一致性和 Raft | PingCAP
  6. TiKV 功能介绍 - Raft 的优化 | PingCAP

About

一个基于 Raft 共识算法的分布式 key-value 存储服务


Languages

Language:Go 99.9%Language:Shell 0.1%