zookeeper简单学习总结(一)

阅读更多

       zookeeper是一个集中服务的开源框架,现在的版本是3.4.14,它可用于管理配置信息、命名空间、分布式同步以及提供分组服务。它的数据存在于内存中,结构类似于树结构,具有高吞吐量低延迟的特性,集群可靠性也比较高。

    在zookeeper中只有绝对路径的概念,没有相对路径,它是以"/"左斜线作为开始的根节点的,每一个节点叫做znode节点,每一个节点都必须有个value值,节点的类型可以是持久节点、持久有序节点、临时节点、临时有序节点,持久有序是指数据不会随着应用程序的存在而存在,只有zookeeper没有退出运行,那么数据会一直存在,有序是指不同客户端在争抢创建同一个节点时将会在该节点下生成一系列有序的value值,这也是zookeeper提供的高可用性来保证的,该有序的value值是一个带符号的10位十进制序号,如app节点下面争抢创建一个为app2的子节点,其中一台客户端创建了一个节点为app20000000003的有序节点;临时节点则和持久节点刚好相反,它是在应用程序下线或者过期时间到达后就自动删除了。作为一个快速高效响应的框架,它要求存储的数据不能超过1M。

zookeeper简单学习总结(一)_第1张图片
     在Windows上安装完成zookeeper,然后进入安装目录的bin下面,通过zkServer.cmd来启动服务,在启动

zkCli.cmd,就可以进入到zookeeper的命令模式编辑zookeeper中的数值,通过help命令,我们看到有以下属性
   zookeeper简单学习总结(一)_第2张图片
    主要说明下几个命令:

    1.ls---用于获取指定节点下面的所有子节点信息,如ls /

    2.create---用于在指定路径下面创建子节点,-s是指顺序节点,-e是指临时节点,默认创建的是持久节点,如创建持久有序节点s1,create  -s  /s1 123

    3.get---获取节点下面的具体信息如图所示

     zookeeper简单学习总结(一)_第3张图片
    456表示节点zk的value值;

    cZxid表示创建该节点时的zxid,zxid又称为事务id,它是一个全局的有序值;

    ctime表示该节点的创建时间;

     mZxid表示修改该节点后的最后的zxid;

     mtime表示修改该节点的最后时间;

     pZxid表示该节点的子节点的最后修改zxid;

     cversion表示该节点的子节点变更的次数;

     dataVersion表示该节点被修改的次数;

     aclVersion表示该节点的acl被修改的次数;

     ephemeralOwner表示临时节点所有者的会话id,非临时节点为0;

     dataLength表示该节点的value值数据长度;

     numChildren表示该节点下的子节点数量,不包括子节点下的子节点。

    4.set---表示设置指定节点的最新值,如set /zk 789,它会更新mZxid,mtime,dataVersion,dataLength等这几个属性。

     5.delete---表示删除指定节点,如delete /zk/app2,如果指定节点下面有子节点,则不能删除成功。

     6.sync---表示等待指定节点的数据同步。

     了解完zk的client端的操作,我们来看下集群配置下的最简单的配置,进入到zk安装路径下的conf文件夹,打开zoo.cfg文件,我们会为其配置如下的

tickTime=2000
initLimit=10
syncLimit=5
dataDir=D:/zookperData/zookper1/data
dataLogDir=D:/zookperData/zookper1/dataLog
clientPort=2181

server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890

     我们的集群是配置在本机上面,同时开启3个服务端,我们说明下这些参数的含义

     tickTime---用于集群中的leader和follower之间的心跳检测时间,也用于与客户端进行会话超时管理,目前允许最小为2倍tickTime,最大为20倍tickTime的设定。

     initLimit---用于集群中的leader和follower之间完成初始化同步时能容忍的最多心跳次数。

     syncLimit---用于集群中的leader和follower之间请求和应答能容忍的最多心跳次数。

     dataDir---用于内存数据库快照的文件和存放事务日志(没有指定dataLogDir时)的路径。

     dataLogDir---专门用于存放事务日志的路径。

     clientPort---用于客户端访问zookeeper时的访问接口。

     server.1表示第一台服务器的地址,这个1和dataDir路径下的myid文件中的内容相同,在这个文件中存放的数据也是1,该文件没有后缀,这个是必须要注意的情况,localhost:2888:3888分别表示服务端的地址:leader和follower直接数据同步的端口:选举leader时的端口。

  • zookeeper简单学习总结(一)_第4张图片
  • 大小: 29.6 KB
  • zookeeper简单学习总结(一)_第5张图片
  • 大小: 10.2 KB
  • zookeeper简单学习总结(一)_第6张图片
  • 大小: 7.3 KB
  • 查看图片附件

你可能感兴趣的:(zookeeper,zookeeper总结)