apachezookeeper_第1页
apachezookeeper_第2页
apachezookeeper_第3页
apachezookeeper_第4页
apachezookeeper_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录zk 介绍zk 逻辑部署图zk 数据结构zk 数据操作保证API 介绍安装和使用zk应用:统一命名服务zk应用:配置管理zk应用:Job调度zk应用:分布式锁zk应用:监控服务器zk应用: 分布式 Barrierszk应用:队列zk应用:俩阶段提交zk应用:选举zk 性能zk 总结zk 介绍官方定义:A Distributed Coordination Service for Distributed Applications 应用范围命名服务配置管理协调服务,如同步,集群,领导节点选取设计目标简单的API和数据结构完成协调服务分布式的,不会出现单点故障保证操作时序性性能测试结果表明非常快分

2、布式概念定义:一组硬件或者软件分布在网络计算机上,通过消息传递进行通信和动作协调的系统有如下特征:并发性,并发执行。并在增加网络资源的时候提高性能处理能。在需要处理共享资源的时候需要协调缺乏全局时钟:通过交换消息协调各个程序,这依赖于程序发生时间共识。故障独立性:所有计算机系统都会出现故障。每个组件应当设计能适当处理所依赖组件出现的故障zk 逻辑部署图zk 数据结构类似文件系统每个节点可以有自己的子节点每个节点可以存放二进制数据,不超过1M不同于文件系统的是,没有相对目录概念zk 数据节点znode 分永久节点和临时节点,临时节点在回话结束的时候自动删除znode节点最好存储小于1K的数据,这

3、些信息是配置信息,状态信息等znode包含的其他数据数据版本号ACL版本号时间戳子节点数目与znode关联的ACL可以控制谁能访问此节点znode也可以定义为自增长节点客户端可以设置watch在节点上,节点变化该watch被触发,并被随后删除zk 一致性保证顺序一致性:客户端的更新顺序与它们被发送的顺序相一致。原子性:更新操作要么成功要么失败,没有第三种结果。 单系统镜像:无论客户端连接到哪一个服务器,客户端将看到相同的 ZooKeeper 视图。可靠性:一旦一个更新操作被应用,那么在客户端再次更新它之前,它的值将不会改变。实时性:Timeliness - The clients view o

4、f the system is guaranteed to be up-to-date within a certain time bound。 注意:由于网络延迟,不同客户端看到的zk视图有可能不一样,需要调用synczk watch节点读操作getData,getChildren,exists,可以设置一个watch,当数据更新的时候,将会触发一个事件。有如下三个特点只触发一次:除非客户端再次设置watch,否则客户端只接接收到一次事件如果注册了watch,则收到到事件,然后才能看到数据变化。 由于网络延迟等因素,异步修改数据成功与收到节点更新事件先后顺序不能保证。watch 包括 dat

5、a watch,和 child watch 俩种 。watch 注意事项watch被触发后必须再次设置watch,在这段事件内,会错过一些事件watch仅被触发一次。如果getWatch以及exits 都注册了同一个watch,则节点删除的时候,watch仅被触发一次zk APIcreate creates a node at a location in the treedelete deletes a nodeexists tests if a node exists at a locationget data reads the data from a nodeset data write

6、s data to a nodeget children retrieves a list of children of a nodesync waits for data to be propagated安装和使用系统要求: JDK1.6 最好用专用机器,yahoo目前使用的双核,2G内存,80GB硬盘单机环境(开发)安装 从 /zookeeper/releases.html 下载 解压,并进入其根目录,创建conf/zoo.cfg,并有如下内容 调用bin/zkServer.sh star,启动server 客户端连接zk:bin/zkCli.

7、sh -server :2181分布式环(生产)境安装:/doc/trunk/zookeeperStarted.htmltickTime=2000dataDir=data/zookeeperclientPort=2181zk应用:统一命名服务场景描述:类似目录数那样存取数据传统方法ldap,jndi,文件共享zk:1. 创建一节点 create(/app/config/server,bytes);2. getData(/app/config/server);zk应用:配置管理场景描述:统一的配置文件传统方法数据库,文件共享,

8、或者数据库快照zk:1. 创建一节点 create(/app/config/server,bytes);2. 客户端调用getData(/app/config/server,true);3. 如果配置变化,客户端将得到通知,并重新调用getData获取新的配置zk应用:Job调度场景描述:在集群中,只能有一个客户端能运行任务传统方法配置固定的客户端运行Job。或者数据库共享一条记录,每次启动的时候,读一个序列号,在运行时候判断手里的序列号是否与数据库序列号一致。一致则允许执行。执行完成后更新序列号。不一致则记录新的序列号zk:1. 客户端创建一节点 create(/app/job1,EPHEM

9、ERAL );2. 如果创建失败,则表示其他节点已经执行该任务3. 创建成功,执行任务,并删除此节点zk应用:监控服务器场景描述:监控各个服务器运行情况传统方法监控程序ping各个服务器zk:1. 创建一节点 create(/group)2. 被监控服务器在此节点下创建一个临时节点:create(/group/server1, EPHEMERAL)3. 监控程序监控此节点下得各个临时节点。getChildren(group,true);4. 节点增减将通知监控程序zk应用: 分布式 Barriers 场景描述所有进程在一个Barriers处等待,直到满足某个条件后继续执行传统方法JMS Top

10、ic,定期检测数据库某记录变化zk:1. 进程调用API exits 在 barriers节点,并设置watch为true2. 如果exits 返回false,barriers不存在,可以继续执行3. 如果存在此barriers节点,等待该节点事件。4. 如果等待事件,重新调用exits 方法,同步骤1zk 应用:Queue场景描述:客户端从queue里取待处理的数据传统方法通过JMS,消息入队列,客户端监听该队列zk:1. 创建一节点create(/queue)2. 在该节点下每条消息创建一个子节点,名字是msg-使用EPHEMERAL_SEQUENTIAL 参数3. 客户端调用getChi

11、ldren(/queue,watcher)。4. 客户端删除最小得节点,并处理此节点数据,如果删除失败,则已经被其他节点处理。处理下一个节点5. 优先级队列,消息节点使用msg-yy- ,其中yy是优先级,重复步骤4zk应用:分布式锁场景描述:一个时刻只有其中一个客户端获取分布式锁传统方法数据库悲观锁实现 select for updatezk:1. 创建一节点create(/lock/somelock-,EPHEMERAL_SEQUENTIAL ),并记住返回的节点名称,如/lock/somelock-00000032. 调用getChildren(/lock),找到返回列表最小的一个节点名

12、,如果最小节点名就是自己创建的节点名,则表示获取该锁3. 如果不是,则调用exists(最小节点,watch),如果返回false,则继续步骤2,否则等待事件通知,继续步骤24. 读写锁实现:参考官方文档提供的指南 zk应用:俩阶段提交场景描述:告诉所有客户端要么都提交,要么全部回滚传统方法XA 实现zk:1. 协调者创建节点/app/tx,并为每一个参与者创建一个子节点/app/tx/client_i;2. 协调者监听各个子节点数据变化getData(app/tx/client_1,watcher) getData(app/tx/client_2,watcher)1. 各个客户端将自己执行结

13、果(commit,abort)写到到自己的节点里2. 协调者根据各节点的值判断是否需要commit还是abort,并将最终结果写入到/app/tx 节点里3. 客户端调用getData(app/tx,watcher),判断里的值是commit还是abort zk应用:选举场景描述:分布式应用中,必须有一个节点作为领导节点协调其他节点传统方法各种算法,如基于环的算法,霸道算法zk:创建节点create(/election);每个客户端其目录下创建一临时,自增长节点n-序列号最小的为选举出来的领导各客户端监听领导节点,如果一旦次节点被删除,自动认为下一个最小节点为领导节点 zk 性能zk 总结zk 是一个为分布式应用提供的分布式协调服务器zk 部分应用场景实现可以用数据库实现,消息中间件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论