ZooKeeper高级应用

本系列将指导使用ZooKeeper来实现高级功能,所有功能都在客户端完成,不需要ZooKeeper的特殊支持。希望可以得到社区的支持将这些加入到一个标准的客户端类库中(Curator已经实现了除两阶段提交的功能)。

ZooKeeper最有意思的一点是,即便ZooKeeper使用异步通知,你可以使用这点来构建同步的一致性元素,如队列,锁等。你将会看到,ZooKeeper强制使用全局的更新顺序,并有机制用于广播这个顺序。

值得记录的是,本recipes尝试使用最佳实践。特别是避免投票、计时或其他会导致“羊群效应”、通信激增、扩展受限的因素。

也有许多有用的功能这里并没有描述-如可撤销的读写优先锁等。一些这里提到的(尤其是锁)只代表某些观点,你也可以找到其他方法(如事件处理和队列),或更实用的方法达到同样的功能。总而言之,这里的例子只是用于展示想法。

关于错误处理的重要注意事项

当实现这些recipes时你必须处理可恢复的错误(详见FAQ)。尤其是诸多recipes使用了sequential和ephermeral节点。当创建一个sequential ephemeral节点是,有一种情况,当create在服务端成功但是服务端在返回结果给客户端前宕机。当客户端重连会话,这个会话仍然有效,因此节点没有被移除。意味着客户端很难知道节点是否被创建。本系列的recipes会包含解决方法。

开箱即用:名字服务、配置、组成员识别

名字服务和配置是ZooKeeper两个首要功能。这两个是由ZooKeeper API直接提供的。

另一个ZooKeeper直接提供的功能是组成员识别(group membership)。组可以表现为一个节点。组的成员在组节点下创建ephemeral节点。异常失效的成员会自动从ZooKeeper中移除

目录

Barrier - http://www.cnblogs.com/resentment/p/6194361.html

Queues - http://www.cnblogs.com/resentment/p/6210677.html

Locks - http://www.cnblogs.com/resentment/p/6226146.html

Two-phased Commit - http://www.cnblogs.com/resentment/p/6246760.html

Leader Election - http://www.cnblogs.com/resentment/p/6258813.html

原文

http://zookeeper.apache.org/doc/trunk/recipes.html

[译]ZooKeeper recipes-引言的更多相关文章

  1. ZooKeeper Recipes and Solutions 翻译

    ZooKeeper 秘诀 与解决方案 A Guide to Creating Higher-level Constructs with ZooKeeper Out of the Box Applica ...

  2. ZooKeeper Recipes and Solutions

    原文地址:http://zookeeper.apache.org/doc/current/recipes.html 参考:https://zookeeper.apache.org/doc/trunk/ ...

  3. [译]ZOOKEEPER RECIPES-Locks

    锁 全局式分布式锁要求任何时刻没有两个客户端会获得同一个锁对象,这可以通过使用ZooKeeper实现.像优先级队列一样,首先需要定义一个锁节点. 在ZooKepeer的发布中src/recipes/l ...

  4. [译]ZOOKEEPER RECIPES-Queues

    队列 分布式队列是一种常见的数据结构.为了在ZooKepeer中实现分布式队列,第一步是要使用一个znode代表队列本身.分布式客户端通过create()方法将内容放入一个名叫"queue- ...

  5. [译]ZOOKEEPER RECIPES-Barriers

    Barrier 在分布式系统中常使用Barrier来阻塞进程,当满足一定条件后再恢复进行后续操作.Barrier在Zookeeper中可以通过设计一个Barrier节点来实现.Barrier 节点存在 ...

  6. [译]ZOOKEEPER RECIPES-Leader Election

    选主 使用ZooKeeper选主的一个简单方法是,在创建znode时使用Sequence和Ephemeral标志.主要思想是,使用一个znode,比如"/election",每个客 ...

  7. [译]ZOOKEEPER RECIPES-TWO PHASED COMMIT

    两段式提交 两段式提交协议可以让所有分布式系统中的客户端达成协议同时提交或回滚事务. 在ZooKeeper中你可以通过协调者(coordinator)创建一个事务节点来实现两段式提交.例如" ...

  8. <译>Zookeeper官方文档

    apache原文地址:http://zookeeper.apache.org/doc/trunk/zookeeperOver.html ZooKeeper ZooKeeper: A Distribut ...

  9. [译]Zookeeper的优点与局限性

    1.Zookeeper的优点与局限性 在学习了Zookeeper(后文都简称zk)的介绍和功能后,您已经很好地理解了zk. 现在,在这个zk教程中,我们将讨论zk的优点和局限性. zk有几个功能对用户 ...

随机推荐

  1. 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)

    从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

  2. Entity Framework教程(第二版)

    源起 很多年前刚毕业那阵写过一篇关于Entity Framework的文章,没发首页却得到100+的推荐.可能是当时Entity Framework刚刚发布介绍EF的文章比较少.一晃这么多年过去了,E ...

  3. 千呼万唤始出来,微软Power BI简体中文版官网终于上线了,中文文档也全了。。

    前几个月时间,研究微软Power BI技术,由于没有任何文档和资料,只能在英文官网瞎折腾,同时也发布了英文文档的相关文章:系列文章,刚好上周把文章发布完,结果简体中文版上线了.哈哈,心里有苦啊,早知道 ...

  4. Git(1)

    安装Git 完毕 (在开始菜单打开的话,打开的不是你想要的路径,切换路径很麻烦) 1.D盘新建 GitTest 文件夹 2.打开GitTest , 在空白的地方右键, 3.单击 Git Bash He ...

  5. Spark-shell和Spark-Submit的使用

    Spark-shell有两种使用方式: 1:直接Spark-shell 会启动一个SparkSubmit进程来模拟Spark运行环境,是一个单机版的. 2:Spark-shell --master S ...

  6. hbase协处理器编码实例

    Observer协处理器通常在一个特定的事件(诸如Get或Put)之前或之后发生,相当于RDBMS中的触发器.Endpoint协处理器则类似于RDBMS中的存储过程,因为它可以让你在RegionSer ...

  7. Android快乐贪吃蛇游戏实战项目开发教程-03虚拟方向键(二)绘制一个三角形

    该系列教程概述与目录:http://www.cnblogs.com/chengyujia/p/5787111.html 一.绘制三角形 在上一篇文章中,我们已经新建了虚拟方向键的自定义控件Direct ...

  8. ASP.NET 5运行时升级到Beta5

    在Visual Studio 2015 RTM和Windows 10正式发布之前,微软把开源.NET升级到了beta5,带来了一些增强和改变.和Visual Studio 2015 RC一起安装的AS ...

  9. .NET面试题系列[6] - 反射

    反射 - 定义,实例与优化 在面试中,通常会考察反射的定义(操作元数据),可以用反射做什么(获得程序集及其各个部件),反射有什么使用场景(ORM,序列化,反序列化,值类型比较等).如果答得好,还可能会 ...

  10. 更有效率的使用Visual Studio(二)

    没想到上一篇文章有这么多人喜欢,多谢大家支持.继续- 很多比较通用的快捷键的默认设置其实是有一些缩写在里面的,这个估计也是MS帮助我们记忆.比如说注释代码的快捷键是Ctrl + E + C,我们如果知 ...