一个分布式的kv服务。大部分代码来自proglog,它是Distributed Services with Go的项目源码。
使用etcd-raft来实现一致性。书上使用的hashicorp-raft,有以下问题:
- 无法扩展对ConfChange这里消息的应用。hashicorp的实现中,消息体只有node的地址,没有端口信息。这样应用监听到有node加入/离开到集群,但是无法确定应用的端口。 书上使用连接复用来解决这个问题。
- 没有etcd的实现使用广泛
- raft集成
- 单节点使用。通过
proposeC
提交消息,通过commitC
应用消息 - 单节点wal
- 单节点快照
- 多节点使用、wal和快照
- 单节点使用。通过