zookeeper简介

分布式管理工具,基于原子广播zab协议(存数据是加锁的),为分布式而生,适合存储少量数据,提供数据及节点变化监听。

应用:统一命名服务,配置管理,集群管理,共享锁,队列管理。

一:集群搭建:

0、放开防火墙

1、安装jdk(zookeeper服务器用java编写,依赖jdk)

2、vim /etc/profile 配置java和zk的环境变量

3、mv zoo_sample.cfg zoo.cfg

4、改hosts,并可以ping通

5、vim zoo.cfg 修改dateDir=/usr/local/soft/zookeeper-new/data

6、zoo.cfg最后添加

server.0=lolip12:2888:3888

server.1=lolip13:2888:3888

server.2=lolip14:2888:3888

7、在dateDir下创建myid文件,并标识,内容为server.后面的数字

8、启动,节点都要启动,zkServer.sh start

9、如果出现拒绝连接,看hosts中,127.0.0.1  lolip12(就是那啥) 是否有对应,有就删掉。

10、启动之后,查看状态,zkServer.sh status,只会选举出一个leader



二:zk简单了解

zk的配置:



配置信息在客户端和服务端连接时可以重新配置,如超时信息。

zkCli.sh。客户端连接本机的zk,集群中连接任何一个都可使用。

zk采用树形文件结构存储管理存储数据。初始只有一个/的根节点

命令:ls     create    get    set    rmr(递归删除)    delete(有子节点则不能删除)



节点类型:

短暂:会话结束后节点就会被删除,此类型不能有子节点目录(KeeperErrorCode = NoChildrenForEphemerals)。

持久:持久存在。


三:zk的原生api使用


zk大概有三套api,原生api,zkClient,curator

原生api不支持递归创建和递归删除。

zkClient可以递归创建和递归删除,watch从读操作中分离了,改为了设置监听,不用反复监听了。

原生api:



四:watch触发器

Zookeeper的watch实际上要处理两类事件:
1、连接状态事件(type=None, path=null),这类事件不需要注册,也不需要我们连续触发,我们只要处理就行了。
2、节点事件,节点的建立,删除,数据的修改。它是one time trigger,我们需要不停的注册触发,还可能发生事件丢失的情况。
上面2类事件都在Watch中处理,也就是重载的process(Event event)
节点事件的触发,通过函数exists,getData或getChildren来处理这类函数,有双重作用:
1、注册触发事件

2、函数本身的功能

节点事件类型:


zk可以为所有的读操作设置watch监听器,包括getData()、getChildren()和exists()。

ZooKeeper所管理的watch可以分为两类:
1、数据watch(data  watches):getData()和exists()负责设置数据watch
2、孩子watch(child watches):getChildren()负责设置孩子watch(仅仅是子节点,不包括子节点下的子节点...)
我们可以通过操作返回的数据来设置不同的watch:
1、getData()和exists():返回关于节点的数据信息
2、getChildren():返回孩子列表,只监控子节点,不包括子节点下的子节点。
因此Nodechildrenchanged始终还是父节点在监听。
1、一个成功的setData()操作将触发znode的数据watch
2、一个成功的create()操作将触发znode的数据watch以及孩子watch
3、一个成功的delete()操作将触发znode的数据watch以及孩子watch


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值