ZooKeeper 实战与源码剖析
么敬国
新东方集团首席架构师
18975 人已学习
新⼈⾸单¥59
课程目录
已完结/共 47 讲
ZooKeeper 实战与源码剖析
登录|注册
留言
5
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 12 | 使用ZooKeeper实现选举
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 | 结课测试&结束语
登录 后留言

全部留言(5)

  • 最新
  • 精选
calljson
zookeeper的watcher机制和选举机制讲解的太浅了,背后原理和架构没有详细讲解,希望能讲解其背后逻辑,不能只对着源码讲解

作者回复: 好的,多谢您的建议

2019-09-10
7
妥协
使用zookeeper在主备切换的场景,A是主节点,B是备节点,如果A节点和zookeeper集群间网络延迟等网络故障时,导致zookeeper因为心跳超时,删除A的临时节点,导致主备切换,B切换为主节点,这个时候系统中就存在两主节点了,这种情况怎么解决?

作者回复: 如果在节点A和ZooKeeper集群之间发生了网络分区,节点A会收到Disconnected的WatchedEvent, 节点A要在收到这个event之后停止执行主节点的功能。

2020-05-02
2
1
hgf
老师,建议分析一下watch和事件的各种可能,系统内部状态变化,包括异常情况下是否可用

作者回复: ZooKeeper使用WatchedEvent(https://zookeeper.apache.org/doc/r3.5.5/api/org/apache/zookeeper/WatchedEvent.html)来表示session的状态变化和znode的变化。WatchedEvent的Watcher.Event.KeeperState对应session的变化,WatchedEvent的Watcher.Event.EventType对应znode的变化。 关于KeeperState和EventType的取值,参见https://zookeeper.apache.org/doc/r3.5.5/api/org/apache/zookeeper/Watcher.Event.html。 如果EventType是None,WatchedEvent代表的就是session的状态变化,否则代表的是znode的变化。 KeeperException表示ZooKeeper的各种出错情况,其中需要特别注意的是KeeperException.ConnectionLossException 。我们可能需要在遇到KeeperException.ConnectionLossException时进行重试。

2019-08-28
1
有点浅,还是理解的有问题zk选主使用的是ZAB协议,这里讲的是连接ZK的客户端那个可以作为主嘛?

作者回复: > 有点浅,还是理解的有问题zk选主使用的是ZAB协议 Zab协议不涉及leader的选举。 > 这里讲的是连接ZK的客户端那个可以作为主嘛? 所有的节点都可能被选为leader。

2020-02-21
飞翔
老师 想问下zookeeper 帮助别的系统选主过程, 如果我有 3个系统, A B C 一起动 就像zookeeper 发送选主请求, 我有个疑问 什么时候zookeeper返回确定哪个是主的请求 比如 假设 A 创建的是node 1, B node2, C node3, 您说 是选小的 也就是A 是主, 但是假设 A 延迟了, B 和C 发送了请求, 完后选了主 就会是B, 但是这时候A 咋办?

作者回复: 既然A的znode编号是1那就说明ZooKeeper首先为A的创建请求分配的zxid。你说的延迟应该是说ZooKeeper给A返回的响应延迟了,这个不影响zxid的大小。A还是leader。

2019-10-22
收起评论