zookeeper浅析

   ZooKeeper为apache开源组织的开发的一款分布式数据同步框架。目前使用ZooKeeper的项目有Hadoop、UltraESB、阿里的Dubbo等等,阿里使用ZooKeeper作为其分布式远程调用框架Dubbo的服务注册中心,UltraESB作为开源SOA企业服务总线使用Zookeeper作为其集群部署场景下配置同步机制的基础。

  Zookeeper的数据同步机制可以这么简单的解释:假设办公室里面有3个人A,B,C,3个人工作时互通工作情况,一天突然A不在,剩下两个人在,这一天办公室接到了一个通知,第二天,B不在,A和C在,由于C第一天在,C在上班开晨会时是组长,将第一天的通知告诉了A,晨会后A和C继续工作。第三天C不在,A在开晨会时是组长,将昨天的事情告诉B。。。总之,3个人中只要2个人知道一件事情,任何一个人不在,均会知道这个事情。

       现在从网络数据节点的角度来考虑,ABC 3个节点,只要有2个节点活着,就能继续干活。ZooKeeper保证集群中任何对外提供的服务的ZooKeeper server节点上的数据的一致性。主要通过Leader竞选来选举主节点,选主的原则是:如果有2N+1个节点,N+1个节点赞成某个节点,即这个节点被选举为老大leader,集群处于工作状态时,其他节点Follower直接提供读请求,写请求的话Follower会提交给Leader,Leader会向其他节点发起提议,如果超过一半以上的节点同意,则写请求会操作成功。之所以需要超过半数的人的选票是由于写操作发生后保证写操作的结果会最后作用于集群中所有节点,举个例子,写操作发生后,集群超过一半的机器当机,这时ZooKeeper集群不再对外提供写操作,严格意义上讲是此刻不再对外提供服务。经恢复操作,集群中超过一半的机器好了后,leader选举机制保证拥有最新数据的节点被选为leader,leader会将数据同步给其他节点。从而保证数据的一致性。

  zookeeper 客户端和服务端维持着会话,客户端可在zookeeper server上创建临时节点,该临时节点及其上数据的生命周期和会话生命周期是一致的,会话失效会导致相应数据删除。使用该机制,可进行相关的节点检测等功能。注意一种情况,zookeeper server集群宕机超过session timeout时间会导致会话失效吗,答案是否定的,集群重启后,会话时间从零开始计时,只要在集群重启后的sesstion timeout时间内客户端重连上zookeeper server 便不会出现临时节点自动删除的现象,因为对应的会话还活着。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值