客户端

Curator-操作Zookeeper的利器

所在版块: 后端技术 2019-12-11 19:08 [复制链接] 查看: 2221|回复: 0

Curator翻译成中文是馆长,Zookeeper是动物园看守人、饲养员,而Curator就是指挥这些饲养员的馆长。从名字可以看出Curator的定位:指挥zookeeper操作的利器。

"Guava is to Java what Curator is to Zookeeper" —— Patrick Hunt, zookeeper committer

Zookeeper原生API的不足:
  • 不能递归创建和删除节点
  • Watcher只能使用一次
  • 许多分布式应用问题需要自行实现,比如分布式锁、Leader选举、共享计数器、分布式队列、配置管理等。


Curator是Netflix公司开源的一个Zookeeper Java库,2011年7月捐献给Apache。Curator在zookeeper原生API上进行了包装,解决了很多非常底层的细节开发。提供各种分布式应用场景的抽象封装, 比如:分布式锁服务、集群领导选举、共享计数器、缓存机制、分布式队列等。实现了Fluent风格的API接口,是最好用、最流行的zookeeper的客户端。

使用Curator的框架和中间件包括:Dubbo、Druid、Spark、Spark、Hive、Flink、Storm、Kylin等(https://cwiki.apache.org/confluence/display/CURATOR/Powered+By


Zookeeper的以下特性决定他可以作为分布式架构中用于协调的基础组件:
1. 创建节点的唯一性(写数据强一致保证)
2. 能创建临时节点(服务器是否存活的判断依据)
3. watch机制(事件监听和通知)
4. 能创建顺序节点(全局步骤协调)

Zookeeper以下不足决定不会把他用于分布式存储:
1. zk节点的数据有1MB限制;
2. zk上节点过多会影响zk服务启动和恢复过程(zk在恢复模式下是不可能对外服务的);
3. zk数据会全部存在内存中,虽然它也会持久化到文件。

所以在zk主要应用场景是分布式协调,如Master选举、分布式锁、服务发现。这些场景主要创建临时节点,数据量比较小,通常和集群机器数量同等规模。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码关注微信公众号

QQ|Archiver|手机版|小黑屋|mwt-design ( 沪ICP备12041170号-1

GMT+8, 2024-4-23 16:56 , Processed in 0.067249 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回列表