Zookeeper原理
1.基本介绍
Zookeeper是一个由多个server组成的集群,分布、开源的应用程序协调服务,符合分布式服务ACP原理中的CP。它是集群的管理者,监视着集群中各个节点的状态,根据节点的反馈进行下一步合理操作。主要解决分布式应用经常遇到的数据管理问题,一些RPC框架(如点评pigeon、阿里dubbo的早期版本)使用ZK用来做服务发现和注册,点评的配置管理组件Lion用来做配置数据的获取更新,kafka⽤于检测崩溃,实现主题(topic)的发现,并保持主题的⽣产和 消费状态。zookeeper维护一个类似文件系统的数据结构。如图:

每个子目录项都被称作为 znode,和文件系统一样,自由增加及删除,唯一不同其可存储数据,并提供节点的通知机制:客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增加删除)时,zookeeper会通知客户端。Znode分为四种类型
- PERSISTENT-持久化目录节点。(客户端与zookeeper断开连接后,该节点依旧存在)。
- PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点。(客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号)
- EPHEMERAL-临时目录节点(客户端与zookeeper断开连接后,该节点被删除)
- EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点。(客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号)
集群中各server的角色分为:
- 领导者(leader):负责进行投票的发起和决议,更新系统状态。
- 学习者(lenner):跟随者(follower):Follower用于接收客户请求并向客户端返回结果,在选中过程中参与投票。②观察者(Observer):Observer可以接收客户端连接,将写请求转发给leader节点。但不参加投票过程,只同步leader状态。Observer目的在于扩展系统,提高读取速度。
- 客户端:请求发起方。
2.实现原理
2.1群首选举
群⾸为集群中的服务器选择出来的⼀个服务器,并会⼀直被集群所认可。设置群⾸的⽬的是为了对客户端所发起的ZooKeeper状态变更请求进⾏排序,包括:create、setData和delete操作。群⾸将每⼀个请求转换为⼀个事务,将这些事务发送给追随者,确保集群按照群⾸确定的顺序接受并处理这些事务。依据解管理权的原理,⼀个
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
