ZooKeeper技术

Master选举 当主机断掉的时候,其他的服务器通过选择,推选出一台新的服务器作为Master主机。

应对网络抖动,所有的服务器监听到master被删除的时候,判断自己是否是Master,

ZooKeeper实现Master选举

ZooKeeper分布式锁:



测试本地需要安装三台虚拟机作为服务器,
集群模式,

单机模式,

伪集群模式, 所有的集群服务都是在一台服务器上,端口号还是有区分的,



客户端使用:
./zkcli.sh -timeout 0 -r -server ip:port

./zkcli.sh -timeout 5000 -server 192.168.1.103



h密令

ZooKeeper数据结构是树状

ls path :查看一个节点下面的所有子节点信息。
stat path[watch]:节点的状态信息。
每一次操作都会分配一个事物id,

悲观锁与乐观锁机制:
悲观锁每次只允许一个线程读取同一资源,
乐观锁一次可支持多个线程读取,在修改操作的时候,加上version版本号来保证数据
的同步正确性。

get /node_1/node_1_1:查看节点数据的内容
ls2 path [watch] :除了可以列出当前节点的子节点还可以列出状态信息。
create [-s] [-e] path data acl : eg: create /node_3 123

create -e /node_3/node_3_1 234 :创建的临时节点
ls /node_3

quit:退出
创建的是一个临时节点,在客户端结束以后,临时节点会自动的删除掉。

create -s /node_3_1 234
:顺序节点,可以利用Zookeeper的顺序节点特性来

set path data [version]:修改节点数据值  可以选择是否带版本
每次修改,不管值是否一致,dataversion都会自动增长。

delete path [version]:删除操作
只能删除没有子节点的节点。

rmr /node_3 :会循环的删除, 包含子节点的节点都会被删除。

get /node_1:希望添加一些限制条件,子节点的个数,值对应得长度

setquota -n|-b val path :设置-n(子节点的个数),-b(值得长度)

setquota -n 2 /node_1:

发现超限的时候Zookeeper会在bin目录下面的zookeeper.out里面记录警告信息
但是依然会创建成功的,

listquota /node_1:查看配额信息与状态信息。

delquota [-n|-b] path:删除子节点的配额。


connect host:port:连接到其他服务器
history:查看所有执行的命令行
redo 14:重复执行指定的密令



两种开源实现的客户端:

ZKclient 

Cutator





猜你喜欢

转载自tangkuo.iteye.com/blog/2289835