Zookeeper讲述.pptxVIP

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ZooKeeper Zookeeper Zookerper是高性能、可扩展的分布式应用程序协调服务框架。使用java编写,支持java和C两种编程语言。 典型的应用场景: 统一命名服务(name service) 配置管理(configuration management) leader election 共享锁(Locks) 队列管理 组成员关系(group membership) 设计目的 最终一致性:client不论连接那个server,展示给它的都是同一视图。实时的一致性可以由客户端通过调用sync()方法 原子性:更新操作要么成功要么失败 可靠性:一旦一个更新操作被应用,那么在client再次更新它之前,它的值将不会改变 顺序一致性:全局有序,client的更新顺序与他们的发送顺序一致。即如果在一台服务器上消息a在消息b前发布,则在所有Server上消息a都将在消息b前被发布 数据模型 类似于文件系统,像树一样的层级结构,树中的节点称为Znode,可存储数据,并关联一个ACL Znodes可以是文件也可以是目录(允许有子节点) 存数的数据有限,不能超过1M 路径只能是绝对路径, 必须以『/』开头, 不能包含.或.. Zookeeper Znode 所在路径唯一标识;可以有子目录,且可以存储数据;有版本,可以保存多个版本的数据;每次对Zookeeper状态的改变,都生成唯一的Zid来,其为全局有序,表示事务的顺序,如果zxid1小于zxid2,则zxid1在zxid2之前发生, Watches:当Znode以某种方式改变时,通知客户端(应用:配置管理) Ephemeral Nodes: 与session相同的生命周期,session失效,znode也就删除了;不能有子节点(应用:组成员管理服务) Sequence Nodes -- Unique Naming,会自动编号,如App1已经存在,再创建,则会自动命名为App2(应用:共享锁) Znode stat结构 zookeeper的API 功能 描述 create 在本地目录树中创建一个节点 delete 删除一个节点 exists 测试本地是否存在目标节点 get/set data 从目标节点上读取?/?写数据 get/set ACL 获取?/?设置目标节点访问控制列表信息 get children 检索一个子节点上的列表 sync 等待要被传送的数据 Zookeeper Session Client和Zookeeper集群建立连接,整个session状态变化如下图 备注:如果因为网络状态不好,client和Server失去联系,client会停留在当前状态,会尝试主动再次连接Zookeeper Server。client不能宣称自己的session expired,session expired是由Zookeeper Server来决定的,client可以选择自己主动关闭session Zookeeper Watch 用于表示一个标准的事件处理器,其定义了事件通知相关逻辑。包括通知状态和事件类型, getData,getChildren(),exists()这三个方法可以针对参数中的path设置watcher,当path对应的Node 有相应变化时,server端会给对应的设置了watcher的client 发送一个一次性的触发通知事件。客户端在收到这个触发通知事件后,可以根据自己的业务逻辑进行相应地处理。 注意这个watcher的功能是一次性的,如果还想继续得到watcher通知,在处理完事件后,要重新register zooKeeper 客户端 创建ZooKeeper对象时,应会创建一个ClientCnxn(代表了客户端连接对象)。与此同时启动了两个线程:SendThread、EventThread。两个队列:outgoingQueue和pendingQueue。 同步调用,就是客户端成功发送请求后,才继续执行。例如:zk.create(path,data,acl,createMode)。一个线程A执行这个create时,会创建一个表示create动作的packet,放到数据发送队列outgoingQueue。之后当线程A就开始等待,直到SendThread线程从outgoingQueue队列取出该packet,并将其成功发送(已收到服务端的回应为准)。然后线程A才继续执行。 异步调用,就是客户端不会管请求是否发送成功,都会继续执行。例如:zk.create(path,data,acl,createMode,stringCallback)。一个线程A执行这个create时,会创建一个表示create动作的packet,放到数据发送队列outgoingQueu

您可能关注的文档

文档评论(0)

shuwkb + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档