永发信息网

为什么dubbo使用zkclient作为zookeeper的客户端

答案:2  悬赏:40  手机版
解决时间 2021-11-20 00:49
为什么dubbo使用zkclient作为zookeeper的客户端
最佳答案
dubbo使用了zkClient而不是使用zookeeper本身的客户端与zookeeper进行交互,为什么呢? 先看看zookeeper本身自带的客户端的问题。 1 ) ZooKeeper的Watcher是一次性的,用过了需要再注册;
全部回答
本文内容并非原创,使用资料均来自互联网。
dubbo使用了zkClient而不是使用zookeeper本身的客户端与zookeeper进行交互,为什么呢?
先看看zookeeper本身自带的客户端的问题。
1 ) ZooKeeper的Watcher是一次性的,用过了需要再注册;
2 )
session的超时后没有自动重连,生产环境中如果网络出现不稳定情况,那么这种情况出现的更加明显;
3

没有领导选举机制,集群情况下可能需要实现stand by,一个服务挂了,另一个需要接替的效果;
4
) 客户端只提供了存储byte数组的接口,而项目中一般都会使用对象。

5 )客户端接口需要处理的异常太多,并且通常,我们也不知道如何处理这些异常。
I0Itec这个zookeeper客户端基本上解决了上面的所有问题,主要有以下特性:
1) 提供了zookeeper重连的特性------能够在断链的时候,重新建立连接,无论session失效与否.
2) 持久的event监听器机制------ ZKClient框架将事件重新定义分为了stateChanged、znodeChanged、dataChanged三种情况,用户可以注册这三种情况下的监听器(znodeChanged和dataChanged和路径有关),而不是注册Watcher。
3) zookeeper异常处理-------zookeeper中繁多的Exception,以及每个Exception所需要关注的事情各有不同,I0Itec简单的做了封装.
4) data序列化------简单的data序列化.(Serialzer/Deserialzer)
5)有默认的领导选举机制
请注意使用I0Itect-zkClient暂时有几个方法仍需要重写:
1) create方法 : 创建节点时,如果节点已经存在,仍然抛出NodeExistException,可是我期望它不在抛出此异常.
2) retryUtilConnected : 如果向zookeeper请求数据时(create,delete,setData等),此时链接不可用,那么调用者将会被阻塞直到链接建立成功;不过我仍然需要一些方法是非阻塞的,如果链接不可用,则抛出异常,或者直接返回.
3) create方法 : 创建节点时,如果节点的父节点不存在,我期望同时也要创建父节点,而不是抛出异常.
4) data监测: 我需要提供一个额外的功能来补充watch的不足,开启一个线程,间歇性的去zk server获取指定的path的data,并缓存起来..归因与watch可能丢失,以及它不能持续的反应znode数据的每一次变化,所以只能手动去同步获取。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
送煤车在洗煤厂侧翻至工人死亡是工亡吗
月城中心小学(无锡江阴)地址在哪,我要去那里
已知关于x的方程x²+(2m+1)x+m²+2
C 中在文件里查找一字符串的问题
橙光游戏和偶像剧哪个幼稚?我觉得两种都有精
我房在改造时倒塌在郧西县找谁
雄风3导弹现在还有实质性威胁吗
vivo的话筒坏了要多少钱
很久以前的老香烟盒现在值多少钱
鹿王羊绒地址好找么,我有些事要过去,
求救,五开开关换成六开,求怎么接线
以蓝天彩霞为题的作文
埝头小学(无锡宜兴)地址在哪,我要去那里办事
广汇汽车服务有限责任公司怎么样?
再好的爱,也经不起冷漠!再好的情,也经不起
推荐资讯
小木盒制作价格一般是多少
盗墓笔记中吴邪在鲁殇王古墓中吃的那块东西是
玉柴发动机跑14000公里烧4升左右机油正常嘛
怎么样喂乌龟吃东西啊!?它最好小喂不进去
我有一张大西洋银行发行的澳门币100元能换多
我想买落神花茶,不知什么地方能买到
大众途安报价最低多少钱裸车售价2016款
VB6.0连接SQL sever 如何将数据显示在ListVew
MP4A怎么改成MP4R格式 能详细点吗 ??谢谢
我们认识几天 在一起了 他是韩国人 初吻没了
男士的衬衣,应该怎样系扣子?
市场上有没有什么除了乐扣以外的瓶子的品牌?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?