zookeeper常用的特性与使用场景

zookeeper是一个开源的分布式协调服务。分布式应用程序可以基于zookeeper实现诸如数据发布与订阅、负载均衡、命名服务、分布式协调与通知、集群管理、Master选举、分布式锁与分布式队列等功能。

数据发布于订阅:

功能点:watcher事件通知,即zookeeper允许客户端对感兴趣的节点(指目录中的节点,非服务器节点)注册监听事件,当节点的内容或者子节点发生变化时,客户端能够感知到变化,然后客户端主动去拉取数据;

命名服务:

客户端能够根据指定的名字来获取资源信息(比如服务器url、地址、提供者信息等),并且这个名称在zookeep创建节点的时候通过路径来标识唯一性,被命名的实体通常可以是集群中的机器,提供的服务,远程对象等。常见的一个例子是hadoop-ha(高可用),在节点:/hadoop-ha/ns1/ActiveBreadCrumb中存储了active状态的namenode,而且这个路径是唯一的。


分布式协调/通知:

同数据发布与订阅类似,使用watcher事件通知功能,多个客户端共同监听某个节点,当某个节点发生变化时,客户端接收到通知,并作出相应的处理。比如平安的开发框架pafa5的管控平台中使用了该功能,某个应用的多个服务器监听某个节点,当节点信息发生变化时,所有服务器作出相应的处理,比如jar包更新、配置文件更新、关闭、启动、重启等操作。


心跳检测:

利用了临时节点的特性。多个客户端(或者进程)在某个节点下创建临时节点,并且定期向该临时节点汇报状态表明存活,如果客户端(或者进程)发生异常,与zookeeper断开连接,那么该临时节点就会被删除,检测系统就能检测到心跳异常,从而作出相应处理。比如hbase中regionServer不断向zookeeper汇报自己的心跳。


工作进度汇报:

同心跳检测一样,只不过客户端会向临时节点汇报自己的工作进程和状态,检测系统会定期检查节点下的各个临时节点的进度。比如在yarn调度系统中如果使用了zookeeper,在任务进行时,appMaster会不断检测各个excutor进程汇报过来的工作进度。


master选举:

最典型的应用,多个客户端共同竞争创建一个唯一的临时节点,哪个客户端创建成功,哪个客户端就成为master,同时,其他参与竞争的准master注册监听节点,当master有异常(比如服务停止,宕机等),临时节点消失,则重新进行竞争,创建新的临时节点。比如hadoop-ha,hbase的master选举,yarn的resourceManager的选举等。


分布式锁:

分为两种,一种是独占锁,也称排他锁或写锁,另外一种是共享锁,也称读锁。独占锁:通俗点就是谁创建节点成功,谁使用,其他人不能使用,保持唯一,当使用结束,节点删除,接着大家继续竞争创建。共享锁,如果事务t对数据对象o加上共享锁,那么t只能对o进行读操作,其他事务也能对o加锁,直到o上所有的共享锁都释放后o才能被加排他锁,也就是说多个事务可以同时获得同一个对象的共享锁,有共享锁就不能再加排他锁。















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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值