zookeeper是一个开源的小型的文件存储系统或者说框架,主要用于,当一个项目的需求增大,需要集群分布式来完成解决功能问题,主要的功能是监听其节点的变化与状态,
保持数据的一致性是Zk的最重要的特征也是集群能够实现的重要保证,比如:我们搭建服务器集群的时候,就要求有虽然服务器不同但是完成的功能是相同的,就需要zk来展示不同服务器之间的数据一致性。
在zk的作用下虽然服务器集群有很多服务器,但是看起开和处理上更像是一台服务器,一个服务器的关于节点相关操作会同步到所有服务器上
在zookeeper内部的角色中主要分为三个角色,
zk的节点称为(znode)是树状的结构,类似于我们电脑的文件系统,但是不同的是zk的节点不仅仅有自己的id名字,还可以存储小部分信息。同时我们通过命令的方式可以操作节点新增,查看节点信息,删除,不过我们做的最多的是查看。
ZooKeeper Watcher
- leader(老大):它需要其他的角色通过选举产生,而leader的选举结果在我们操作下是可以控制的,leader负责写的操作,然后会把写以后的状态同步给其他的角色,还负责其他角色管理调度。
- Follower(跟随者)主要负责读的操作,随之同步leader的数据信息,还参与选举,具有选举权,只有当leader挂掉了才有被选举权
- Observer(旁观者)没有选举权,只是用来增加服务器集群的性能,
事件的监听功能,主要用于对节点的状态改变进行监听,这个是zk比较重要的功能,在很多时候我们的项目主要秒杀的功能来吸引用户,而大部分基于集群分布式的服务器系统,秒杀功能的实现底层需要与zk的监听息息相关!!
阿里巴巴集团开源的分布式服务框架 Dubbo 中使用 ZooKeeper 来作为其命名服务,维护全局的服务地址列表。