版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录 zk 介绍 zk 逻辑部署图 zk 数据结构 zk 数据操作保证 API 介绍 安装和使用 zk应用:统一命名服务 zk应用:配置管理 zk应用:Job调度 zk应用:分布式锁 zk应用:监控服务器 zk应用: 分布式 Barriers zk应用:队列 zk应用:俩阶段提交 zk应用:选举 zk 性能 zk 总结 zk 介绍 官方定义: A Distributed Coordination Service for Distributed Applications 应用范围 命名服务 配置管理 协调服务,如同步,集群,领导节点选取 设计目标 简单的API和数据结构完成协调服务 分布式的,不
2、会出现单点故障 保证操作时序性 性能测试结果表明非常快 分布式概念 定义:一组硬件或者软件分布在网络计算机上,通过消息传递进行通信和 动作协调的系统 有如下特征: 并发性,并发执行。并在增加网络资源的时候提高性能处理能。在需 要处理共享资源的时候需要协调 缺乏全局时钟:通过交换消息协调各个程序,这依赖于程序发生时间 共识。 故障独立性:所有计算机系统都会出现故障。每个组件应当设计能适 当处理所依赖组件出现的故障 zk 逻辑部署图 zk 数据结构 类似文件系统 每个节点可以有自己的子节点 每个节点可以存放二进制数据,不超过1M 不同于文件系统的是,没有相对目录概念 zk 数据节点 znode 分
3、永久节点和临时节点,临时节点在回话结束的时候自动删除 znode节点最好存储小于1K的数据,这些信息是配置信息,状态信息等 znode包含的其他数据 数据版本号 ACL版本号 时间戳 子节点数目 与znode关联的ACL可以控制谁能访问此节点 znode也可以定义为自增长节点 客户端可以设置watch在节点上,节点变化该watch被触发,并被随后删除 zk 一致性保证 顺序一致性:客户端的更新顺序与它们被发送的顺序相一致。 原子性:更新操作要么成功要么失败,没有第三种结果。 单系统镜像:无论客户端连接到哪一个服务器,客户端将看到相同的 ZooKeeper 视图。 可靠性:一旦一个更新操作被应用
4、,那么在客户端再次更新它之前,它的 值将不会改变。 实时性:Timeliness - The clients view of the system is guaranteed to be up-to-date within a certain time bound。 注意:由于网络延迟,不同客户端看到的zk视图有可能不一样,需要调用 sync zk watch 节点读操作getData,getChildren,exists,可以设置一个watch,当数据更新 的时候,将会触发一个事件。有如下三个特点 只触发一次:除非客户端再次设置watch,否则客户端只接接收到一 次事件 如果注册了watch
5、,则收到到事件,然后才能看到数据变化。 由于网络延迟等因素,异步修改数据成功与收到节点更新事件先后顺序不能保 证。 watch 包括 data watch,和 child watch 俩种 。 watch 注意事项 watch被触发后必须再次设置watch,在这段事件内,会错过一些事件 watch仅被触发一次。如果getWatch以及exits 都注册了同一个watch, 则节点删除的时候,watch仅被触发一次 zk API create creates a node at a location in the tree delete deletes a node exists tests i
6、f a node exists at a location get data reads the data from a node set data writes data to a node get children retrieves a list of children of a node sync waits for data to be propagated 安装和使用 系统要求: JDK1.6 最好用专用机器,yahoo目前使用的双核,2G内存,80GB硬盘 单机环境(开发)安装 从 ://zookeeper/releases.html 下载 解压
7、,并进入其根目录,创建conf/zoo.cfg,并有如下内容 调用bin/zkServer.sh star,启动server 客户端连接zk:bin/zkCli.sh -server :2181 分布式环(生产)境安 装: ://doc/trunk/zookeeperStarted.html tickTime=2000 dataDir=data/zookeeper clientPort=2181 zk应用:统一命名服务 场景描述: 类似目录数那样存取数据 传统方法 ldap,jndi,文件共享 zk: 创建一节点 create(/app
8、/config/server,bytes); getData(/app/config/server); zk应用:配置管理 场景描述: 统一的配置文件 传统方法 数据库,文件共享,或者数据库快照 zk: 创建一节点 create(/app/config/server,bytes); 客户端调用getData(/app/config/server,true); 如果配置变化,客户端将得到通知,并重新调用getData获取新的配置 zk应用:Job调度 场景描述: 在集群中,只能有一个客户端能运行任务 传统方法 配置固定的客户端运行Job。 或者数据库共享一条记录,每次启动的时候,读一个序列号,在
9、运行 时候判断手里的序列号是否与数据库序列号一致。一致则允许执行。 执行完成后更新序列号。不一致则记录新的序列号 zk: 客户端创建一节点 create(/app/job1,EPHEMERAL ); 如果创建失败,则表示其他节点已经执行该任务 创建成功,执行任务,并删除此节点 zk应用:监控服务器 场景描述: 监控各个服务器运行情况 传统方法 监控程序ping各个服务器 zk: 创建一节点 create(/group) 被监控服务器在此节点下创建一个临时节点:create(/group/server1, EPHEMERAL) 监控程序监控此节点下得各个临时节点。getChildren(grou
10、p,true); 节点增减将通知监控程序 zk应用: 分布式 Barriers 场景描述 所有进程在一个Barriers处等待,直到满足某个条件后继续执行 传统方法 JMS Topic, 定期检测数据库某记录变化 zk: 进程调用API exits 在 barriers节点,并设置watch为true 如果exits 返回false,barriers不存在,可以继续执行 如果存在此barriers节点,等待该节点事件。 如果等待事件,重新调用exits 方法,同步骤1 zk 应用:Queue 场景描述: 客户端从queue里取待处理的数据 传统方法 通过JMS,消息入队列,客户端监听该队列 z
11、k: 创建一节点create(/queue) 在该节点下每条消息创建一个子节点,名字是msg-使用 EPHEMERAL_SEQUENTIAL 参数 客户端调用getChildren(/queue,watcher)。 客户端删除最小得节点,并处理此节点数据,如果删除失败,则已经 被其他节点处理。处理下一个节点 优先级队列,消息节点使用msg-yy- ,其中yy是优先级,重复步骤4 zk应用:分布式锁 场景描述: 一个时刻只有其中一个客户端获取分布式锁 传统方法 数据库悲观锁实现 select for update zk: 创建一节点create(/lock/somelock-,EPHEMERAL
12、_SEQUENTIAL ), 并记住返回的节点名称,如/lock/somelock-0000003 调用getChildren(/lock),找到返回列表最小的一个节点名,如果最小 节点名就是自己创建的节点名,则表示获取该锁 如果不是,则调用exists(最小节点,watch),如果返回false,则继 续步骤2,否则等待事件通知,继续步骤2 读写锁实现:参考官方文档提供的指南 zk应用:俩阶段提交 场景描述: 告诉所有客户端要么都提交,要么全部回滚 传统方法 XA 实现 zk: 协调者创建节点/app/tx,并为每一个参与者创建一个子节点 /app/tx/client_i; 协调者监听各个子
13、节点数据变化getData(app/tx/client_1,watcher) getData(app/tx/client_2,watcher) 各个客户端将自己执行结果(commit,abort)写到到自己的节点里 协调者根据各节点的值判断是否需要commit还是abort,并将最终结果 写入到/app/tx 节点里 客户端调用getData(app/tx,watcher),判断里的值是commit还是abort zk应用:选举 场景描述: 分布式应用中,必须有一个节点作为领导节点协调其他节点 传统方法 各种算法,如基于环的算法,霸道算法 zk: 创建节点create(/election); 每个客户端其目录下创建一临时,自增长节点n- 序列号最小的为选举出来的领导 各客户端监听领导节点,如果一旦次节点被删除,自动认为下一个最 小节点为领导节点 zk 性能 zk 总结 zk 是一个为分布式应用提供的分布式协调服务器 zk 部分应用场景实现可以用数据库实现,消息中间件实现,有些场景只能 用zk来实现 zk 性能有限,使用范围仅适用后台协调管理用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026四川省国土整治中心招聘编外聘用人员4人笔试参考题库及答案解析
- 2026西安市曲江第十三小学教师招聘考试备考试题及答案解析
- 2026年天津市武清区卫健系统公开招聘事业单位工作人员(含高层次人才)90人考试备考题库及答案解析
- 2026四川广安发展工程建设有限公司第一批项目合同制员工招聘5人考试备考题库及答案解析
- 卷材防水屋面施工材料保存与运输方案
- 2026广东佛山大学附属学校编制教师招聘5人笔试备考试题及答案解析
- 2026年甘肃省人力资源市场招聘编外聘用工作人员笔试备考试题及答案解析
- 混凝土施工中的移动设备管理方案
- 2026山东淄博经开区康养中心招聘笔试备考试题及答案解析
- 高校教室应急电力保障系统设计方案
- 译林版(2024)八年级上册英语全册单词默写打印版(含答案)
- 建筑工人安全培训考试试题与答案
- 消防管道供货合同范本
- 食品区域保护合同范本
- 基于Unity3D的虚拟苏州园林漫游系统设计与实现
- 2024年上、下半年(小学)教师资格证【小学教育教学知识与能力】2套 真题及答案
- 湖南省长沙市实验小学小学数学五年级下册期末试卷(培优篇)
- 人教版(2024)四年级全一册信息科技全册教案
- 大学高层次人才引进报名表
- 国际道路运输安全生产管理制度文本
- 水文中心面试题库及答案
评论
0/150
提交评论