1.什么是Zookeeper?
分布式应用程序协调服务软件,协调服务指的是统筹管理各个服务;Zookeeper维护一个类似文件系统的数据结构;
2.四种文件节点类型
1.1 PERSISTENT-持久化目录节点 客户端与zookeeper断开连接后,该节点依旧存在 1.2 PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点 客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号 1.3 EPHEMERAL-临时目录节点(没有子节点) 客户端与zookeeper断开连接后,该节点被删除 1.4 EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点(没有子节点) 客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号;
3.监听机制;
客户端监听它关心的目录节点,当节点发生(数据改变,被删除,子节点增加删除)时,zookeeper会通知客户端;并且从zookeeper中获取最新的信息(比如:多个服务器公用的配置信息); zookeeper的监听事件有四种 nodedatachanged # 节点数据改变 nodecreate # 节点创建事件 nodedelete #节点删除事件 nodechildrenchanged # 子节点改变事件
4.Zookeeper的主要功能?
配置管理 :
把配置文件交给zookeeper中某个目录节点来管理,当目录节点发生改变后zookeeper 会通知监听这个目录节点的客户端 告知文件已发生改变,这时客户端就可以重新从zookeeper拉取新的文件信息;
名字服务:
第一是 利用zookeeper类似于树形结构的,指定一个入口,利用不同的目录节点来存储不同的服务路径;
第二是 利用zookeeper中顺序节点的特性,制作分布式id序号生成器;
集群管理:
服务器的退出/加入:利用临时目录顺序节点的特点,有新的服务加入时,创临时目录顺序节点,当服务断开连接时,临时目录节点自动删除;
mater选举:利用选举机制;
分布式锁:
控制独占,利用zookeeper类似于文件系统的结构的特性,创建一个临时目录节点类似于枷锁,删除临时目录节点解锁;
控制时序,在父节点下创建一个临时顺序目录节点加一个锁,再根据创建临时目录节点的顺序执行一个删除一个后释放锁;
队列管理:
第一类,在约定目录下创建临时目录节点,监听节点数目是否是我们要求的数目。
第二类,和分布式锁服务中的控制时序场景基本原理一致,入列有编号,出列按编号
5.集群中的三种选举机制(发生在初始化启动和服务器运行故障)
每个服务器的数据是相同的(跟redis一样),zookeeper提供了三种方式:
3.1 LeaderElection
3.2 AuthFastLeaderElection
3.3 FastLeaderElection (最新默认)
6.集群中的选择机制的概念
1.serverid 服务器ID;编号越大成为领导的权重越大;(初始化状态对比服务器id,投票数过半就结束了) 2.Zxid:数据事务ID;服务器中存放的最大数据事务ID.值越大说明数据越新,在选举算法中数据越新权重越大。(发生故障,剩余的运行中服务根据事务id比较) 3.Epoch:逻辑时钟 也叫投票的次数,同一轮投票过程中的逻辑时钟值是相同的,每投完一次票这个数据就会增加。 4.Server选举状态 LOOKING,竞选状态。 FOLLOWING,随从状态,同步leader状态,参与投票。 OBSERVING,观察状态,同步leader状态,不参与投票。 LEADING,领导者状态。 5. 领导者发生故障 整个集群暂停服务,等待重新选举;这时zxid 代表数据越新,权值也就越大。牺牲一定的A可用性,保证数据C一致性和P分区容错性,满足CP原则;
分布式系统中不可能同时满足
A(可用性)、C(一致性)以及P(分区容错性) ,Zookeeper保证的是CP;



