分布式协议与算法实战
韩健
腾讯资深工程师
立即订阅
5871 人已学习
课程目录
已完结 30 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (2讲)
开篇词 | 想成为分布式高手?那就先把协议和算法烂熟于心吧
免费
学习路径 | 分布式协议与算法你应该这么学
理论篇 (5讲)
01 | 拜占庭将军问题:有叛徒的情况下,如何才能达成共识?
加餐 | 拜占庭将军问题:如何基于签名消息实现作战计划的一致性?
02 | CAP理论:分布式系统的PH试纸,用它来测酸碱度
03 | ACID理论:CAP的酸,追求一致性
04 | BASE理论:CAP的碱,追求可用性
协议和算法篇 (17讲)
05 | Paxos算法(一):如何在多个节点间确定某变量的值?
06 | Paxos算法(二):Multi-Paxos不是一个算法,而是统称
07 | Raft算法(一):如何选举领导者?
08 | Raft算法(二):如何复制日志?
09 | Raft算法(三):如何解决成员变更的问题?
10 | 一致哈希算法:如何分群,突破集群的“领导者”限制?
11 | Gossip协议:流言蜚语,原来也可以实现一致性
12 | Quorum NWR算法:想要灵活地自定义一致性,没问题!
13 | PBFT算法:有人作恶,如何达成共识?
加餐 | PBFT算法:如何替换作恶的领导者?
14 | PoW算法:有办法黑比特币吗?
15 | ZAB协议:如何实现操作的顺序性?
加餐 | ZAB协议(一):主节点崩溃了,怎么办?
加餐 | ZAB协议(二):如何从故障中恢复?
加餐 | ZAB协议(三):如何处理读写请求?
加餐 | MySQL XA是如何实现分布式事务的?
加餐 | TCC如何实现指令执行的原子性?
实战篇 (5讲)
16 | InfluxDB企业版一致性实现剖析:他山之石,可以攻玉
17 | Hashicorp Raft(一):如何跨过理论和代码之间的鸿沟?
18 | Hashicorp Raft(二):如何以“集群节点”为中心使用API?
19 | 基于Raft的分布式KV系统开发实战(一):如何设计架构?
20 | 基于Raft的分布式KV系统开发实战(二):如何实现代码?
结束语 (1讲)
结束语 | 静下心来,享受技术的乐趣
分布式协议与算法实战
15
15
1.0x
00:00/00:00
登录|注册

加餐 | ZAB协议(二):如何从故障中恢复?

韩健 2020-05-17
你好,我是韩健。
我们上一讲提到了 ZAB 的领导者选举,在我看来,它只是选举了一个适合当领导者的节点,然后把这个节点的状态设置成 LEADING 状态。此时,这个节点还不能作为主节点处理写请求,也不能使用领导职能(比如,它没办法阻止其他“领导者”广播提案)。也就是说,集群还没有从故障中恢复过来,而成员发现和数据同步会解决这个问题。
总的来说,成员发现和数据同步不仅让新领导者正式成为领导者,确立了它的领导关系,还解决了各副本的数据冲突,实现了数据副本的一致性。这样一来,集群就能正常处理写请求了。在这句话里:
确立领导关系,也就是在成员发现(DISCOVERY)阶段,领导者和大多数跟随者建立连接,并再次确认各节点对自己当选领导者没有异议,确立自己的领导关系;
处理冲突数据,也就是在数据同步(SYNCHRONIZATION)阶段,领导者以自己的数据为准,解决各节点数据副本的不一致。
对你来说,理解这两点,可以更好地理解 ZooKeeper 怎么恢复故障,以及当主节点崩溃了,哪些数据会丢失,哪些不会,以及背后的原因。也就是说,你能更加深刻地理解 ZooKeeper 的节点故障容错能力。
那么说了这么多,集群具体是怎么从故障中恢复过来的呢?带着这个问题,我们进入今天的学习。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《分布式协议与算法实战》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(3)

  • Tim
    有个问题请教下韩老师,在做故障恢复数据同步时候,如果 minCommittedLog < peerLastZxid < maxCommittedLog, 比如leader 是 【5,6,7,8,9】,而follower是【5,7】,follower中间少了一个zxid 6的事务,这时候数据同步会恢复嘛?谢谢老师解答。

    作者回复: 加一颗星:),不会出现这种情况,ZAB能保证提案的顺序性。

    2020-05-18
    4
  • 小波菜
    “如果写请求对应的提案“SET X = 1”未被复制到大多数节点上,比如在领导者广播消息过程中,领导者崩溃了,那么,提案“SET X = 1”,可能被复制到大多数节点上,并提交和之后就不再改变,也可能会被删除。这个行为是未确定的,取决于新的领导者是否包含该提案。”
    请教韩老师:
    这边set x=1只复制到少数节点上,那么这些少数节点的zxid应该是最大,应该回成为新的leader,也就不会丢数据了啊?
    然后这个问题又该如何避免呢?
    2020-05-21
    3
  • Kyushu
    感觉成员发现应该算是选举过后的一个选举补偿,而数据同步则是数据补偿
    2020-07-01
收起评论
3
返回
顶部