0
点赞
收藏
分享

微信扫一扫

zookeeper详解

Zookeeper旨在分布式应用中,提供可靠的、可扩展的、分布式的、可配置的协调机制来管理整个集群的状态。

Zookeeper旨在分布式应用中,提供可靠的、可扩展的、分布式的、可配置的协调机制来管理整个集群的状态

 

一,Zookeeper的应用场景

1,集群管理

a,掌控集群服务器的数据

b,掌控集群服务器的地址

c,监控集群服务节点的运行状态,是正常运行还是宕机

2,统一命名服务:为集群中的每台服务器命名,便于管理。要求命名要具备全局唯一性

3,统一配置管理:使得集群全部或部分节点的配置信息保持一致

4,实现集群内部的主备切换,从而避免单点故障问题

5,实现数据的订阅和发布

6,分布式环境下的协调通知 

7,实现分布式锁服务。在分布式环境下之前所学的同步代码块、重入锁机制等不能满足,因为是针对一台服务器内部的多个线程而言。所以要实现分布式锁,需要用新的技术和思路来实现。

针对第7点锁的补充:

活锁的产生:线程在执行任务中,由于某些条件的产生, 导致任务重新执行,再次碰撞,再碰撞,依次循环往复,就成型了活锁。处于活锁的线程都不能抢占到资源,危害是活锁的线程是非阻塞的,会造成CPU空转,白白耗费CPU资源。

二,Zookeeper的由来

来源于雅虎研究院,意思是动物园管理员,借鉴了Google的一篇论文《The Chubby Lock Service For losely coupled distributed System》。

1,Yahoo 2010年

2,Hadoop集群

3,Hive

4,Pig

5,Hbase

三,zookeeper结构

 

zookeeper详解_服务器

 

1,zookeeper有一个根节点 /(可以通过 ls /查看)

2,每一个节点都可以有自己的子节点

3,每一个节点称为znode节点

4,多个znode节点最终所形成称为znode树

5,每个znode节点都可以存储数据

6,zookeeper为了提供快速的数据访问,会将数据维系在内存中

7,zookeeper为了防止数据丢失,也会在磁盘上进行落地存储,存储的路径可以通过配置文件来指定(zookeeper/config/zoo.cfg下,dataDir=/home/software/zookeeper-3.4.7/tmp)

8,zk的所有操作指令,比如 查看、创建、更新、删除都是基于路径来操作的

9,zookeeper中的路径是具有全局唯一性的,所有可以基于这个特性来实现命名服务。

Zookeeper服务端指令

指令

说明

sh zkServer.sh start

启动zk服务的

sh zkServer.sh stop

停止zk服务

sh zkServer.sh restart

重启zk服务

sh zkServer.sh status

查看zk服务角色,有:

Standalone

Leader

Follower

Observer

sh zkCli.sh

进入zk客户端

 

Zookeeper客户端指令

指令

说明

示例

ls

查看

ls  /  查看根路径

ls /park01 查看park01路径

create

创建

create /park02 ""

create /park02/node01  创建park02的子节点

get

获取指定节点信息

cZxid = 0x2   #创建此节点的事务id

ctime = Wed Jan 17 10:55:25 PST 2018 #创建此节点的时间戳

mZxid = 0x2 #修改此节点的事务id

mtime = Wed Jan 17 10:55:25 PST 2018 #修改此节点的时间戳

pZxid = 0x4

cversion = 1

dataVersion = 0

aclVersion = 0

ephemeralOwner= 0x0 #如果此节点不是临时节点,则为0

dataLength = 9#数据长度

numChildren = 1 #子节点数量

set

更新节点数据

set  /park01 hellozk

delete

删除子节点为空的节点

delete /park01

rmr

递归删除指定节点

rmr  /park02

quit

(或ctrl+c)

退出客户端

create -e 

创建临时节点,当创建此节点的客户端下线时,节点被删除。

create -s

创建顺序节点,每次创建节点时,会跟上一个递增的顺序号

create -e -s

创建临时顺序节点

 

 

 

举报

相关推荐

0 条评论