Zookeeper简介(一)

2017-10-23  本文已影响56人  5d44bc28b93d

Zookeeper简介

1. Introduction


ZooKeeper是一种为分布式应用所设计的高可用、高性能且一致的开源协调服务,它提供了一项基本服务:
分布式锁服务。由于ZooKeeper 的开源特性,后来我们的开发者在分布式锁的基础上,摸索了出了其他的使用方法:配置维护、组服务、分布式消息队列、分布式通知/协调等。

2. zookeeper Data Modal


2.1 Znodes

zookeeper的节点与文件系统很类似,每一个节点相当于一个文件目录,而节点数据就相当于保存在目录里的数据

Znode的数据主要包含以下三项

2.1.1 节点的类型

2.2 Time in zookeeper

2.3 Zookeeper Stat Structure

2.3.1 结构介绍
2.3.2 zxid介绍
  1. cZxid: 是节点的创建时间所对应的Zxid格式时间戳。
  2. mZxid:是节点的修改时间所对应的Zxid格式时间戳。

3. ZooKeeper Sessions


在client和server通信之前, 首先需要建立连接, 该连接称为session.建立会话链接, 连接建立后, 如果发生连接超时, 授权失败, 或者显式关闭连接, 连接便处于CLOSED状态, 此时session结束.

4. ZooKeeper Watches


客户端可以在节点上设置watch,我们称之为监视器。当节点状态发生改变时(Znode的增、删、改)将会触发watch所对应的操作。当watch被触发时,ZooKeeper将会向客户端发送且仅发送一条通知,因为watch只能被触发一次,这样可以减少网络流量。

特点:

5. ZooKeeper access control using ACLs


权限的创建方式:Schemes:id:Permission

5.1 ACL权限概念

5.2 ACL Schemes

[zk: localhost:2181(CONNECTED) 10] getAcl /zookeeper
'world,'anyone
: cdrwa

[zk: localhost:2181(CONNECTED) 0] create -e /taozhi01 "23"
Created /taozhi01
[zk: localhost:2181(CONNECTED) 1] create -e /taozhi02 "23" digest:test:V28q/NynI4JI3Rk54h0r8O5kMug=:crwda
Created /taozhi02
[zk: localhost:2181(CONNECTED) 2] get /taozhi02
Authentication is not valid : /taozhi02
[zk: localhost:2181(CONNECTED) 3] addauth digest test:test
[zk: localhost:2181(CONNECTED) 4] get /taozhi02
23
cZxid = 0x400000090
ctime = Tue Oct 17 16:51:09 CST 2017
mZxid = 0x400000090
mtime = Tue Oct 17 16:51:09 CST 2017
pZxid = 0x400000090
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x5f13b3dee4002e
dataLength = 2
numChildren = 0


[zk: localhost:2181(CONNECTED) 1] create -e /taozhiming "123" ip:127.0.0.1:crwda
Created /taozhiming
[zk: localhost:2181(CONNECTED) 2] getAcl /taozhiming
'ip,'127.0.0.1
: cdrwa
[zk: localhost:2181(CONNECTED) 3] ls /taozhiming
[]
[zk: localhost:2181(CONNECTED) 4] get /taozhiming
123
cZxid = 0x400000086
ctime = Tue Oct 17 16:37:29 CST 2017
mZxid = 0x400000086
mtime = Tue Oct 17 16:37:29 CST 2017
pZxid = 0x400000086
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x5f13b3dee4002a
dataLength = 3
numChildren = 0
[zk: localhost:2181(CONNECTED) 5] 

Zookeeper quota

quota 用来限制节点
setquota -n/-d -n表示节点数 -d表示数据大小
但是即使节点超出限制也不会报错,所以当前不清楚具体用途

[zk: localhost:2181(CONNECTED) 25] setquota -n 2 /tao   
Comment: the parts are option -n val 2 path /tao
[zk: localhost:2181(CONNECTED) 26] listquota /tao    
absolute path is /zookeeper/quota/tao/zookeeper_limits
Output quota for /tao count=2,bytes=-1
Output stat for /tao count=1,bytes=0
[zk: localhost:2181(CONNECTED) 27] create /tao/tao01 ""
Created /tao/tao01
[zk: localhost:2181(CONNECTED) 28] create /tao/tao02 ""
Created /tao/tao02
[zk: localhost:2181(CONNECTED) 29] create /tao/tao03 ""
Created /tao/tao03
[zk: localhost:2181(CONNECTED) 30] create /tao/tao04 ""
Created /tao/tao04

zookeeper的常用命令


[zkshell: 0] help
ZooKeeper host:port cmd args
        get path [watch]
        ls path [watch]
        set path data [version]
        delquota [-n|-b] path
        quit
        printwatches on|off
        create path data acl
        stat path [watch]
        listquota path
        history
        setAcl path acl
        getAcl path
        sync path
        redo cmdno
        addauth scheme auth
        delete path [version]
        deleteall path
        setquota -n|-b val path

上一篇 下一篇

猜你喜欢

热点阅读