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

全部留言(4)

  • 最新
  • 精选
学无涯
老师,为什么Zookeeper不适合存储大量数据呀

作者回复: 1. 设计方面:ZooKeeper需要把所有的数据(它的data tree)加载到内存中。这就决定了ZooKeeper存储的数据量受内存的限制。这一点ZooKeeper和Redis比较像。一般的数据库系统例如MySQL(使用InnoDB存储引擎的话)可以存储大于内存的数据,这是因为InnoDB是基于B-Tree的存储引擎。B-tree存储引擎和LSM存储引擎都可以存储大于内存的数据量。 2. 工程方面:ZooKeeper的设计目标是为协同服务提供数据存储,数据的高可用性和性能是最重要的系统指标,处理大数量不是ZooKeeper的首要目标。因此,ZooKeeper不会对大数量存储做太多工程上的优化。

2019-08-19
2
19
你好旅行者
希望老师能展开来讲一讲,不要一笔带过,比如为什么ZK不能用来存大量的数据

作者回复: 好的,后面的章节我讲得细一些。

2019-08-20
4
飞翔
老师 zookeeper 会话的作用是什么? 我懂了zookeeper 会话啥时候建立,啥时候清除, ping心跳会话激活。但是搞会话这个机制的意义在哪里? 比如我就没有会话,我客户端就用tcp机制连接server,然后发送消息,我就不主动关闭,也不设置超时时间。会有啥问题?

作者回复: 会话主要是为实现临时节点这个特性。临时节点在会话过期以后要被删除。 etcd就没有会话的机制,但是可以通过lease来实现类似的机制。 按你说的那种方式,ZooKeeper节点不知道你的客户端是否还在正常运行。对于一个TCP连接,ZooKeeper节点没有办法区分是另一端已经失败还是另一端没有失败只是没有发送数据。TCP的keepalive机制可以探测TCP是否断掉,但是Keepalive time的时间很长。另外TCP的keepalive机制只能判断TCP层是否出错,没有办法知道客户端是否失败。

2019-10-22
2
成成
讲得很清楚

作者回复: 谢谢

2020-03-29
收起评论