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客户端程序的基本结构也很有帮助.

阅读全文

Hadoop生态圈一览

Hadoop是一个大规模的分布式可扩展的批处理大数据框架(PB级别),可以运行于千台服务器的集群。

最近几年Hadoop生态圈持续成长。 涌现了很多的关于工具和框架的术语。 也有很多的组织基于Hadoop进行研究和创新, 使Hadoop变得越来越好,越来越容易。基于作者的几周的潜心研究, 他提供了一个思维脑图, 描绘了Hadoop的生态圈, 可以帮助我们了解Hadoop生态圈的全貌。

阅读全文

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开发者自然而然的会选择它在项目中使用。

阅读全文

Spring 集成 Kafka

spring-integration-kafka是Spring官方提供的一个Spring集成框架的扩展,用来为使用Spring框架的应用程序提供Kafka框架的集成。
当前spring-integration-kafka仅提供Kafka 0.8的集成,低版本的Kafka并不支持。

新的文章介绍了代码实践: Kafka和Spring集成实践

spring-integration-kafka仅仅支持两个组件,分别对应Producer和 High Level Consumer。 它们分别是:

  • Outbound Channel Adapter
  • Inbound Channel Adapter based on the High level consumer API

其它的Kafka的特性比如Simple Consumer API。 所以使用spring-integration-kafka你并不能指定特定的offset来读取数据,或者进行更灵活的定制。

总的来说,spring-integration-kafka还处于很低级的阶段,和整体的Spring framework/Spring Integration Framework还不是很完美的整合。如果你现在就使用它,可能在开发的过程中会遇到些问题。

阅读全文

Kafka快速入门

编译自官方文档

Apache Kafka是一个分布式消息发布订阅系统。它最初由LinkedIn公司基于独特的设计实现为一个分布式的提交日志系统( a distributed commit log),,之后成为Apache项目的一部分。Kafka系统快速、可扩展并且可持久化。它的分区特性,可复制和可容错都是其不错的特性。

Apache Kafka与传统消息系统相比,有以下不同:

  • 它被设计为一个分布式系统,易于向外扩展;
  • 它同时为发布和订阅提供高吞吐量;
  • 它支持多订阅者,当失败时能自动平衡消费者;
  • 它将消息持久化到磁盘,因此可用于批量消费,例如ETL,以及实时应用程序。

    First let's review some basic messaging terminology:
    首先来了解一下Kafka所使用的基本术语:


    Topic

    Kafka将消息种子(Feed)分门别类, 每一类的消息称之为话题(Topic).

    Producer

    发布消息的对象称之为话题生产者(Kafka topic producer)

    Consumer

    订阅消息并处理发布的消息的种子的对象称之为话题消费者(consumers)

    Broker

    已发布的消息保存在一组服务器中,称之为Kafka集群。集群中的每一个服务器都是一个代理(Broker). 消费者可以订阅一个或多个话题,并从Broker拉数据,从而消费这些已发布的消息。

听起来和JMS消息处理差不多?

让我们站的高一点,从高的角度来看,Kafka集群的业务处理就像这样子:
Kafka集群
Client和Server之间的交流通过一条简单、高性能并且不局限某种开发语言的TCP协议。除了Java Client外,还有非常多的其它编程语言的Client

阅读全文