设为首页 | 加入收藏 | 新闻排行 海峡都市在线欢迎您!

实时·准确·聚焦

当前位置:海峡网 > 新闻 > 人物|观点 >

zookeeper核心原理(选举)

2018-01-20 11:53 | 海峡网 |
我要分享

上篇文章《hadoop系列:zookeeper(1)——zookeeper单点和集群安装》()我们介绍了zookeeper的两种安装方式,相信您的测试机或者VM上面已经有了一个可用的zookeeper环境了。本文是zookeeper讲解的第二篇文章,我们主要介绍zk中的重要基本原理。为后文给大家讲解zk的java api使用打下基础。无论您在工作中实际的角色是什么,如果您准备在实际工作中使用zookeeper技术,那么这篇文章介绍的基本原理您都应该了解。

2、zk的数据组织方式

首先我们在您的zk环境上使用zkCli.sh连接上去:

[root@vm2 ~]# zkCli.sh Connecting to localhost:2181 2015-08-12 23:43:53,624 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT 2015-08-12 23:43:53,639 [myid:] - INFO [main:Environment@100] - Client environment:host.name=vm2 2015-08-12 23:43:53,639 [myid:] - INFO [main:Environment@100] - Client environment:java.version=1.7.0_71 2015-08-12 23:43:53,642 [myid:] - INFO [main:Environment@100] - Client environment:java.vendor=Oracle Corporation 。。。。。。 。。。。。。 。。。。。。 。。。。。。 [zk: localhost:2181(CONNECTED) 0]

然后我们使用ls命令,查看zookeeper服务器上的数据存储信息:

[zk: localhost:2181(CONNECTED) 1] ls / [filesq, zookeeper]

当然您还可以使用很多命令,如下:

connect host:port get path [watch] ls path [watch] set path data [version] rmr path delquota [-n|-b] path quit printwatches on|off create [-s] [-e] path data acl stat path [watch] close ls2 path [watch] history listquota path setAcl path acl getAcl path sync path redo cmdno addauth scheme auth delete path [version] setquota -n|-b val path

如果您对以上命令感兴趣,可以查询zookeeper的官方文档去了解。本文的内容我们将从ls命令得到的zookeeper中的数据结构讲开。

2.1、znode

根据本小结第一部分的描述,很显然zookeeper集群自身维护了一套数据结构。这个存储结构是一个树形结构,其上的每一个节点,我们称之为“znode”。如下如所示:

这里写图片描述

每一个znode默认能够存储1MB的数据(对于记录状态性质的数据来说,够了)

可以使用zkCli命令,登录到zookeeper上,并通过ls、create、delete、sync等命令操作这些znode节点

znode除了名称、数据以外,还有一套属性:zxid。这套zid与时间戳对应,记录zid不同的状态(后续我们将用到)

那么每个znode结构又是什么样的呢?如下图所示:

这里写图片描述

此外,znode还有操作权限。如果我们把以上几类属性细化,又可以得到以下属性的细节:

czxid:创建节点的事务的zxid

mzxid:对znode最近修改的zxid

ctime:以距离时间原点(epoch)的毫秒数表示的znode创建时间

mtime:以距离时间原点(epoch)的毫秒数表示的znode最近修改时间

version:znode数据的修改次数

cversion:znode子节点修改次数

aversion:znode的ACL修改次数

ephemeralOwner:如果znode是临时节点,则指示节点所有者的会话ID;如果不是临时节点,则为零。

dataLength:znode数据长度。

numChildren:znode子节点个数。

2.2、znode中的存在类型
(声明:信息来自互联网,旨在传播!若侵权先联系hdnews@qq.com 否概不处理!)
网友评论
赞助链接
文艺专区