加餐 | ZAB协议(三):如何处理读写请求?
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
ZooKeeper中的ZAB协议是处理读写请求的核心机制。文章全面分析了读写请求的流程,强调了理解ZooKeeper性能和一致性的重要性。在ZooKeeper中,写请求必须在领导者上处理,而读请求可以在任何节点上处理,实现了最终一致性。文章详细介绍了ZooKeeper代码中如何实现读写操作的过程,包括处理写请求的核心流程和处理读请求的实现。通过分析ZooKeeper代码,读者可以深入了解ZooKeeper处理读写请求的原理和代码实现。此外,文章还补充了ZAB协议的术语和与Raft算法的对比,以及对ZooKeeper提供的最终一致性进行了思考。整体而言,本文对于想深入了解ZooKeeper读写请求处理机制的读者具有很高的参考价值。
《分布式协议与算法实战》,新⼈⾸单¥59
全部留言(17)
- 最新
- 精选
- zyzZookeeper通过Leader来主导写操作,保证了顺序一致性。当一半以上的节点返回已写入,就返回客户端已写入,但是这时候只是部分节点写入,有的节点可能还没有同步上数据,所以读取备份节点可能不是最新的。同时Zookeeper的单一视图特征,保证客户端看到的数据不会比在之前服务器上所看到的更老。
作者回复: 加一颗星:)
2020-05-2159 - zyz老师!Zookeeper版本3.5.0开始支持dynamic configuration,成员变更的时候,不需要重启了吧
作者回复: 加一颗星:),感谢反馈,采用dynamic configuration进行成员变更,不需要重启的,已修正。
2020-05-205 - xzy你好,既然 zk 只能保证最终一致性,那么在分布式系统中,如 kafka、hbase 等,用 zk 做元数据管理岂不是有问题
作者回复: 加一颗星:),绝大多数时候,业务对数据的新旧是没那么敏感的。
2020-05-2622 - Dovelol老师好,想问下zab协议处理写请求要这么多步骤,那还能保证性能吗?如果其中某一小步骤延迟或阻塞都会影响写的性能把。
作者回复: 加一颗星:),性能是相对,相比原子提交协议(比如2PC),共识算法的性能要高些。阻塞属于异常情况,在实际场景中,如果代码本身没有缺陷,在绝大多数时候,系统都是正常运行的,不存在阻塞的,也不会影响到写的性能。
2020-06-211 - DY-杨老师,咨询下。paxos算法从您讲解下来好像仅是对某个提案达成共识。没有看到故障恢复或日志恢复的过程啊。反倒zab和raft有。那您知道用这种共识算法的软件是自研的日志恢复吗?另外联合共识算法是什么呢。
作者回复: 加一颗星:),算法和工程实现之间存在差异,对于Paxos而言,差异就更大了,缺少工程实现的必须细节,这也是为什么大家现在主要选择了raft的原因。故障恢复,是ZAB定义的,Raft没有定义这个阶段。问题1:若使用paxos,需要自己权衡,可以使用它的提到的方法,新领导者通过prepare阶段来发现之前选定的值,也可以自己设计,需要整体考虑。问题2:联合共识,是Raft中处理成员变更的一种方法。
2020-05-201 - 爱德华老师,在说处理写请求的时候好像有点问题。本文中所说的是leader要在第二阶段(commit)后才会返回给客户端成功。但是在前几讲中,好像是说zab在第一阶段,收到大多数响应后就返回给客户端成功。那么这两个说法哪个正确呢?
作者回复: 加一颗星:),第二个说法,在文中我没有搜到,如果方便,帮忙补充下哈。如果第二个说法去掉“第一阶段”和“就”,那么这两个说法,在我看来,都是正确的,一个侧重代码实现,一个侧重算法原理,就像同样是一棵树,生物学家和文学家的描述是不同的。
2020-07-072 - Kvicii.Y领导者CommitProcessor.tryToCommit() 提交提案的方法似乎在3.6.0在Leader类中
作者回复: 加一颗星:),是的
2020-07-02 - 王伟建老师有几个问题不太理解: 1.zk的写请求是领导者节点的两阶段提交,说写请求是强一致性,是说这个两阶段过程未完成之前不允许其他操作,所以说他是强一致性吗? 2.zk的读只能提供顺序一致性,也就是说他可能读到旧的版本的数据,那为什么还要把zk归为CP类型的系统呢?CAP里的C 不应该是强一致性吗,说到底感觉还是对这个一致性没理解透,就之前的理解来说,我认为C是指每次读取的数据都是最近一次写入的数据,而不是过期的数据。希望老师能讲解一下这块儿。 3.利用zk来实现分布式锁,多个服务同时去拿锁时,如果zk提供的读不是强一致性,那么会不会读到旧的锁信息?这块儿是怎么保证每个服务拿到的都是最新的数据,实现上来说是靠sync读吗?2020-12-2734
- 路人写我看用的是2pc,2pc中有些如果只有部分commit成功,zookeeper会怎么处理呢?是有什么补偿机制么?2020-09-0312
- 姑射仙人老师,那么Zookeeper是CP呢,还是AP呢?读是最终一致,那么我理解是AP。但之前读的一篇文章,说Zookeeper不适合作为注册中心,说Zookeeper是CP,AP更适合作为注册中心,因为是读多写少,不要求马上能看到新的实例更新。 至于同步机制,Zookeeper也是支持增量更新,这样看来完全没有问题。麻烦老师指点下。2021-03-1031