zookeeper定义:是一个分布式的,开放源码的分布式应用程序协调服务。
在zookeeper中分为三种角色
1、leader 领导者
2、follower 跟随者
3、observer 监视follower (是一个隐藏的)
在zookeeper(恢复模式/leader挂掉了/集群刚启动)节点状态分为四种
1、LOOKING:等待状态,一般出现在没有leader准备选举得得时候
2、LEADING:是已经选举出leader。
3、FOLLOWING:在还没有leader,正在进行选举状态
4、OBSERVERING:是leader和follower都产生后的状态
zookeeper的六大特性
-
顺序一致性:按照客户端发送请求的顺序更新数据。
-
原子性:更新要么成功,要么失败,不会出现部分更新。
-
单一性 :无论客户端连接哪个server,都会看到同一个视图。
-
可靠性:一旦数据更新成功,将一直保持,直到新的更新。
-
及时性:客户端会在一个确定的时间内得到最新的数据。
zookeeper的原子广播
通过跟随者的投票确定某一件事能不能做,故zookeeper跟随者最好是<=255个,并且是奇数
1.请求一开始到follower,follower会将请求发送给leader
2.leader将请求下发给所有的follower,follower来判断,并将结果返回给leader
3.将请求写入的文件分发到所有的follower------(最终一致性--及时在写入的过程中有节点连接不上,当恢复的时候还会把节点上写入数据)
zookeeper的zab协议分为两种
1.广播模式----选举出来leader,对外提供服务
2.恢复模式----选举leader,就是四大状态
zookeeper的选举机制
首先会通过自身ID(serverid(设置的myid)),ID大的优先,如果ID相同就会通过zxid选举,也是zxid大的优先,并且也遵守少数服从多数的原则
zookeeper的znode
znode是zookeeper自身的文件系统,为了快速的传输,通常它们都很小大约是1M,它会实时将DataNode的数据读取到,并发送到leader,在从leader读取各个znode文件合并后的数据,从而保证了它的实时性。这是也是它的六大特性的体现
znode它有分为四种:1.持久2.临时3.持久顺序4.临时顺序
进入zookeeper客户端的命令是:zkCli.sh -server 192.168.157.123:2181(2181端口号)
通过eclipse创建连接 Zookeeper zk=newzookeeper("192.168.79.125:2181",timeout,watcher)
这些就是简单的API
-
create - 在树形结构的位置中创建节点
-
delete - 删除一个节点
-
exists - 测试节点在指定位置上是否存在
-
get data - 从节点上读取数据
-
set data - 往节点写入数据
-
get chilren - 检索节点的子节点列表
-
sync - 等待传输数据
zookeeper的监听机制:监听是follower给出一个Watch,它监视leader的状态并将leader的状态告诉会给follower