在可靠的分布式系统中,领导者选举对于写入成功是强制性的,我可以理解需要遵循Paxos算法。
但是,为什么读取请求不需要领导者选举(因此达成共识)? (例如在Zookeeper中)
我错过了什么吗?
答案 0 :(得分:2)
默认情况下,Zookeeper读取不可线性化,因此不需要协商一致。它们是顺序一致的,允许从客户端所连接的节点进行本地读取。
如果您想在Zookeeper中进行线性化读取,则必须先显式同步该节点 - 现在您将读取自读取(同步)请求开始以来已完成的所有写入,从而实现线性化。
同样如此,例如筏。您可以执行本地读取并获得最多顺序一致性(假设您与节点协调以不读取比您已经看到的更早的数据),但是如果您想要线性化读取,则必须提交"提交"读取操作(即,系统同意在您阅读之前提交哪些写入),再次要求达成共识。