proposer
paxos 实现一致性的基础是每一次 touch 集群时 都
Paxos 实现一致性的基础是每一次 touch 集群时 都要走所谓的 2 phases. 这个 2 phases 是一个实实在在的写操作 并没有所谓的只读. 对于 Paxos 它并不关心是读操作还是写操作 它要做的 就是将数据复制到多个节点上. 有一种特殊情况下的优化 那就是 Paxos proposer 获得了集群的全部副本 并且知道全部副本都是完全相同的 就不需要执行 phase 2. 在某些情况下 并不能这样优化 因为等待全部节点返回结果 可能消耗很长的时间. 而且 某个节点故障时 显然不应该等也等不到全部结果. 所以 简单的做法是无论怎样 都从多数派里获取最新的值 然后要求所有节点都接受这个值(phase 2). 所以 对于 Paxos 来说 要么全部节点都查询一遍(并且期望全部节点是完全相同的) 要么产生一个新的共识 否则不能返回结果给客户端. 这增加了系统的故障机率. 工程实践上极度厌恶"不可用" 追求