这是一个基于paxos, 200行代码的kv存储系统的简单实现, 作为 [paxos的直观解释] 这篇教程中的代码示例部分....Paxos的原理本文不再介绍了, 本文提到的数据结构使用[protobuf]定义, 网络部分使用[grpc]定义. 另外200行go代码实现paxos存储....在一个paxos系统中, 至少要有4个消息:
Phase1的 Prepare-request, Prepare-reply,
和Phase2的 Accept-request, Accept-reply,...基于 Acceptor 的服务端和 Proposer 2个 Phase 的实现, 最后把这些环节组合到一起组成一个完整的paxos, 在我们的代码 [RunPaxos] 这个函数中完成这些事情:
func...遇到这种情况, 在我们的系统中, 例如要写入key=foo, ver=3的值为bar, 如果没能选择bar, 就要选择下一个版本key=foo, ver=4再尝试写入.