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. 01.SQLServer性能优化之---水平分库扩展

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 第一次引入文件组的概念:http://www.cnblogs.com/dunitian/ ...

  2. C# 正则表达式大全

    文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的 ...

  3. 算法与数据结构(八) AOV网的关键路径

    上篇博客我们介绍了AOV网的拓扑序列,请参考<数据结构(七) AOV网的拓扑排序(Swift面向对象版)>.拓扑序列中包括项目的每个结点,沿着拓扑序列将项目进行下去是肯定可以将项目完成的, ...

  4. Adaboost提升算法从原理到实践

    1.基本思想: 综合某些专家的判断,往往要比一个专家单独的判断要好.在"强可学习"和"弱科学习"的概念上来说就是我们通过对多个弱可学习的算法进行"组合 ...

  5. 玩转spring boot——结合jQuery和AngularJs

    在上篇的基础上 准备工作: 修改pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&q ...

  6. ASP.NET Core 中文文档 第四章 MVC(4.1)Controllers, Actions 和 Action Results

    原文:Controllers, Actions, and Action Results 作者:Steve Smith 翻译:姚阿勇(Dr.Yao) 校对:许登洋(Seay) Action 和 acti ...

  7. vs15 preview5 离线安装包

    1.介绍 vs15是微软打造的新一代IDE,全新的安装方式.官网介绍如下(https://blogs.msdn.microsoft.com/visualstudio/2016/10/05/announ ...

  8. Mybatis批量删除

    <delete id="deleteByStandardIds"> delete from t_standard_catalog where standard_id i ...

  9. Android 在Android代码中执行命令行

    1.路径最好不要是自己拼写的路径/mnt/shell/emulated/0/wifidog.conf 最好是通过方法获取的路径,不然可能导致命令无效  (挂载点的原因) public static f ...

  10. NSURLSession详解

    导语 现在NSURLConnection在开发中会使用的越来越少,iOS9已经将NSURLConnection废弃,现在最低版本一般适配iOS7,所以也可以使用. NSURLConnection相对于 ...