前置内容:建议对 Paxos 有基本理解后再阅读。
本篇主要是为了后续几篇讲算法实现做些铺垫,个人觉得在看代码之前对设计进行基本的了解是必须的,否则会是一头雾水。
因为只是简介,我只会把 PhxPaxos 中的一些概念稍微讲讲,更为详细的内容还是建议大家阅读微信团队的原文。
我个人感觉 PhxPaxos 的实例-日志-状态机这样的设计是常见的一种实现思路,之前也有向同学请教了一下 X-Paxos 的设计,发现确实很类似,但是各个库出于各自对性能的要求,有着不同的优化取舍罢了(比如 X-Paxos 需要服务一些跨数据中心的高时延场景,所以 Pipelining 是个很好的优化手段)。
实例¶
相信了解过 Paxos 算法的读者都应该知道它最基本的能力:让多个进程(或节点)间达成一致,即它们均确定出同一个值。在确定值后,Paxos 组的成员中只要仍旧有多数派存活,该值将会一直被保持,从而能够容忍部分成员临时断线、掉线重启甚至丢失了该值。
我们知道,由于 Paxos 组内可能有多个 Proposer 同时提案 ...