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

全部留言(11)

  • 最新
  • 精选
lizhaochao
每个znode的配置文件下 都有3个server的配置 这些server如何理解 是主机吗 znode和主机是1:N的关系吗

作者回复: 不是的。这3个配置是集群中所有的节点(一个机器上装一个ZooKeeper节点)。例如下面的配置表示集群中的3个节点配置: server.1=ali-1:2222:2223 server.2=ali-2:2222:2223 server.3=ali-3:2222:2223 myid文件保存节点的id。例如,如果myid的内容为2,就代表这个机器上的节点是server.2=ali-2:2222:2223。

2019-09-19
3
3
妥协
如果客户端从zookeeper读取数据,连接的节点发生切换后,会读到比之前读老的数据吗?zookeeper是如果保证单调一致性的?

作者回复: 不会。一个新ZooKeeper节点只有比客户端以前连接的节点的状态新,也就是说新节点的zxid不比旧节点的zxid小,才可以处理来自客户端的请求。

2020-05-02
2
1
而立斋
myid可以自动生成吗?为啥都要自己去配置。不可以默认。zk自己不就可以做配置中心吗?

作者回复: > myid可以自动生成吗? 不可以。理论上是可以自动生成的,但是ZooKeeper没有提供这个选项。例如Kafka节点的broker.id就是可以自动生成的。 > zk自己不就可以做配置中心吗? 是的。

2020-04-19
bbbi
老师您好!有一个问题,就是节点的自增ID最大时多少? 如果自增ID用完了会有什么后果吗?

作者回复: 这个ID用的是zookeeper.jute里面的cversion: class Stat { long czxid; // created zxid long mzxid; // last modified zxid long ctime; // created long mtime; // last modified int version; // version int cversion; // child version int aversion; // acl version long ephemeralOwner; // owner id if ephemeral, 0 otw int dataLength; //length of the data in the node int numChildren; //number of children of this node long pzxid; // last modified children } ID从0开始一直递增到2147483647,到-2147483648,到-1, 最后回到0。做递增操作的是PrepRequestProcessor.java的以下代码: int newCversion = parentRecord.stat.getCversion()+1;

2020-02-14
2
ican_只会0到9
ClientA: 08:49:13,323 [myid:127.0.0.1:2182] - INFO [main-SendThread(127.0.0.1:2182):Cli] - Session establishment complete on server localhost/127.0.0.1:2182, sessionid = 0x30000timeout = 30000 Client B: 09:23:29,494 [myid:127.0.0.1:2183] - INFO [main-SendThread(127.0.0.1:2183):ClientCnxn$SendThread@1394] - Session establishment complete on server localhost/127.0.0.1:2183, sessionid = 0x300001aeecf0000, negotiated timeout = 30000 每次客户端连接的都不一样,这个是随机的吗?不是都主动连接到leader?

作者回复: 是的。假设connectString中有三个节点的访问信息。每次客户端建立连接都是随机选取一个节点。这样可以起到负责均衡的作用。

2019-09-08
2
ican_只会0到9
老师,ZK只有一个node时是standalone,集群是quorum模式,是这样子吗?

作者回复: 是的。

2019-09-07
金子般的心
myid 文件需要放在每个节点的dataDir目录下

作者回复: 是的

2019-08-22
Nick
需要新建myid文件 /data/zk/quorum/node1/myid内容为1 /data/zk/quorum/node2/myid内容为2 /data/zk/quorum/node3/myid内容为3
2021-06-01
1
4
蜥蜴1214
老师,想问下。follower会把写请求转发给leader,那如果,客户端a连接的follower。而客户端b连接leader。会不会出现两个客户端几乎同时发写请求,客户端b稍晚一点,但是经过转发,反而认为a发出的请求在前面?
2020-11-10
1
xulong
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing /home/lighthouse/tools/apache-zookeeper-3.7.1-bin/bin/../conf/zoo-quorum-node1.cfg 一直找不到路径
2023-01-11
收起评论