简介

  • zookeeper

起源于雅虎很多系统依赖于存在单点问题的分布式协调系统

很多项目是动物命名 > zookeeper 得名

  • curator

Netflix 开源 zk 客户端框架 Curator(馆长之意),解决了zk客户端底层的细节开发工作,包括连接重连、反复注册Watcher和NodeExistsException异常等等

Guava is to Java that Curator to Zookeeper

降低 zk 使用的复杂性

  • 可插拔的重试机制: 它将给捕获所有可恢复的异常配置一个重试策略, 并且内部也提供了几种标准的重试策略(比如指数补偿)

  • 连接状态监控: Curator初始化之后会一直的对zk连接进行监听, 一旦发现连接状态发生变化, 将作出相应的处理

  • zk客户端实例管理:Curator对zk客户端到server集群连接进行管理. 并在需要的情况, 重建zk实例, 保证与zk集群的可靠连接

  • 各种使用场景支持:Curator实现zk支持的大部分使用场景支持(甚至包括zk自身不支持的场景), 这些实现都遵循了zk的最佳实践, 并考虑了各种极端情况

maven

<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-recipes</artifactId>
</dependency>
  • curator-framework:zk 底层api一些封装
  • curator-client提供一些客户端的操作,例如重试策略等
  • curator-recipes:封装高级特性,如:Cache事件监听、选举、分布式锁、分布式计数器、分布式Barrier等

zk 3.4 对应 curator 2.x zk 3.5 对应 curator 3.x

curator 4.x 兼容了 zk 3.4,3.5

但注意 curator-recipes 4.x 引了zk 3.5,在zk server 是3.4时,需要注掉zk引用

zk数据是完全在内存的

https://www.jianshu.com/p/70151fc0ef5d