Zookeeper入门知识总结

目录

 

一、zookeeper是什么(概括)

二、zookeeper特点?

三、zookeeper分布式环境如何搭建,步骤?

四、zookeeper的常用命令(增、删、改、查、观察者、其他命令)  

五、zookeeper集群的角色和作用,observer的使用场景以及如何配置?

六、zookeeper节点类型有哪些?

七、Stat结构体相关参数?

八、请简述ZooKeeper的选举机制?

九、请简述zookeeper监听原理是什么?

十、请简述zookeeper数据的写流程?

十一、ZooKeeper的部署方式有哪几种?集群中的角色有哪些?集群最少需要几台机器?


一、zookeeper是什么(概括)

    Zookeeper是一个分布式协调服务的开源概架,主要用来解决分布式集群中应用系统的一致性问题;
    ZooKeeper本质上是一个分布式的小文件存储系统,提供基于类似于文件系统的目录树方式的数据存储,
    并且可以对树中的节点进行有效管理,从而用来维护和监控你存储的数据的状态变化,
    通过监控这些数据状态的变化,从而可以达到基于数据的集群管理,
    诸如:统一命名服务、分布式配置管理、负载均衡、分布式锁、分布式协调等功能。

二、zookeeper特点?

    Zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群
    集群中只要有半数以上节点存活,Zookeeper集群就能正常服务
    全局数据一致:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的
    可靠性:如果消息被其中一台服务器接受,那么将被所有服务器接收
    顺序性:更新请求顺序进行,来自同一个Client的更新请求按其发送顺序依次执行
    数据更新原子性:一次数据更新要么成功(半数以上节点成功),要么失败,不存在中间状态
    实时性:Zookeeper保证客户端再一定事件间隔范围内获取服务器的更新信息,或则服务器失效的信息
    

三、zookeeper分布式环境如何搭建,步骤?

    集群规划:在hadoop节点上部署Zookeeper
    解压Zookeeper安装包到/opt/module/目录下
    重命名/opt/module/zookeeper-3.4.10/conf这个目录下的zoo_sample.cfg为zoo.cfg
    打开zoo.cfg文件,修改数据存储路径配置(dataDir),增加配置server.1=hadoop01:2888:3888...
    在/opt/module/zookeeper-3.4.10/这个目录下创建zkData
    在/zkData目录下创建一个myid的文件,在文件中添加与server对应的编号
    分发配置好的zookeeper到其他机器上,并修改myid文件中的内容
    

四、zookeeper的常用命令(增、删、改、查、观察者、其他命令)
  

    显示所有操作命令:help
    使用ls命令来查看当前znode中所包含的内容:ls path [watch]
    查看当前节点数据并能看到更新次数等数据:ls2 path [watch]
    普通创建:create
    含有序列:-s
    临时(重启或者超时消失):-e
    获得节点的值:get path [watch]
    设置节点的具体值:set
    查看节点状态:stat
    删除节点:delete
    递归删除节点:rmr
    查看历史命令:history
    重新执行指定命令编号的历史命令:redo

五、zookeeper集群的角色和作用,observer的使用场景以及如何配置?

     Leader:Zookeeper 集群工作的核心,事务请求(写操作)的唯一调度和处理者,保证集群事务处理的顺序性;集群内部各个服务器的调度者
    Follower:处理客户端非事务(读操作)请求,转发事务请求给 Leader;参与集群Leader 选举投票
    Observer:(对于访问量比较大的集群,可以新增观察者角色)
            观察者角色,观察Zookeeper集群的最新状态变化并将这些状态同步过来,对于非事务请求可以进行独立处理,对于事务请求,则会转发给 Leader服务器进行处理
            不会参与任何形式的投票只提供非事务服务,通常用于在不影响集群事务处理能力的前提下提升集群的非事务处理能力
            
    

六、zookeeper节点类型有哪些?

    持久(Persistent):客户端和服务器端断开连接后,创建的节点不删除
    短暂(Ephemeral):客户端和服务器端断开连接后,创建的节点自己删除
    持久化目录节点:客户端与Zookeeper断开连接后,该节点依旧存在
    持久化顺序编号目录节点:客户端与Zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号
    临时目录节点:客户端与Zookeeper断开连接后,该节点被删除
    临时顺序编号目录节点:客户端与Zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号
    

七、Stat结构体相关参数?

    czxid-创建节点的事务zxid
    ctime - znode被创建的毫秒数(从1970年开始)
    mzxid - znode最后更新的事务zxid
    mtime - znode最后修改的毫秒数(从1970年开始)
    pZxid-znode最后更新的子节点zxid
    cversion - znode子节点变化号,znode子节点修改次数
    dataversion - znode数据变化号(修改一次会加一)
    ephemeralOwner- 如果是临时节点,这个是znode拥有者的session id。如果不是临时节点则是0
    dataLength- znode的数据长度
    numChildren - znode子节点数量

八、请简述ZooKeeper的选举机制?

   半数机制:集群中半数以上机器存活,集群可用。所以Zookeeper适合安装奇数台服务器
    

九、请简述zookeeper监听原理是什么?

     首先要有一个main()线程
    在main线程中创建Zookeeper客户端,这时就会创建两个线程,一个负责网络连接通信(connet),一个负责监听(listener)
    通过connect线程将注册的监听事件发送给Zookeeper
    在Zookeeper的注册监听器列表中将注册的监听事件添加到列表中
    Zookeeper监听到有数据或路径变化,就会将这个消息发送给listener线程
    listener线程内部调用了process()方法
    

十、请简述zookeeper数据的写流程?

    Client向ZooKeeper的Server1上写数据,发送一个写请求
    如果Server1不是Leader,那么Server1 会把接受到的请求进一步转发给Leader,因为每个ZooKeeper的Server里面有一个是Leader。这个Leader 会将写请求广播给各个Server
    当Leader收到半数以上(大多数)Server 数据写成功的信息,说明该数据写成功了
    Server1会进一步通知Client数据写成功了,这时就认为整个写操作成功
    

十一、ZooKeeper的部署方式有哪几种?集群中的角色有哪些?集群最少需要几台机器?

    部署方式单机模式、集群模式
    角色:Leader和Follower
    集群最少需要机器数:3

猜你喜欢

转载自blog.csdn.net/Poolweet_/article/details/103811256
今日推荐