Cache

路径缓存(Path Cache)

监视一个ZNode,当子节点增加、更新、删除改变状态时,路径缓存会在本地保存当前子节点及其数据和状态。

public PathChildrenCache(CuratorFramework client,
String path,
boolean cacheData)
参数:
client 客户端实例
path 监视路径
cacheData 值为true时会缓存子节点数据 cache.start(); //开始缓存,start还有一种重载接受一个StartMode,一共三种模式 NORMAL-不会初始化cache ,BUILD_INITIAL_CACHE-start返回前会重建cache提供初始值,POST_INITIALIZED_EVENT-初始化后同时触发INITIALIZED事件
cache.getCurrentData(); //返回当前缓存
cache.getListenable().addListener(PathChildrenCacheListener listener) //增加cache变化的监听器
cache.close(); //手动关闭缓存

节点缓存(Node Cache)

监视ZNode,当节点数据被修改或删除,节点缓存会在本地改变自身状态(删除的话会变成null)。

public NodeCache(CuratorFramework client,
String path)
参数:
client 客户端实例
path 节点路径 cache.start(); //开始缓存
cache.getCurrentData(); //返回当前缓存
cache.getListenable().addListener(PathChildrenCacheListener listener) //增加cache变化的监听器
cache.close(); //手动关闭缓存

树缓存(Tree Cache)

本地缓存ZK的树形结构。监视ZK路径,监听更新、新建、删除事件并更新数据。

public TreeCache(CuratorFramework client,
String path,
boolean cacheData)
参数:
client 客户端实例
path 监视路径
cacheData 值为true时会缓存子节点数据 cache.start(); //开始缓存
cache.getCurrentData(); //返回当前缓存
cache.getListenable().addListener(PathChildrenCacheListener listener) //增加cache变化的监听器
cache.close(); //手动关闭缓存

Counters

共享计数器(Shared Counter)

维护一个共享的整数,所有客户端可以得到最新的值(利用ZK的一致性)。

public SharedCount(CuratorFramework client,
String path,
int seedValue)
参数:
client 客户端实例
path 计数器存储路径
seedValue 路径不存在时的默认初始值 count.start(); //首先需要运行start方法
count.getCount(); //获得计数
count.addListener(SharedCountListener listener); //count变化后的监听器
count.setCount(int newCount); //修改计数值,不考虑当前值
count.trySetCount(int newCount); //只有在getCount后值没有变的情况下才会调用成功,会返回布尔类型标识是否成功
count.close(); //需要手动关闭

分布式原子长整形(Distributed Atomic Long)

原子递增计数。会首先使用乐观锁。如果失败可以选择使用进程间锁(InterProcessMutex)。无论哪种情况都会需要重试策略。

public DistributedAtomicLong(CuratorFramework client,
String counterPath,
RetryPolicy retryPolicy)
该构造函数创建的对象只会使用乐观锁
参数:
client 客户端实例
counterPath 计数器路径
retryPolicy 重试策略 public DistributedAtomicLong(CuratorFramework client,
String counterPath,
RetryPolicy retryPolicy,
PromotedToLock promotedToLock)
该构造函数创建的对象会使用乐观锁,如果不成功再使用进程锁
Parameters:
client 客户端实例
counterPath 计数器路径
retryPolicy 重试策略
promotedToLock 进程锁变量

该对象包含get/increment/decrement/add/subtract方法。

使用返回值得AtomicValue.succeeded方法检查是否更新成功,preValue查看更新前值,postValue查看更新后的值。

Curator Recipes(Cache&Counter)的更多相关文章

  1. 二十一、curator recipes之TreeCache

    简介 curator的TreeCache允许对某个路径的数据和路径变更以及其下所有子孙节点的数据和路径变更进行监听. 官方文档:http://curator.apache.org/curator-re ...

  2. 二十、curator recipes之NodeCache

    简介 Curator的NodeCache允许你监听一个节点,当节点数据更改或者节点被删除的时候将会触发监听. 官方文档:http://curator.apache.org/curator-recipe ...

  3. 十九、curator recipes之PathChildrenCache

    简介 curator可以监听路径下子节点的变更操作,如创建节点,删除节点 官方文档:http://curator.apache.org/curator-recipes/path-cache.html ...

  4. 高性能MySql进化论(四):Summary,Cache,Counter表的使用

    在实际的应用中,往往会定期的对一个周期内的系统数据进行统计分析.例如某购物网站定期的统计商品在一个月/年期内的销售情况,如果采用扫描所有相关表的方式在某个时间点进行统计分析, 由于数据量很大,以及表结 ...

  5. 十三、curator recipes之SharedCounter

    简介 我们可以通过curator实现对一个分布式环境下共享变量的访问,zookeeper将共享变量维护在同一个路径下. 官方文档:http://curator.apache.org/curator-r ...

  6. 十八、curator recipes之DistributedDelayQueue

    简介 curator实现了类似DelayQueue的分布式延迟队列 官方文档:http://curator.apache.org/curator-recipes/distributed-delay-q ...

  7. 十七、curator recipes之DistributedPriorityQueue

    简介 官方文档:http://curator.apache.org/curator-recipes/distributed-priority-queue.html javaDoc:http://cur ...

  8. 十六、curator recipes之DistributedIdQueue

    简介 curator实现了一种分布式ID队列,也是遵循FIFO原则,比普通队列新增的一个点是ID队列可以根据ID对队列元素进行操作,比如移除该元素. 官方文档:http://curator.apach ...

  9. 十五、curator recipes之DistributedQueue

    简介 curator实现了先入先出的分布式消息队列,它采用的是zookeeper的持久化有序节点. 官方文档:http://curator.apache.org/curator-recipes/dis ...

随机推荐

  1. Visual Studio 2015 & C#6.0

      Visual Studio 2015 & C#6.0 试用报告,持续更新.   昨天早上看到了.net开源的消息,我是非常兴奋的,毕竟局限于Windows的.NET经常被人唾弃.VB暂且不 ...

  2. 修改MvcPager分页控件以适用Bootstrap 效果(含英文版,可下载)

    软件开发分页效果必不可少,对于Asp.Net MVC 而言,MvcPager 是个不错的选择.请访问http://www.webdiyer.com/mvcpager/ 由于自带的分页样式不能和项目整体 ...

  3. 批处理中set截取字符具体解释

    set截取字符具体解释  在批处理中,set的功能有点繁杂:设置变量.显示环境变量的名及值.做算术运算.等待用户的输入.字符串截取.替换字符串,是我们经常使用的命令之中的一个. 在字符串截取方面,新手 ...

  4. SaaS模式和实现思路

    EFW框架开发的系统支持SaaS模式和实现思路 回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dAD ...

  5. 输出,变量的使用,子查询,逻辑语句,循环,case..when..then..end多分支语句,Exists(判断存在)

    --------------输出----------------print 'hello world'--以文本形式输出select 'hello world'--以网格形式输出,也可以设置成以文本形 ...

  6. 【值得收藏】数据分析和可视化软件IDL的学习资料汇编【可免费下载】

    IDL学习教程 IDL 是一种数据分析和图像化应用程序及编程语言,最初在七十年代后期用于帮助科学家分析火星探险卫星发回的数据.此后,IDL得到广泛运用,使用者日众.IDL能使用户可以迅速且方便地运用此 ...

  7. SQLSERVER 数据库性能的的基本 MVC + EF + Bootstrap 2 权限管理

    SQLSERVER 数据库性能的基本 很久没有写文章了,在系统正式上线之前,DBA一般都要测试一下服务器的性能 比如你有很多的服务器,有些做web服务器,有些做缓存服务器,有些做文件服务器,有些做数据 ...

  8. Excel开发

    浅谈Excel开发:九 Excel 开发中遇到的常见问题及解决方法   Excel开发过程中有时候会遇到各种奇怪的问题,下面就列出一些本人在开发中遇到的一些比较典型的问题,并给出了解决方法,希望对大家 ...

  9. 使用MVCJqGrid

    使用MVCJqGrid的心得   最近公司网站进行升级,项目要用.net mvc,mysql和轻量级orm框架dapper.由于美工页面出不来啊,让我先写简单写写后台的列表,同事说用MvcJqGrid ...

  10. 【ios开发】自定义Actionsheet实现时间选择器和省市区选择器

    最近的工程有一个个人资料页面,需要填写生日和地区的信息,需要自己定义个actionsheet. 但是到网上搜了一下都不太合适,只好自己研究研究,重写了一个.共享出来给大家用用,突然发现自己精神很高尚吗 ...