Zookeeper原生API-ZkClient-Curator对比

来源:互联网 发布:汉朝皇帝知乎 编辑:程序博客网 时间:2024/06/05 02:08

Zookeeper是一个开放源代码的分布式协调服务,由雅虎创建,是Google的Chubby开源实现,Zookeeper的设计目标是将那些复杂的容易出错的分布式一致性服务封装起来,构成一个可靠的原语集,并以一系列简单易用的接口暴露给用户使用。分布式应用程序可以基于它实现诸如发布/订阅、负载均衡、命名服务、分布式协调服务/通知,集群管理、Master选举、分布式锁和分布式队列等功能。

直接使用Zookeeper原生API的人并不多,因为:

1)连接的创建是异步的,需要开发人员自行编码实现等待 
2)连接没有超时自动的重连机制 
3)Zookeeper本身没提供序列化机制,需要开发人员自行指定,从而实现数据的序列化和反序列化 
4)Watcher注册一次只会生效一次,需要不断的重复注册 
5)Watcher的使用方式不符合java本身的术语,如果采用监听器方式,更容易理解 
6)不支持递归创建树形节点


ZkClient是Github上的一个开源Zookeeper客户端,是由Datameer工程师Stefan Groschupf和Peter Voss一起开发。ZkClient在原生Zookeeper api的基础上进行封装,是一个更易用的客户端,解决和如下问题:

1)session会话超时重连

2)解决Watcher反复注册

3)简化API开发


Curator是Netflix公司开源的一套Zookeeper客户端框架,作者是Jordan Zimmerman。Curator解决除了ZkClient提供的功能外,新增如下功能:

1)提供了一套Fluent风格的客户端API框架。

2)提供了各种应用场景(Recipe,如共享锁服务、Master选举机制和分布式计数器)的抽样封装。

更多关于Curator的知识请参看http://ifeve.com/zookeeper-curato-framework/