分布式锁服务ZooKeeper.docxVIP

  1. 1、本文档共7页,可阅读全部内容。
  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文档。上传文档
查看更多
分布式锁服务ZooKeeperzookeeper概述针对分布式应用的分布式协作服务,zookeeper的开发动机就是为了减轻分布式应用从头开发协作服务的负担。设计目标简单。?允许多个分布的进程基于一个共享的,类似标准文件系统的树状名称空间进行协作。每个节点称作一个znode。ZooKeeper is replicated几个zookeeper集群包含多个zookeeper server, 称作一个ensemble。?这些server彼此都知道对方的存在。需要维护的数据:?内存中的状态的镜像, 持久化存储中的事务日志和快照。client和单个zookeeper server通信。client维护一个持久TCP连接,通过其发送请求, 获取响应和watch events,并发送心跳信息,如果到server的TCP连接中断, client将会连接到另外一个server。ZooKeeper is orderedzookeeper对每次更新进行一个计数器stamp以反映所有zookeeper事务的次序。后续的操作能够使用此次序来实现高级抽象,如同步原语。ZooKeeper is fastzookeeper在read操作上是非常快的。通常的应用中,读写操作比也在10:1左右。数据模型和层级名称空间节点和临时节点有别于标准文件系统的是,zookeeper名称空间中的每个节点都可以关联数据到它本身或者它的子节点。就好比标准文件系统中的文件同时又可以充当目录。(zookeeper用于存储协作数据: 状态信息, 配置, 位置信息等, 所以存放在每个node的数据通常都比较小,一般在K级别)。我们以znode来描述zookeeper中的数据节点。znodes维护一个stat结构,其中包括数据变更, 权限变更的版本信息,还有时间戳,以便于缓存有效性验证和协作更新。每当znode的数据变更时,版本号都会递增。例如, 每次client在获取数据时,它同时也获得了数据的版本信息。存储在znode中的数据对read, write都是原子性操作的。read会获取znode中的所有字节, write会整个替换znode中的信息。每个znode都包含一个访问控制列表(ACL)以约束谁可以访问此节点。zookeeper还有一个临时节点的概念。临时节点在创建它的session的生命周期内存活, 当其session终止时,此类节点将会被删除。临时节点在我们需要实现[tbd]时非常有用。条件更新和监听器(watches)zookeeper提供监听器的概念。 client可以在某个znode上设置watch。当znode有变更时, 相关的watch会被触发或删除。一旦watch触发, client将会收到一个数据包以通知znode的变更。如果在client和zookeeper server之间的连接被中断了, client将会收到一个本地的通知。这些都能被用于[tbd]。Guaranteeszookeeper在使用上非常简单高效。因为它的设计目标,是作为构建复杂服务类型,如同步, zookeeper提供的保证包括:序列一致性: 数据更新会依照client发送的次序来进行。原子性: 更新要么成功,要么失败。不存在部分结果。唯一系统镜像: client总是会看到一致的视图,而不管它是连接到具体哪个zookeeper server。可靠性: 一旦更新完成, 它会持续保存直到有另外的client重写。及时: 客户端视图会在一定的时间间隔内进行更新。Simple APIzookeeper的一个重要设计目标就是要提供简单的编程接口。所以,它仅仅提供如下操作:create:在树种某个位置创建一个节点。delete:删除一个节点。exists:检查给定节点是否存在。get data: 从一个节点读取数据。set data: 写数据到给定节点。get children: 获取节点的子节点列表sync: 等待知道数据被传输。实现如下展示了zookeeper服务的高层组件。除了request processor, 组成zookeeper服务的每个server都会在本地备份其它组件的拷贝。replicated database是一个包含整个数据树的内存数据库。更新被logged到磁盘以提供可恢复性,写操作先持久化到磁盘,然后再对内存数据库作变更。每个zookeeper server都对client提供服务。client连接到具体的某一个server以提交请求。读操作依赖与每个server的本地数据库。改变服务状态的请求,写操作,由一致性协议来处理。作为一致性协议的一部分,所有的client写请求被提交到专门的一个leader server。其余的server,被称为followers,从leader

文档评论(0)

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

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

1亿VIP精品文档

相关文档