通过Curator操作Zookeeper的例子(事务,分布式锁,原子自增))

Curator,用来操作zookeeper的瑞士军刀,首先感谢一下来自Netflix的 Jordan Zimmerman,是他给我们带来了如此美妙的工具。

    子节点缓存(PathChildrenCache)

            这个对象可以帮助我们实现根节点下面,子节点数据变化的回调通知。例如子节点的添加,修改,删除,通过PathChildrenCacheEvent
,我们可以在监听的事件里面得到当前节点的操作,然后做相应的操作。

其实,还有另外NodeCache也是可以缓存节点的变更,不过,它只能监听节点的新增,及修改,不能对节点的删除进行监听处理。

    节点操作事务处理(CuratorTransactionResult)

             当我们需要批量操作节点信息时,可以通过启用事务,来保证操作的原子性,类似数据库里面的多表操作.

  分布式锁(InterProcessMutex)

当我们需要在多个JVM之间同步对象的锁时,就需要用到这个,让你感觉就像一个JVM一样。

    分布式原子自增(DistributedAtomicLong)LONG类型

   类似于分布式计数器,实现多JVM共享一个计数器。

        它主要有两个构适方法,默认是基于乐观锁的实现 ,另外一个是互斥锁,

/**

* Creates in mutex promotion mode. The optimistic lock will be tried first using

* the given retry policy. If the increment does not succeed, a {@link InterProcessMutex} will be tried

* with its own retry policy

*

* @param client the client

* @param counterPath path to hold the value

* @param retryPolicy the retry policy to use

* @param promotedToLock the arguments for the mutex promotion

*/

public DistributedAtomicInteger(CuratorFramework client, String counterPath, RetryPolicy retryPolicy, PromotedToLock promotedToLock)

{

value = new DistributedAtomicValue(client, counterPath, retryPolicy, promotedToLock);

}

重点是第四个参数,互斥锁对象PromotedToLock,它有四个属性:

private final String        path;//zookeper节点

private final long          maxLockTime;//最大锁定时间

private final TimeUnit      maxLockTimeUnit;//时间单位

private final RetryPolicy   retryPolicy;// 重试策略

根据实际场景,选择合适的构造。


分布式原子自增(SharedCount)INTEGER类型

这是另外一个实现,跟上面差不多,需要手动start,close,唯一不同的就是它有一个监听器,可以监听每次计数器和连接的变化,这里,你可以做一些额外的操作。


其它,如选举,队列,锁等再另起章节说明了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,088评论 19 139
  • 第三章 Java内存模型 3.1 Java内存模型的基础 通信在共享内存的模型里,通过写-读内存中的公共状态进行隐...
    泽毛阅读 9,831评论 2 21
  • 在《分布式利器Zookeeper(一)》中对ZK进行了初步的介绍以及搭建ZK集群环境,本篇博客将涉及的话题是:基于...
    张丰哲阅读 10,231评论 9 40
  • 1、 洗脸有助于清洁,对痘痘肌很好? 痘痘多发于皮脂分泌旺盛的油性皮肤,因为过多的油脂容易阻塞毛孔,才有很多人认为...
    小兵归来阅读 1,760评论 0 0
  • 早上上班的时候,我看到同事带着买好的面包进来办公室,就调侃着:怎么今天吃面包,不在家做早餐了?她心情闷闷的说:不做...
    鸢尾苏阅读 3,452评论 4 6

友情链接更多精彩内容