十三、curator recipes之SharedCounter】的更多相关文章

简介 我们可以通过curator实现对一个分布式环境下共享变量的访问,zookeeper将共享变量维护在同一个路径下. 官方文档:http://curator.apache.org/curator-recipes/shared-counter.html javaDoc:http://curator.apache.org/apidocs/org/apache/curator/framework/recipes/shared/SharedCount.html 代码示例 import org.apac…
简介 curator的TreeCache允许对某个路径的数据和路径变更以及其下所有子孙节点的数据和路径变更进行监听. 官方文档:http://curator.apache.org/curator-recipes/tree-cache.html javaDoc:http://curator.apache.org/apidocs/org/apache/curator/framework/recipes/cache/TreeCache.html 代码示例 import org.apache.curat…
简介 Curator的NodeCache允许你监听一个节点,当节点数据更改或者节点被删除的时候将会触发监听. 官方文档:http://curator.apache.org/curator-recipes/node-cache.html javaDoc:http://curator.apache.org/apidocs/org/apache/curator/framework/recipes/cache/NodeCache.html 代码示例 import org.apache.curator.f…
简介 curator可以监听路径下子节点的变更操作,如创建节点,删除节点 官方文档:http://curator.apache.org/curator-recipes/path-cache.html javaDoc:http://curator.apache.org/apidocs/org/apache/curator/framework/recipes/cache/PathChildrenCache.html 代码示例 import org.apache.curator.framework.C…
简介 curator实现了类似DelayQueue的分布式延迟队列 官方文档:http://curator.apache.org/curator-recipes/distributed-delay-queue.html javaDoc:http://curator.apache.org/apidocs/org/apache/curator/framework/recipes/queue/DistributedDelayQueue.html 代码示例 import org.apache.curat…
简介 官方文档:http://curator.apache.org/curator-recipes/distributed-priority-queue.html javaDoc:http://curator.apache.org/apidocs/org/apache/curator/framework/recipes/queue/DistributedPriorityQueue.html 代码示例 import org.apache.curator.framework.CuratorFrame…
简介 curator实现了一种分布式ID队列,也是遵循FIFO原则,比普通队列新增的一个点是ID队列可以根据ID对队列元素进行操作,比如移除该元素. 官方文档:http://curator.apache.org/curator-recipes/distributed-id-queue.html javaDoc:http://curator.apache.org/apidocs/org/apache/curator/framework/recipes/queue/DistributedIdQueu…
简介 curator实现了先入先出的分布式消息队列,它采用的是zookeeper的持久化有序节点. 官方文档:http://curator.apache.org/curator-recipes/distributed-queue.html javaDoc:http://curator.apache.org/apidocs/org/apache/curator/framework/recipes/queue/DistributedIdQueue.html 代码示例 import org.apach…
简介 和Java的AtomicLong没有太大的不同DistributedAtomicLong旨在分布式场景中维护一个Long类型的数据,你可以像普通单机环境一样来使用它. 官方文档:http://curator.apache.org/curator-recipes/distributed-atomic-long.html javaDoc:http://curator.apache.org/apidocs/org/apache/curator/framework/recipes/atomic/D…
简介 curator实现了单个屏障barrier和双重屏障DoubleBarrier,单个屏障就是在一个进程里面设置了屏障,并等待其它进程去移除这个屏障,否则一直阻塞.双重屏障就是设置了两道屏障,两个线程都到达第一个屏障的时候执行下面的内容,然后两个都到达第二个屏障的时候继续执行下面的内容. 官方文档:http://curator.apache.org/curator-recipes/double-barrier.html javaDoc:http://curator.apache.org/ap…
简介 curator实现了一个类似容器的锁InterProcessMultiLock,它可以把多个锁包含起来像一个锁一样进行操作,简单来说就是对多个锁进行一组操作.当acquire的时候就获得多个锁资源,否则失败.当release时候释放所有锁资源,不过如果其中一把锁释放失败将会被忽略. 官方文档:http://curator.apache.org/curator-recipes/multi-shared-lock.html javaDoc:http://curator.apache.org/a…
简介 跟Java并信号量没有什么不同,curator实现的信号量也是基于令牌桶算法,当一个线程要执行的时候就去桶里面获取令牌,如果有足够的令牌那么我就执行如果没有那么我就阻塞,当线程执行完毕也要将令牌放回桶里. 官方文档:http://curator.apache.org/curator-recipes/shared-semaphore.html javaDoc:http://curator.apache.org/apidocs/org/apache/curator/framework/reci…
简介 recipes的InterProcessSemaphoreMutex是一种不可重入的互斥锁,也就意味着即使是同一个线程也无法在持有锁的情况下再次获得锁,所以需要注意,不可重入的锁很容易在一些情况导致死锁,比如你写了一个递归. 官方文档:http://curator.apache.org/curator-recipes/shared-lock.html javaDoc:http://curator.apache.org/curator-recipes/shared-lock.html 代码示…
简介 前面我们看到LeaderLatch对于选举的实现:https://www.cnblogs.com/lay2017/p/10264300.html 节点在加入选举以后,除非程序结束或者close()退出选举,否则加点自加入选举以后将持续持有或者保持对主节点的竞争. recipes的另外一个实现Leader Election则不同,被选为主节点的节点任务如果执行完就会放弃主节点,然后由剩下的节点进行主节点竞争.如果你希望已经执行完的主节点再次加入主节点选举那么你需要调用autoRequeue(…
简介 Java在单机环境实现了BlockQueue阻塞队列,与之类似的curator实现了分布式场景下的阻塞队列,SimpleDistributedQueue 官方文档:http://curator.apache.org/curator-recipes/simple-distributed-queue.html javaDoc:http://curator.apache.org/apidocs/org/apache/curator/framework/recipes/queue/SimpleDi…
简介 curator针对分布式场景实现了分布式屏障:barrier.我们在分布式系统中可以使用barrier去阻塞进程,知道某个条件被触发.其实跟Java多线程的barrier是一样的. 例如:当两个进程在执行任务的时候,A调用了B,A需要等待B完成以后的通知 官方文档:http://curator.apache.org/curator-recipes/barrier.html JavaDoc:http://curator.apache.org/apidocs/org/apache/curato…
简介 在分布式计算中,主节点选举是为了把某个进程作为主节点来控制其它节点的过程.在选举结束之前,我们不知道哪个节点会成为主节点.curator对于主节点选举有两种实现方式,本文示例演示Latch的实现示例. 官方文档:http://curator.apache.org/curator-recipes/leader-latch.html javaDoc:http://curator.apache.org/apidocs/org/apache/curator/framework/recipes/le…
简介 curator的recipes实现了可重入互斥锁,允许你在分布式场景下多个进程之间实现锁的互斥以协调多进程执行. 相关类:InterProcessMutex 官方文档:http://curator.apache.org/curator-recipes/shared-reentrant-lock.html javaDoc:http://curator.apache.org/apidocs/org/apache/curator/framework/recipes/locks/InterProc…
简介 curator实现了跨JVM的可重入读写互斥锁.它使用zookeeper去进行加锁,所以指定相同路径的处理线程将会基于“公平锁”的机制去竞争锁资源. 读写锁包含了读锁.写锁两个,它们的互斥关系如下: 1)读写互斥: 2)写写互斥: 3)读读不互斥. 重入性:读写锁是可以重入的,意味着你获取了一次读锁/写锁,那么你可以再次获取.但是要记得最后释放锁,获取了几次就得释放几次. 降级/升级:写锁可以降级成读锁,但是读锁不能升级成写锁否则会导致循环等待最终死锁. 官方文档:http://curat…
Cache 路径缓存(Path Cache) 监视一个ZNode,当子节点增加.更新.删除改变状态时,路径缓存会在本地保存当前子节点及其数据和状态. public PathChildrenCache(CuratorFramework client, String path, boolean cacheData) 参数: client 客户端实例 path 监视路径 cacheData 值为true时会缓存子节点数据 cache.start(); //开始缓存,start还有一种重载接受一个Sta…
curator简介 Netflix curator 是Netflix公司开源的一个Zookeeper client library,用于简化zookeeper客户端编程,包含一下几个模块: curator-client - zookeeper client封装,用于取代原生的zookeeper客户端,提供一些非常有用的客户端特性 curator-framework - zookeeper api的高层封装,大大简化zookeeper客户端编程,添加了例如zookeeper连接管理.重试机制等 c…
    这一篇文章我们将学习使用Curator来实现计数器.顾名思义,计数器是用来计数的,利用ZooKeeper可以实现一个集群共享的计数器.只要使用相同的path就可以得到最新的计数器值,这是由ZooKeeper的一致性保证的.Curator有两个计数器,一个是用int来计数,一个用long来计数. 1.SharedCount 1.SharedCount计数器介绍 这个类使用int类型来计数. 主要涉及三个类. SharedCount - 管理一个共享的整数.所有看同样的路径客户端将有共享的整…
1.Apache Curator简介     Curator提供了一套Java类库,可以更容易的使用ZooKeeper.ZooKeeper本身提供了Java Client的访问类,但是API太底层,不宜使用,易出错.Curator提供了三个组件.Curator client用来替代ZOoKeeper提供的类,它封装了底层的管理并提供了一些有用的工具.Curator framework提供了高级的API来简化ZooKeeper的使用.它增加了很多基于ZooKeeper的特性,帮助管理ZooKeep…
在实际应用开发中,当某个ZNode发生变化后我们需要得到通知并做一些后续处理,Curator Recipes提供了Path Cache 来帮助我们轻松实现watch ZNode. Path Cache Path Cache可以监控ZNode子结点的变化,例如:add,update,delete. A Path Cache is used to watch a ZNode. Whenever a child is added, updated or removed, the Path Cache…
Zookeeper典型应用 参考官方文档: http://zookeeper.apache.org/doc/current/recipes.html Out of the Box Applications: Name Service, Configuration, Group Membership Barriers Double Barriers Queues Priority Queues Locks Shared Locks Recoverable Shared Locks Two-phas…
CuratorFrameworkFramework是ZooKeeper Client更高的抽象API 自动连接管理: 1. 当ZooKeeper客户端内部出现异常, 将自动进行重连或重试, 该过程对外几乎完全透明 2. 监控节点数据变化事件NodeDataChanged,需要时调用updateServerList()方法 3. Curator recipes自动移除监控 更清晰的API: 简化了ZooKeeper原生的方法, 事件等, 提供流式fluent的接口 提供Recipes实现 : 选举…
原文:ZooKeeper简单使用 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012055638/article/details/80668116 ZooKeeper简单使用 ZooKeeper简单使用 1.ZooKeeper简介 2.ZooKeeper能做什么 3.ZooKeeper核心 3.1.ZooKeeper安装 3.2.ZooKeeper角色 3.3.ZooKeeper节点类型 3.4.Java操作ZooKeeper 4.ZooK…
基于etcd的分布式配置中心 etcd docs | etcd versus other key-value stores https://etcd.io/docs/v3.4.0/learning/why/ The name "etcd" originated from two ideas, the unix "/etc" folder and "d"istributed systems. The "/etc" folder…
本文作者:HelloGitHub-老荀 Hi,这里是 HelloGitHub 推出的 HelloZooKeeper 系列,免费开源.有趣.入门级的 ZooKeeper 教程,面向有编程基础的新手. ZooKeeper 是 Apache 软件基金会的一个软件项目,它为大型分布式计算提供开源的分布式配置服务.同步服务和命名注册. ZooKeeper 曾经是 Hadoop 的一个子项目,但现在是一个顶级独立的开源项目. ZK 在实际开发工作中经常会用见到,算的上是吃饭的家伙了,那可得玩透.用的趁手,要…
vivo 互联网大数据团队-Zheng Xiaofeng 一.背景 Druid 是一个专为大型数据集上的高性能切片和 OLAP 分析而设计的数据存储系统. 由于Druid 能够同时提供离线和实时数据的查询,因此Druid最常用作为GUI分析.业务监控.实时数仓的数据存储系统. 此外Druid拥有一个多进程,分布式架构,每个Druid组件类型都可以独立配置和扩展,为集群提供最大的灵活性. 由于Druid架构设计和数据(离线,实时)的特殊性,导致Druid元数据管理逻辑比较复杂,主要体现在Druid…