02 Zookeeper基本理论及相关命令

一、概述

1、Zookeeper本身是Yahoo开发的一套用于 进行分布式管理和协调框架,后来贡献给了Apache
2、 Zookeeper提供了 中心化服务:管理配置信息,统一命名,提供分布式锁,提供组策略等
3、Zookeeper是根据Google的 Chubby Lock来进行设计的
4、zookeeper里面有leader节点和follower节点,那么zk是不是主从结构?
不是。主从结果的特点是需要预先指定哪一个主节点哪一个是从节点,不管重启了多少次,主节点都是不会变的。主节点宕机,集群就不能对外提供服务了,因为主从之间是不能进行切换的。而zk的leader节点并没有事先执行,是不确定的,是通过选举产生的,而且leader宕机之后,可以选举产生另外的leader。
之所以比如mysql的主从复制,主节点挂掉之后,从节点会变成主节点,是因为原本就在从节点上面配置了主节点的配置,主从安装在了一个节点上。也不能是真正意义上的主从互换。

很多大数据组件都是动物的标志,例如hadoop是一头大象,所以zookeeper是动物园管理者,也体现了zk在分布式系统中的管理和协调的地址。

二、zookeeper的特点

1、Zookeeper本身是一个 树状结构 - Znode树
2、Zookeeper的根节点是/
3、每一个节点叫做一个Znode节点
4、每一个节点都 需要存储数据,而且是必须指定的,一般是对这个节点的描述信息
5、在Zookeeper中,不存在相对路径的说法,所有的路径 必须从/开始
6、Zookeeper中,要求节点的路径是唯一的 ,不能有两个/video路径,即便他们存储的数据不同
7、Zookeeper将树状结构以及数据维系在 ==内存以及磁盘 ==中
①维系在内存中的目的是为了 读写快
②维系在磁盘中的目的是为了 崩溃恢复
8、Znode树在磁盘中的存储路径由 dataDir来决定
9、znode本身的特点,路径不允许重复以及节点可以存储数据,理论上说,zk可以用来 做缓存服务器,key值用作目录,value存储在znode的数据上;但是,实际过程中不那么做,意味着Zookeeper要面临大量的Znode读写并且要大量占用内存,导致Zookeeper本身的对分布式框架的协调能力降低;而且很重要的一点是Zookeeper的读写效率还不如Redis之类的服务器,所以一般用zk来做分布式协调管理的框架。
10、在Zookeeper中,每一次的写操作(connect,create,delete,rmr,set等)都是一个事务,并且会为这个事务分配一个全局递增的编号,这个编号成为事务id,简写为Zxid (也就是zk的每一次操作都有记录,而且有顺序)
11、临时节点下面是不能挂子节点的。

三、常用命令

sh zkServer.sh start启动服务器端
sh zkServer.sh stop停止服务器端
sh zkCli.sh启动客户端
quit退出客户端
sh zkServer.sh status查看服务器运行状态
ls /查看根路径下的节点
create /log ‘manage log servers’在根节点下创建一个子节点log并且指定数据
delete /log删除根节点下的子节点log
rmr /video递归删除
get /video查看video节点的数据以及节点信息
set /video ‘videos’修改节点数据
create -s /video ’ ’创建顺序节点
create -s -e /video ’ ’创建临时顺序节点

zookeeper是不允许创建两个同名路径的,但是通过顺序节点可以同时请求创建/video节点,zk会自动的在节点后面添加序号,例如/video0000000004,/video0000000005

利用顺序节点实现zk的统一命名。

四、Znode节点信息

属性解释
cZxid0x9创建当前节点的事务id,表示第9个事务创建当前节点
ctimeWed Mar 04 01:01:09 PST 202创建时间
mZxid0x9修改当前节点数据的事务id,表示第9个事务修改了节点数据
mtimeWed Mar 04 01:01:09 PST 2020修改时间
pZxid0x9导致子节点个数发生变化的事务id
cversion0记录当前节点的子节点个数的变化次数
dataVersion0数据版本,记录当前节点数据修改的次数
aclVersion0权限版本,记录当前节点权限修改的次数
ephemeralOwner0x0如果是持久节点,值为0;如果是临时节点,值为sessionid
dataLength13数据的字节个数
numChildren0子节点的个数

五、节点类型

zk节点分为四类,临时/持久,顺序/非顺序;
临时节点时当会话结束,客户端退出,临时节点将会被删除

持久顺序节点 Persistent_Sequential create -s ‘/video’ ’ ’
持久非顺序节点 Persistent create ‘/video’ ’ ’
临时顺序节点 Ephemeral_Sequential create -e -s ‘/video’ ‘’
临时非顺序节点 Ephemeral create -e ‘/video’ ’ ’

六、zookeeper具有的特性

1、过半性-过半选举,过半存活,过半操作等
2、数据一致性。因为有原子广播,所以访问任何一个zk节点获取到的数据都是相同的。【follower也可以接受请求,leader收到请求,发送给每一follower,follower接收到请求,会交给leader老大再发送给follower】
3、原子性 - 一个操作要么所有的节点都执行要么所有的节点都不执行(也是原子广播控制的)
4、可靠性 - 具有崩溃恢复机制,有效的避免单点故障
5、实时性 - 可以利用代码或者工具实时监控Zookeeper的变化,实时的监控节点的变化
6、顺序性 - leader会将请求放到队列中发送给follower,这就保证所有follower收到请求的顺序是一致的(不会存在一个follower上先执行a再执行b,而另外一个节点先执行b再执行a的情况);另外一个顺序性的体现是事务id和epochid全局递增的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值