大数据教程(3.3):zookeeper简介

       1、概念node

        ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:主从协调、服务器节点动态上下线、配置维护、域名服务、分布式同步(分布式共享锁)、组服务等。ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.3\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。算法

        Zookeeper自己就是一个分布式集群程序,集群的角色:Leader 和follower(Observer)只要集群中有半数以上节点存活,集群就能提供服务。因为zookeeper的以上特性,集群部署时,需安装为基数太。服务器

 

       2、 原理负载均衡

         ZooKeeper是以Fast Paxos算法为基础的,Paxos 算法存在活锁的问题,即当有多个proposer交错提交时,有可能互相排斥致使没有一个proposer能提交成功,而Fast Paxos做了一些优化,经过选举产生一个leader (领导者),只有leader才能提交proposer,具体算法可见Fast Paxos。所以,要想弄懂ZooKeeper首先得对Fast Paxos有所了解。 
        ZooKeeper的基本运转流程:
        一、选举Leader。
        二、同步数据。
        三、选举Leader过程当中算法有不少,但要达到的选举标准是一致的。
        四、Leader要具备最高的执行ID,相似root权限。
        五、集群中大多数的机器获得响应并接受选出的Leader。分布式

       3、特色oop

        在Zookeeper中,znode是一个跟Unix文件系统路径类似的节点,能够往这个节点存储或获取数据。若是在建立znode时Flag设置为EPHEMERAL(短暂的),那么当建立这个znode的节点和Zookeeper失去链接后,这个znode将再也不存在在Zookeeper里,Zookeeper使用Watcher察觉事件信息。当客户端接收到事件信息,好比链接超时、节点数据改变、子节点改变,能够调用相应的行为来处理数据。Zookeeper的Wiki页面展现了如何使用Zookeeper来处理事件通知,队列,优先队列,锁,共享锁,可撤销的共享锁,两阶段提交。优化

        

        4、Zookeeper文件系统
        每一个子目录项如 NameService 都被称做为znode,和文件系统同样,咱们可以自由的增长、删除znode,在一个znode下增长、删除子znode,惟一的不一样在于znode是能够存储数据的。 
        有四种类型的znode: 
        一、PERSISTENT-持久化目录节点 
        客户端与zookeeper断开链接后,该节点依旧存在 
        二、PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点 
        客户端与zookeeper断开链接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号 
        三、EPHEMERAL-临时目录节点 
        客户端与zookeeper断开链接后,该节点被删除 
        四、EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点 
        客户端与zookeeper断开链接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号 spa

        

        5、Zookeeper通知机制
        客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增长删除)时,zookeeper会通知客户端。server

 

        6、zookeeper使用场景blog

(1)采集任务接管

(2)服务主从选举

(3)分布式共享锁

(4)配置中心

 

        最后,zookeeper的使用场景固然不局限于博主举例出来的这几种,还有如dubbo将其使用为服务器注册中心、负载均衡等等;若是您对这块知识很是感兴趣,请关注博主并欢迎同博主交流。今天的教程就到这里,若是你们以为博主的分享不错,请点赞支持博主。

 

        参考文献:https://yq.aliyun.com/articles/588640

相关文章
相关标签/搜索