zoukankan      html  css  js  c++  java
  • 初识 ZooKeeper

    一、什么是ZooKeeper:

       ZooKeeper来源于Apache Hadoop 子项目,是一个高性能、分布式的、开源应用协调服务。分布式应用可以基于它实现协调服务,比如同步、集群、领导选取,以及分布式系统的配置管理、命名服务。

    二、安装:

      1、解压 :

       1 tar -zxvf zookeeper-3.5.4-beta.tar.gz 

      2、配置环境变量:

      

    三、常用配置(只列举所需的最少配置选项):

      1、tickTime=2000  用于计算的时间单元(心跳时间默认 2000ms,单位毫秒),配置该项用来维护客户端和服务器之间的连接

      2、dataDir=/local/zookeeper/dataDir  指定存储持久化数据的本地文件系统位置      

      3、dataLogDir=/local/zookeeper/logDir  指定存储日志的本地文件系统位置

      4、clientPort=2181  指定监听客户端连接的端口(默认为2181)      

    以上单机所需配置

    ----------------------------------------------------------------------------------------------------------------------

    ----------------------------------------------------------------------------------------------------------------------

    以下集群所需配置

      5、initLimit=5  设定了所有跟随者与领导者进行连接并同步的时间范畴,以tickTime的倍数来表示。如果在设定的时间段内,半数以上的跟随者未能完成同步,领导者便会宣布放弃领导地位,然后进行另外一次领导者选举。如果这种情况经常发生,则表明设定的值太小

      6、syncLimit=2  设定了允许一个跟随者与领导者进行同步的时间,以tickTime的倍数来表示。如果在设定的时间段内,一个跟随者未能完成同步,会自己重启。所有关联到跟随者的客户端将连接到另一个跟随者

      7、server.1=zooKeeperServerIp1:2888:3888  

      8、server.2=zooKeeperServerIp2:2888:3888

      9、server.3=zooKeeperServerIp3:2888:3888

      注:server.n=hostname:port1:port2  

        1、n 是服务器ID,表示这个是第几号服务器,取值在 1~255 之间。可以通过一个名为myid的纯文本文件设定服务器ID,这个文件保存在dataDir 参数所指定的目录中

        2、hostname 是这个服务器的网络ip地址

        3、port1 是跟随者用来连接领导者的端口

        4、port2 是在leader宕机时专门用来进行选举leader所用

    四、数据模型:

     

     

      1、ZooKeeper 维护着一个树形层次结构,树中的节点被称为znode。znode可以用于存储数据(默认限制在1MB以内),并可指定相关的访问控制权限ACL (ZK节点有5种操作权限:crwda,增、查、改、写、删、管理),以及设定“观察机制”(Watch);

      2、znode的四种模式:持久(persistent),临时(ephemeral),持久序列(persistent_sequential),临时序列(ephemeral_sequential)

        2.1、持久模式(persistent): 当创建该 znode 的 client 断开了连接也存在,可以有child node。创建命令 create path data

        2.2、临时模式(ephemeral):当创建该 znode 的 client 断开了连接就自动删除,不能有child node。创建命令 create -e path data

        2.3、持久序列模式(persistent_sequential):在持久模式的基础上会自动编号。创建命令 create -s path data

        2.4、临时序列模式(ephemeral_sequential):在临时模式的基础上会自动编号。创建命令 create -s -e path data

      3、演示:

      4、常用命令:

    五、集群结构:

      1、ZK Server 有两种不同的运行模式,一种是独立模式(单机),即只有一台ZK Server,还有一种是复制模式(集群),即多台ZK Server。ZooKeeper 通过复制来实现高可用和可恢复性,只要ZK Server集群有半数以上机器可用,就能保证服务继续。

      2、在ZK Server 集群模式下,所有的机器会通过选举来选出一台为领导者(leader)的机器,其他的机器被称为跟随者(follower)。所有的写请求都会被转发给 leader,再由 leader 将更新广播给跟随者。当半数以上的 follower 已经将修改持久化后,leader 才会提交这个更新,然后客户端才会收到更新成功的响应。

      3、一致性:

        3.1、顺序一致性:来自任意特定客户端的更新都会按其发送顺序被提交;

        3.2、原子性:每个更新要么成功,要么失败;

        3.3、单一系统映像:一个客户端无论连接到哪一台服务器,所看到的都是同样的系统视图;

        3.4、持久性:一个更新一旦成功,其结果就会持久存在并且不会被撤销;

        3.5、及时性:任何客户端所看到的滞后系统视图都是有限的,不会超过几十秒。

      4、多个ZKServer 实例共同组成了ZooKeeper集群服务,默认Client可以连接到其中任何一台ZKServer(leaderServes=no,设置 leader不接受Client 的连接);

     

    ----------------------------------------------------------------------------------------------------------------------

    注:参考书籍《Hadoop权威指南》

  • 相关阅读:
    elasticsearch 基础
    docker 安装ElasticSearch的中文分词器IK
    Netty的编解码,粘包拆包,心跳检测机制
    Spring IOC 常用的注解
    @JsonView的使用
    lombok的使用以及其中的坑
    Zuul的高级使用
    SpringBoot 整合 ActiveMq
    转:Maven <resource>标签
    码农经常读错的单词
  • 原文地址:https://www.cnblogs.com/haiyangwu/p/10335630.html
Copyright © 2011-2022 走看看