zookeeper常用的特性与使用场景
2017-06-30 09:37
239 查看
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才能被加排他锁,也就是说多个事务可以同时获得同一个对象的共享锁,有共享锁就不能再加排他锁。
数据发布于订阅:
功能点: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才能被加排他锁,也就是说多个事务可以同时获得同一个对象的共享锁,有共享锁就不能再加排他锁。
相关文章推荐
- Zookeeper使用场景和特性关联
- Zookeeper常用使用场景介绍
- zookeeper典型使用场景
- Git Bash+EGit在项目中配合使用最常用方法总结(根据场景使用)
- Android 动画使用的常用场景
- 分布式一致性原理、Paxos算法与Zookeeper的ZAB协议、Zookeeper使用场景与在电商系统中的应用
- Android Gradle 常用使用场景实现方式的总结
- zookeeper 使用场景介绍
- CSharpGL(2)设计和使用场景元素及常用接口
- Redis常用数据类型介绍、使用场景及其操作命令
- jeesz-zookeeper使用场景【别人总结,希望可以帮助到大家】
- zookeeper-使用场景
- Redis常用数据类型介绍、使用场景及其操作命令
- 【ZooKeeper】ZooKeeper原理及使用场景
- Linux(CentOS)中常用软件安装,使用及异常——Zookeeper, Kafka
- Git Bash+EGit在项目中配合使用最常用方法总结(根据场景使用)
- MVC常用特性使用
- Zookeeper和etcd使用场景
- ZooKeeper典型使用场景一览
- ZooKeeper典型使用场景一览