跟着实例学习ZooKeeper的用法: Leader选举

ZooKeeper官方给出了使用zookeeper的几种用途

  • Leader Election
  • Barriers
  • Queues
  • Locks
  • Two-phased Commit
  • 其它应用如Name Service, Configuration, Group Membership

在实际使用ZooKeeper开发中,我们最常用的是Apache Curator。 它由Netflix公司贡献给Apache,目前版本2.7.0。
相信你在使用ZK API开发时会遇到让人头疼的几个问题,ZK连接管理、SESSION失效等一些异常问题的处理,Curator替我们解决了这些问题,通过对ZK连接状态的监控来做出相应的重连等操作,并触发事件。
更好的地方是Curator对ZK的一些应用场景提供了非常好的实现,而且有很多扩充,这些都符合ZK使用规范。
它的主要组件为:

  • Recipes, ZooKeeper的系列recipe实现, 基于 Curator Framework.
  • Framework, 封装了大量ZooKeeper常用API操作,降低了使用难度, 基于Zookeeper增加了一些新特性,对ZooKeeper链接的管理,对链接丢失自动重新链接。
  • Utilities,一些ZooKeeper操作的工具类包括ZK的集群测试工具路径生成等非常有用,在Curator-Client包下org.apache.curator.utils。
  • Client,ZooKeeper的客户端API封装,替代官方 ZooKeeper class,解决了一些繁琐低级的处理,提供一些工具类。
  • Errors,异常处理, 连接异常等
  • Extensions,对curator-recipes的扩展实现,拆分为curator-:stuck_out_tongue_closed_eyes:iscovery和curator-:stuck_out_tongue_closed_eyes:iscovery-server提供基于RESTful的Recipes WEB服务.

Recipe 词典的意思是食谱,配方,美食菜谱,烹饪法, 延伸用法:某项计划或步骤来取得预先给定的结果。 在计算机领域没有合适的汉语对应,如果把ZooKeeper看成菜的话,recipe就相当于菜谱, 比如麻婆豆腐, 宫保鸡丁。

由于内容较多, 将会分成多篇文章进行介绍。

阅读全文

ZooKeeper程序员指南

翻译于最新的ZooKeeper 3.4 文档

前言

本文档是为那些希望利用ZooKeeper的协调服务建立分布式应用程序的开发人员而写的指南。它包含了Zookeeper的概念和实践内容。
指南的前四节介绍了ZooKeeper各种概念的高层次的讨论。 对于理解ZooKeeper如何工作和如何使用它这些概念都是必须了解的。尽管不包含代码,但还是假定你熟悉分布式计算相关的问题。
第一组的章节包括:

  • ZooKeeper数据模型: The ZooKeeper Data Model
  • ZooKeeper的会话: ZooKeeper Sessions
  • ZooKeeper的监视: ZooKeeper Watches
  • 一致性保证:Consistency Guarantees
    (下面的翻译中概念尽量不翻译成中文,因为英文更能直观的反映其概念)

接下来的四个章节提供了编程实践信息,它们是:

  • Building Blocks: A Guide to ZooKeeper Operations
  • Bindings
  • Program Structure, with Simple Example [tbd]
  • Gotchas: Common Problems and Troubleshooting

附录中的链接是其它的有用的,和ZooKeeper相关的信息.
书中的章节都可以独立阅读,然而在开发你的第一个ZooKeeper程序之前, 你最好先阅读一下ZooKeeper数据模型和ZooKeeper基本操作。Simple Programmming Example对于理解ZooKeeper客户端程序的基本结构也很有帮助.

阅读全文

Apache Curator Framework

Curator framework提供了高级API, 极大的简化了ZooKeeper的使用。 它在ZooKeeper基础上增加了很多特性,可以管理与ZOoKeeper的连接和重试机制。这些特性包括:

  • 自动连接管理
    ** 有些潜在的错误情况需要让ZooKeeper client重建连接和重试。Curator可以自动地和透明地处理这些情况
  • Cleaner API
    简化原始的ZooKeeper方法,事件等 提供现代的流式接口
  • 技巧(Recipe)实现
    Leader选举 共享锁
    Path缓存和监控 分布式队列
    分布式优先级队列 ...

    阅读全文

Apache Curator Recipes

Curator实现了 ZooKeeper recipes文档中列出的所有技巧(除了两段提交two phase commit)。点击下面的技巧的名字可以查看详细信息。

Elections

  • Leader Latch - 在分布式计算中, leader选举是在几台节点中指派单一的进程作为任务组织者的过程。在任务开始前, 所有的网络节点都不知道哪一个节点会作为任务的leader或coordinator. 一旦leader选举算法被执行, 网络中的每个节点都将知道一个特别的唯一的节点作为任务leader.

  • Leader Election - 初始的leader选举实现.

阅读全文

Apache Curator 入门

学习ZooKeeper

Curator的用户应当了解ZooKeeper。 推荐一排年文章可以学习ZooKeeper: ZooKeeper入门

使用Curator

Curator的类库可以从Maven仓库中获取。上一篇文章已经介绍了它的相关组件。无论你使用Maven, Gradle还是 Ant都可以很容易的将curator包含到你的编译脚本中。

大部分用户都想使用curator预置的技巧(解决方案),所以你需要加上curator-recipes依赖。如果你想包装ZOoKeeper增加连接管理重试机制等, 加上 curator-framework依赖。

阅读全文

Apache Curator 简介

Curator提供了一套Java类库, 可以更容易的使用ZooKeeper。 ZooKeeper本身提供了Java Client的访问类,但是API太底层,不宜使用, 容易出错。 Curator提供了三个组件。 Curator client用来替代ZOoKeeper提供的类, 它封装了底层的管理并提供了一些有用的工具。Curator framework提供了高级的API来简化ZooKeeper的使用。它增加了很多基于ZooKeeper的特性,帮助管理ZooKeeper的连接以及重试操作。Curator Recipes提供了使用ZooKeeper的一些通用的技巧(方法)。 除此之外, Curator Test提供了基于ZooKeeper的单元测试工具。
所谓技巧(Recipes),也可以称之为解决方案, 或者叫实现方案, 是指ZooKeeper的使用方法, 比如分布式的配置管理, Leader选举等。

Curator最初由Netflix的Jordan Zimmerman开发。20117月在github上基于Apache 2.0开源协议开源。 之后发布了多个版本,并被广泛的应用。

Curator作为Apache ZooKeeper天生配套的组件。ZooKeeper的Java开发者自然而然的会选择它在项目中使用。

阅读全文