资源描述
从入门到精通从入门到精通Zookeeper讲师:Cloudy(北风网版权所有)1、Zookeeper熟悉和用途综述1Zookeeper用途场景用途场景Zookeeper 分布式分布式服务框架是 Apache Hadoop 的一个子项目,主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:集群管理、统一命名服务、分布式配置管理、分布式消息队列、分布式锁、分布式通知协调等。越来越多的分布式计算开始强依赖ZK,比如Storm、HbaseZookeeper对分布式开发带来很多便利,用ZK的独有特性巧妙地解决了很多难题;很多分布式技术用到Zookeeper或多或少特性,尤其是新生代分布式技术几乎都会依赖Zookeeper特性,如Hbase、火爆的Storm。为什么后来深入学习Zookeeper?随着分布式应用的不断深入,需要对集群管理逐步透明化,监控集群和作业状态;可以充分利用ZK的独有特性。熟悉程度决定应用高度。2课程主要内容:课程主要内容:Zookeeper详解、Client开发(Java)、场景案例开发、ZK集群Web界面、Web监控Java基础、Linux基础Zookeeper 集群规模集群规模机器节点100+3ZK Web界面界面,node-zk-browserWeb展示每个path的属性和数据4ZK集群监控集群监控taokeeper5ZK体系结构体系结构Server端具有fast fail特性,非常健壮。无单点。不超过半数Server挂掉不影响提供服务。Master/slave主流模式轻量级内存数据库6ZK 体系架构体系架构数据模型、节点数据模型、节点类似文件系统的目录树型结构,同Hadoop HDFS:节点节点/NameService/Server1 唯一路径(Node),且携带数据7zookeeper名字空间由节点znode构成,其组织方式类似文件系统,其中各个节点相当于目录和文件,通过路径作为唯一标识。与文件系统不同的是,每个节点具有与之对应的数据内容,同时也可以具有子节点。zookeeper用于存储协调数据,如状态、配置、位置等信息,每个节点存储的数据量很小,KB级别。节点维护一个状态stat结构(包括数据变化的版本号、ACL变化、时间戳),以允许缓存验证与协调更新。每当节点数据内容改变,多一个版本号,类似HBase。客户端获取数据的同时也会获取数据版本号。节点的数据内容以原子方式读写。节点具有一个访问控制列表(Access Control List-ACL)来约束访问操作,即具有权限控制。8WatchesZookeeper对Node的增、删、改、查都可触发监听watch事件是一次性触发器,当watch监视的数据发生变化时,通知设置了该watch的client,即watcherwatch事件异步发送至观察者watch是一次性触发的并且在获取watch事件和设置新watch事件之间有延迟所以不能可靠的观察到节点的每一次变化客户端监视一个节点,总是先获取watch事件,再发现节点的数据变化watch事件的顺序对应于zookeeper服务所见的数据更新的顺序9Storm集群:Zookeeper作为nimbus(master)和supervisor(slave)的中间枢纽,保存Storm集群和作业的所有信息,并负责nimbus和supervisor的全部通信,Fast faill。HBase集群:Zookeeper作为“协调器”,为HBase提供了稳定服务和fail over机制。HRegionServer也会把自己以Ephemeral方式注册到Zookeeper中,使得HMaster可以随时感知到各个HRegionServer的健康状态(可用于监控RegionServer)。此外,Zookeeper也避免了HMaster的单点问题。应用三大块:应用三大块:Storm应用开发,Storm集群监控MapReduce应用开发HBase应用开发Zookeeper在在Hadoop平台典型应用平台典型应用10分布式应用配置管理分布式应用配置管理发布与订阅即所谓的配置管理,顾名思义就是将数据发布到zk节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新。例如全局的配置信息,地址列表等就非常适合使用。Name Service这个主要是作为分布式命名服务,通过调用zk的create node api,能够很容易创建一个全局唯一的path,这个path就可以作为一个名称。序列化节点流行的应用场景11分布式通知分布式通知/协调协调ZooKeeper中特有watcher注册与异步通知机制,能够很好的实现分布式环境下不同系统之间的通知与协调,实现对数据变更的实时处理。使用方法 通常是不同系统都对ZK上同一个znode进行watch,监听znode的变化(包括znode本身内容及子节点的),其中一个系统update了 znode,那么另一个系统能够收到通知,并作出相应处理。分布式锁分布式锁分布式锁,这个主要得益于ZooKeeper为我们保证了数据的强一致性,zk集群中任意节点(一个zk server)上的相同znode的数据是一定是相同的。锁服务可以分为两类,一个是保持独占,另一个是控制时序。一个是保持独占,另一个是控制时序。12集群管理集群管理Hbase Master选举则是zookeeper经典的使用场景;Storm集群管理分布式队列分布式队列队列方面,一种是常规的先进先出队列,另一种是要等到队列成员聚齐之后的才统一按序执行。对于第二种先进先出队列,增加分布式锁服务以控制时序场景13欢迎访问我们的官方网站14
展开阅读全文