Curator提供了一组工具类和方法用来测试基于Curator的应用。 并且提供了操作ZNode辅助类以及其它一些数据结构
Test Server
curator-test提供了TestingServer
类。 这个类创建了一个本地的, 同进程的ZooKeeper服务器用来测试。
Test Cluster
curator-test提供了TestingCluster
类。 这个类创建了一个内部的ZooKeeper集群用来测试。
ZKPaths
提供了各种静态方法来操作ZNode:
- getNodeFromPath: 从一个全路径中得到节点名, 比如 "/one/two/three" 返回 "three"
- mkdirs: 确保所有的节点都已被创建
- getSortedChildren: 得到一个给定路径的子节点, 按照sequence number排序
- makePath: 给定父路径和子节点,创建一个全路径
EnsurePath
确保一个特定的路径被创建。当它第一次使用时,一个同步ZKPaths.mkdirs(ZooKeeper, String)调用被触发来确保完整的路径都已经被创建。后续的调用将不是同步操作.
用法:
|
|
注意: 此方法namespace会参与路径名字的创建。
BlockingQueueConsumer
请参看DistributedQueue 和 DistributedPriorityQueue。
提供JDK BlockingQueue类似的行为。
QueueSharder
由于zookeeper传输层的限制, 单一的队列如果超过10K的元素会被分割(break)。 这个类为多个分布式队列提供了一个facade。 它监控队列, 如果一个队列超过这个阈值, 一个新的队列就被创建。 在这些队列中Put是分布式的。
Reaper and ChildReaper
Reaper
可以用来删除锁的父路径。定时检查路径被加入到reaper中。 当检查时,如果path没有子节点/路径, 此路径将被删除。每个应用中CLient应该只创建一个reaper实例。必须将lock path加到这个readper中。 reaper会定时的检查删除它们。
ChildReaper
用来清除父节点下所有的空节点。定时的调用getChildren()并将空节点加入到内部管理的reaper中。
- 注意: 应该考虑使用LeaderSelector来运行Reapers, 因为它们不需要在每个client运行.