文章目录
-
- 1. ZooKeeper 是什么?
- 2. ZooKeeper 提供了什么?
- 3. Zookeeper 文件系统
- 4.四种类型的 znode
- 5. Zookeeper 通知机制
- 6. Zookeeper 做了什么?
- 7.zk 的命名服务(文件系统)
- 8. Zookeeper 集群管理(文件系统、通知机制)
- 9. Zookeeper 分布式锁(文件系统、通知机制)
- 10. 获取分布式锁的流程
- 11. Zookeeper 队列管理(文件系统、通知机制)
- 12. Zookeeper 数据复制有什么好处?
- 13. Zookeeper 工作原理
- 14. zookeeper 是如何保证事务的顺序一致性的?
- 15. Zookeeper 下 Server 工作状态
- 16. zookeeper 是如何选取主 leader 的?
- 17. Zookeeper 同步流程
- 18. 分布式通知和协调
- 19. 机器中为什么会有 leader?
- 20. zk 节点宕机如何处理?
- 21. zookeeper 负载均衡和 nginx 负载均衡区别
- 22. zookeeper watch 机制
|
|
1. ZooKeeper 是什么?
ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的
Chubby 一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交
的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给
用户。
客户端的读请求可以被集群中的任意一台机器处理,如果读请求在节点上注册了监听
器,这个监听器也是由所连接的 zookeeper 机器来处理。对于写请求,这些请求会同时发
给其他 zookeeper 机器并且达成一致后,请求才会返回成功。因此,随着 zookeeper 的集
群机器增多,读请求的吞吐会提高但是写请求的吞吐会下降。
有序性是 zookeeper 中非常重要的一个特性,所有的更新都是全局有序的,每个更新
都有一个唯一的时间戳,这个时间戳称为 zxid(Zookeeper Transaction Id)。而读请求
只会相对于更新有序,也就是读请求的返回结果中会带有这个 zookeeper 最新的 zxid。
2. ZooKeeper 提供了什么?
1、文件系统
2、通知机制
3. Zookeeper 文件系统
Zookeeper 提供一个多层级的节点命名空间(节点称为 znode)。与文件系统不同的是,
这些节点都可以设置关联的数据,而文件系统中只有文件节点可以存放数据而目录节点不
行。Zookeeper 为了保证高吞吐和低延迟,在内存中维护了这个树状的目录结构,这种特性
使得 Zookeeper 不能用于存放大量的数据,每个节点的存放数据上限为 1M。
4.四种类型的 znode
1、PERSISTENT-持久化目录节点
客户端与 zookeeper 断开连接后,该节点依旧存在
2、PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点
客户端与 zookeeper 断开连接后,该节点依旧存在,只是 Zookeeper 给该节点名称进
行顺序编号
3、EPHEMERAL-临时目录节点
客户端与 zookeeper 断开连接后,该节点被删除
4、EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点客户端与 zookeeper 断开连接后,
该节点被删除,只是 Zookeeper 给该节点名称进行顺序编号
5. Zookeeper 通知机制
client 端会对某个 znode 建立一个 watcher 事件,当该 znode 发生变化时,这些
client 会收到 zk 的通知,然后 client 可以根据 znode 变化来做出业务上的改变等。
6. Zookeeper 做了什么?
1、命名服务
2、配置管理
3、集群管理
4、分布式锁
5、队列管理
7.zk 的命名服务(文件系统)
命名服务是指通过指定的名字来获取资源或者服务的地址,利用 zk 创建一个全局的路
径,即是唯一的路径,这个路径就可以作为一个名字,指向集群中的集群,提供的服务的地
址,或者一个远程的对象等等。
7. zk 的配置管理(文件系统、通知机制)
程序分布式的部署在不同的机器上,将程序的配置信息放在 zk 的 znode 下,当有配
置发生改变时,也就是 znode 发生