[译]Zookeeper的优点与局限性】的更多相关文章

1.Zookeeper的优点与局限性 在学习了Zookeeper(后文都简称zk)的介绍和功能后,您已经很好地理解了zk. 现在,在这个zk教程中,我们将讨论zk的优点和局限性. zk有几个功能对用户非常有益,但同时也存在一些局限性,所以在我们使用zk前,必须先了解一下.让我们分别学习一下zk的优点与局限性 2.zk的优点 下面列出了使用zk的各种优点 01.分布式协调过程简单 zk节点之间的协调过程非常简单 02.同步 zk高度同步,这意味着服务器进程之间既存在互斥又存在合作,同步有助于Apa…
选主 使用ZooKeeper选主的一个简单方法是,在创建znode时使用Sequence和Ephemeral标志.主要思想是,使用一个znode,比如"/election",每个客户端创建一个子节点"/election/guid-n_",并同时使用Sequence和Ephemeral标志.使用sequence标志后ZooKeeper会自动递增序列号.拥有最小编号的节点就是主节点. 这还不是全部,同时还需要watch主节点的失效,在当前主节点失效后,会产生新的主节点.…
锁 全局式分布式锁要求任何时刻没有两个客户端会获得同一个锁对象,这可以通过使用ZooKeeper实现.像优先级队列一样,首先需要定义一个锁节点. 在ZooKepeer的发布中src/recipes/lock(https://github.com/apache/zookeeper/tree/master/src/recipes/lock)的目录有ZooKeeper的Lock实现. 要获得锁的客户端进行如下操作: 1.调用Create方法并使用"_locknode_/guid-lock-"…
两段式提交 两段式提交协议可以让所有分布式系统中的客户端达成协议同时提交或回滚事务. 在ZooKeeper中你可以通过协调者(coordinator)创建一个事务节点来实现两段式提交.例如"/app/Tx",并为每个参与者分配一个子节点例如"/app/Tx/s_i".当协调者创建完子节点,其中的内容是undefined.一旦每个相关节点收到协调者的事务请求,节点会读取这个子节点,并设置watch.每个节点往自己节点写数据,进行投票是否提交.一旦写完,其他节点会被唤醒…
队列 分布式队列是一种常见的数据结构.为了在ZooKepeer中实现分布式队列,第一步是要使用一个znode代表队列本身.分布式客户端通过create()方法将内容放入一个名叫"queue-"的sequence ephemeral节点.由于是使用sequence节点,创建的路径将是_path-to-queue_/queue-X,其中X是一个递增的数字.当一个客户端希望移除一个内容,它可以调用getChildren方法,并设置watch为true,并从最小的子节点开始处理.不到整个子节点…
Barrier 在分布式系统中常使用Barrier来阻塞进程,当满足一定条件后再恢复进行后续操作.Barrier在Zookeeper中可以通过设计一个Barrier节点来实现.Barrier 节点存在时会进行阻塞,下面是伪代码: 1.客户端调用exists方法来检查Barrier节点是否存在,并设置watch为true. 2.如exists返回false,表示Barrier条件满足,继续运行. 3.如exists返回true,客户端等待Zookeeper的节点上的watch事件. 4.当watc…
ZooKeeper高级应用 本系列将指导使用ZooKeeper来实现高级功能,所有功能都在客户端完成,不需要ZooKeeper的特殊支持.希望可以得到社区的支持将这些加入到一个标准的客户端类库中(Curator已经实现了除两阶段提交的功能). ZooKeeper最有意思的一点是,即便ZooKeeper使用异步通知,你可以使用这点来构建同步的一致性元素,如队列,锁等.你将会看到,ZooKeeper强制使用全局的更新顺序,并有机制用于广播这个顺序. 值得记录的是,本recipes尝试使用最佳实践.特…
apache原文地址:http://zookeeper.apache.org/doc/trunk/zookeeperOver.html ZooKeeper ZooKeeper: A Distributed Coordination Service for Distributed Applications Design Goals Data model and the hierarchical namespace Nodes and ephemeral nodes Conditional upda…
1.什么是Zookeeper » Zookeeper 是 Google 的 Chubby一个开源的实现,是 Hadoop 的分布式协调服务 » 它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等 2.为什么要用Zookeeper » 大部分分布式应用需要一个主控.协调器或控制器来管理物理分布的子进程(如资源.任务分配等) » 目前,大部分应用需要开发私有的协调程序,缺乏一个通用的机制 » 协调程序的反复编写浪费,且难以形成通用.伸缩性好的协调器 » Keepali…
ZooKeeper是一个分布式协调服务来管理大量的主机.协调和管理在分布式环境的一个服务是一个复杂的过程.ZooKeeper 简单解决了其结构和API这个问题.ZooKeeper允许开发人员能够专注于核心应用程序逻辑,而无需担心应用程序的分布式特性. ZooKeeper框架始建于“雅虎”,一个简单而强大的方法用于访问应用程序.后来 Apache ZooKeeper 成为用 Hadoop,HBase 的组织服务以及其他分布式架构的标准.例如,Apache HBase 使用 ZooKeeper 跟踪…