I0Itec-zkClient总结

出处:http://www.myexception.cn/other/1479755.html

I0Itec-zkClient小结

zookeeper客户端目前社区中比较多,而且大家在使用zookeeper时或多或少都会自己"重复发明轮子";事实上apache zookeeper API也已经足够完善,我们自己封装client也是非常简单的工作;其实大家封装client,无外乎就是调整一些非常基本的功能.我们看看 I0Itec能否满足我们的需要.

I0Itec-zkClient并不是一个非常大众化的工具,也没有提供完美的功能列表;不过它的简单和已用对我们的一些常规应用,似乎已经足够了.I0Itec特性一览:

1) 提供了zookeeper断链重连的特性------这个特性似乎每个开发者都会设计,而且代码风格几乎"如出一辙"..在大部分zookeeper使用场景中,我们都要求它能够在断链的时候,重新建立连接,无论session失效与否.

2) 便捷的event监听器机制-------向ZNODE节点注册watch,每个开发者都使用过,尽管watch机制并不能确保数据变更的实时 性..watch-event属于"即发即失",因为我们需要得到event时候,再去注册一遍,这也是一个非常繁琐的事情,I0Itec- zkClient提供了event-listener的小技巧,可以帮助我们"解脱".

3) zookeeper异常处理-------zookeeper中繁多的Exception,以及每个Exception所需要关注的事情各有不同,你应该记得那一堆try-catch给你带来的烦恼;I0Itec简单的做了封装.

4) data序列化------简单的data序列化.(Serialzer/Deserialzer)

 

I0Itec-zkClient API

ZkConnection 类: 对zookeeper API的简单分装,提供了链接zookeeper server和数据CRUD的操作;此类实现了IZkConnection接口,通常情况下,如果I0Itec-zkclient不能满足需要的时候,我 们可以重写ZkConnection即可.ZkClient类: 核心类,也是开发者需要直接使用的类,它内部维护了zookeeper的链接管理和Event处理逻辑等,同时也暴露了zookeeper znode的CRUD方法列表.IZkChildListener接口: znode 子节点事件侦听器,当ZkClient接收到某个path节点变更或者子节点变更事件时,会触发lisntener.IZkDataListener接 口:IZkStateListener接口: 当zookeeper客户端状态变更时,触发.

I0Itect-zkClient暂时有几个方法需要重写:

1) create方法:创建节点时,如果节点已经存在,仍然抛出NodeExistException,可是我期望它不在抛出此异常.

2) retryUtilConnected: 如果向zookeeper请求数据时(create,delete,setData等),此时链接不可用,那么调用者将会被阻塞直到链接建立成功;不过我仍然需要一些方法是非阻塞的,如果链接不可用,则抛出异常,或者直接返回.

3) create方法: 创建节点时,如果节点的父节点不存在,我期望同时也要创建父节点,而不是抛出异常.

4) data监测: 我需要提供一个额外的功能来补充watch的不足,开启一个线程,间歇性的去zk server获取指定的path的data,并缓存起来..归因与watch可能丢失,以及它不能持续的反应znode数据的每一次变化,所以只能手动去同步获取.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值