ZooKeeper客户端curator介绍及使用
Curator提供了一套Java类库, 可以更容易的使用ZooKeeper。 ZooKeeper本身提供了Java Client的访问类,但是API太底层,不宜使用, 容易出错。 Curator提供了三个组件。 Curator client用来替代ZOoKeeper提供的类, 它封装了底层的管理并提供了一些有用的工具。Curator framework提供了高级的API来简化ZooKeeper的使
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开发者自然而然的会选择它在项目中使用。
组件概览
组件名 | 描述 |
---|---|
Recipes | 通用ZooKeeper技巧(“recipes”)的实现. 建立在Curator Framework之上 |
Framework | 简化zookeeper使用的高级. 增加了很多建立在zooper之上的特性. 管理复杂连接处理和重试操作 |
Utilities | 各种工具类 |
Client | ZooKeeper本身提供的类的替代者。 负责底层的开销以及一些工具 |
Errors | Curator怎样来处理错误和异常 |
Extensions | curator-recipes包实现了通用的技巧,这些技巧在ZooKeeper文档中有介绍。为了避免是这个包(package)变得巨大, recipes/applications将会放入一个独立的extension 包下。并使用命名规则curator-x-name. |
Maven / Artifacts
Curator 编译好的类库被发布到Maven Center中。Curator包含几个artifact. 你可以根据你的需要在你的项目中加入相应的依赖。对于大多数开发者来说,引入curator-recipes
这一个就足够了。
使用Curator
Curator的类库可以从Maven仓库中获取。上一篇文章已经介绍了它的相关组件。无论你使用Maven, Gradle还是 Ant都可以很容易的将curator包含到你的编译脚本中。
大部分用户都想使用curator预置的技巧(解决方案),所以你需要加上curator-recipes
依赖。如果你想包装ZOoKeeper增加连接管理重试机制等, 加上 curator-framework
依赖。
得到连接
Curator使用流式风格。 非常适合编程的一种风格, 如果你还了解它,建议先熟悉它。
Curator连接实例(CuratorFramework)由CuratorFrameworkFactory产生。对于你要连接的ZooKeeper集群, 只需一个CuratorFramework
对象即可。
|
|
它会使用缺省值创建到zookeeper集群的连接。唯一需要设置的是指定重试策略。大部分情况你只需下面的代码:
|
|
client必须调用start
方法。 (不再使用时调用close方法)
直接调用ZooKeeper
一旦获得了CuratorFramework实例,就可以直接调用zookeeper,就像ZOoKeeper发布包中提供的原始的ZooKeeper
对象一样。
|
|
好处是Curator自己负责连接的管理和重试, 不必再写复杂的代码处理这个问题(如果你用ZOoKeeper自己的API, 就会理解管理连接的痛苦了)
技巧
来看Curator提供的两个技巧。
分布式的锁
|
|
leader选举
|
|
代码相当的简单。
更多推荐
所有评论(0)