一个基于 Raft 共识算法的分布式 key-value 存储服务,从 MIT 6.824 分布式系统课程实验中扩展而来
进入 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
:获取 keyk
的值Put k v
:设置 keyk
的值为v
Append k v
:在 keyk
上追加值v
> Put x 100
100
> Get x
100
> Append x 200
100200
- 实现 Raft(Leader选举,日志复制,持久化,快照)
- 基于 Raft 构建可容错、线性化的分布式 key-value 服务
- Raft 成员变更
- Multi-Raft, 数据分区
- 更多数据结构支持
- 分布式事务