ZooKeeper 实战与源码剖析
么敬国
新东方集团首席架构师
18975 人已学习
新⼈⾸单¥59
课程目录
已完结/共 47 讲
ZooKeeper 实战与源码剖析
登录|注册
留言
4
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 45 | ZooKeeper的Zab协议
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程介绍
02 | 内容综述
03 | 什么是ZooKeeper?
04 | ZooKeeper提供什么服务?
05 | 开始使用ZooKeeper
06 | 使用ZooKeeper实现Master-Worker协同
07 | ZooKeeper架构解析
08 | ZooKeeper API简介
09 | ZooKeeper API:Watch示例
10 | 使用ZooKeeper实现分布式队列
11 | 使用ZooKeeper实现分布式锁
12 | 使用ZooKeeper实现选举
13 | 使用Apache Curator简化ZooKeeper开发
14 | 如何安装配置一个ZooKeeper生产环境?
15 | 如何进行ZooKeeper的监控?
16 | 通过ZooKeeper Observer实现跨区域部署
17 | 通过动态配置实现不中断服务的集群成员变更
18 | ZooKeeper节点是如何存储数据的?
19 | 使用ZooKeeper实现服务发现(1)
20 | 使用ZooKeeper实现服务发现(2)
21 | 使用ZooKeeper实现服务发现(3)
22 | Kafka是如何使用ZooKeeper的?
23 | 什么是Paxos协议?
24 | 对比Chubby和ZooKeeper
25 | Raft协议解析
26 | 什么是etcd?
27 | etcd API: KV部分
28 | etcd API:Watch和Lease部分
29 | 使用etcd实现分布式队列
30 | 使用etcd实现分布式锁
31 | 如何搭建一个etcd生产环境?
32 | 存储数据结构之B+tree
33 | 存储数据结构之LSM
34 | 本地存储技术总结
35 | ZooKeeper本地存储源码解析
36 | 网络编程基础
37 | 事件驱动的网络编程
38 | Java的事件驱动网络编程
39 | ZooKeeper的客户端网络通信源码解读
40 | ZooKeeper的服务器网络通信源码解读
41 | ZooKeeper的Request Processor源码解读
42 | Standalone的ZooKeeper是如何处理客户端请求的?
43 | Quorum模式下ZooKeeper节点的Request Processor Pipeline
44 | ZooKeeper的Leader Election
45 | ZooKeeper的Zab协议
46 | 客户端和服务器端交互:Watch和Session
47 | 结课测试&结束语
登录 后留言

全部留言(4)

  • 最新
  • 精选
朱东旭
您好,老师,我带着"如果follower节点已经与leader节点数据不一致了如何处理?"这个问题来阅读源码,看到了如下逻辑: follower在收到leader的proposql请求之后,会向FollowerZooKeeperServer.pendingTxns入列zxid follower在收到leadr的commit请求之后,会从FollowerZooKeeperServer.pendingTxns出列zxid,如果这个出列的zxid与 commit请求的zxid不一致。则执行如下代码: if (firstElementZxid != zxid) { LOG.error("Committing zxid 0x" + Long.toHexString(zxid) + " but next pending txn 0x" + Long.toHexString(firstElementZxid)); System.exit(12); } 这里的System.exit(12)是什么意思呢,莫非follower检测到自己有漏提交的事务,就会关闭自己??

作者回复: 是的。

2020-03-29
2
朱东旭
您好,老师,过半提交意味着总有follower与leader的数据不一致,请问在不手动触发sync的情况下,follower是如何从leader同步数据解决不一致的呢.

作者回复: 过半提交意味着leader不需要等到所有的follower给响应就可以继续,但是Leader会向所有的follower发送PROPOSAL和COMMIT消息。TCP协议会使用重发机制尽力把消息发送出去。如果发生了以下两种情况之一,follower会停止运行。 1. syncLimit参数控制follower可以落后leader多少tick。如果一个follower的落后时间超过了syncLimit,就会停止。 2. 和leader的socket通讯出现了其他异常。

2020-03-28
2
1
机车
老师您好,leader收到过半ACK就会提交,那一个getData请求发到没有同步的follower,这不就数据不同步了吗?zookeeper是怎么处理这种情况的呢?
2021-07-24
2
13761642169
看了下代码,初步跟了下 leader 和 follower 的两阶段提交,先 propose,ack 过半,则 commit。如果 follower 不 ack,ack 数不到半数,leader 会怎么处理?
2019-11-12
1
收起评论