curator

使用Curator操作ZooKeeper

一笑奈何 提交于 2019-12-27 10:00:29
Curator是Netflix公司开源的一个ZooKeeper client library,用于简化ZooKeeper客户端编程。它包含如下模块: Framework:Framework是ZooKeeper API的High-Level的封装,它让访问ZooKeeper更加简单。它基于ZooKeeper添加了一些新的特性,同时屏蔽了访问ZooKeeper集群在管理连接和重试操作方面的复杂度。 Recipes:在Framework的基础上,实现了一些通用的功能,称之为“菜单”。 Utilities:访问ZooKeeper时候的一些公用方法。 Client:一个Low-Level的ZooKeeper客户端,并有一些公用方法。 Errors:Curator的异常处理,包括连接问题,异常恢复等等。 Extensions: 连接ZooKeeper RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3); CuratorFramework _client = CuratorFrameworkFactory.newClient("10.23.22.237:2181", retryPolicy); _client.start(); Curator通过CuratorFrameworkFactory来创建客户端

Zookeeper——4、使用Curator操作Zookeeper

北城余情 提交于 2019-12-05 04:45:59
为了更好的实现Java操作zookeeper服务器,后来出现了Curator框架,非常的强大,目前已经是Apache的顶级项目,里面提供了更多丰富的操作,例如session超时重连、主从选举、分布式计数器、分布式锁等等适用于各种复杂的zookeeper场景的API封装。( zookeeper文章所需的jar包 ) Curator所需的maven依赖: <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-client</artifactId> <version>3.2.1</version> </dependency> Curator框架中使用链式编程风格,易读性更强

解决org.apache.zookeeper.ZooKeeper.(Ljava/lang/String;ILorg/apache/zookeeper/Watcher;Z)V

拥有回忆 提交于 2019-12-05 04:40:04
报错 java.lang.NoSuchMethodError: org .apache .zookeeper .ZooKeeper .<init>(Ljava/lang/String ;ILorg/apache/zookeeper/Watcher;Z)V at org .apache .curator .utils .DefaultZookeeperFactory .newZooKeeper (DefaultZookeeperFactory .java : 29 ) ~[curator-client- 2.10 .0 .jar :?] at org .apache .curator .framework .imps .CuratorFrameworkImpl $2 .newZooKeeper (CuratorFrameworkImpl .java : 150 ) ~[curator-framework- 2.10 .0 .jar :?] at org .apache .curator .HandleHolder $1 .getZooKeeper (HandleHolder .java : 94 ) ~[curator-client- 2.10 .0 .jar :?] at org .apache .curator .HandleHolder .getZooKeeper

五、Curator使用:分布式锁

泄露秘密 提交于 2019-12-04 20:15:18
分布式锁介绍 分布式执行一些不需要同时执行的复杂任务,curator利用zk的特质,实现了这个选举过程。其实就是利用了多个zk客户端在同一个位置建节点,只会有一个客户端建立成功这个特性。来实现同一时间,只会选择一个客户端执行任务 代码 //分布式锁 InterProcessMutex lock = new InterProcessMutex(cc,"/lock_path"); CountDownLatch down = new CountDownLatch(1); for (int i = 0; i < 30; i++) { new Thread(()->{ try { down.await(); lock.acquire(); } catch (Exception e) { e.printStackTrace(); } SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); System.out.println(sdf.format(new Date())); try { lock.release(); } catch (Exception e) { e.printStackTrace(); } }).start(); } down.countDown(); InterProcessMutex

zookeeper核心原理详解

最后都变了- 提交于 2019-12-04 15:10:30
  关于zookeeper的原理解析,可以参见 zookeeper核心原理详解 ,本文所述大多数实践基于对zookeeper原理的首先理解。   Curator是Netflix公司开源的一个Zookeeper客户端,目前是apache顶级项目。与Zookeeper提供的原生客户端相比,Curator的抽象层次更高,简化了Zookeeper客户端的开发量,相当于netty之于socket编程。提供了一套易用性和可读性更强的Fluent风格的客户端API框架。官网为http://curator.apache.org/   除此之外,Curator中还提供了Zookeeper各种应用场景(Recipe,如共享锁服务、Master选举机制和分布式计算器等)的抽象封装。 所以说啊,不管是做底层库还是应用,用户体验真的很重要。 关于zookeeper的java客户端   Zookeeper的 官方客户端 提供了基本的操作,比如,创建会话、创建节点、读取节点、更新数据、删除节点和检查节点是否存在等。但对于开发人员来说,Zookeeper提供的基本操纵还是有一些不足之处。典型的缺点为: (1)Zookeeper的Watcher是一次性的,每次触发之后都需要重新进行注册; (2)Session超时之后没有实现重连机制; (3)异常处理繁琐,Zookeeper提供了很多异常

Dubbo(二):zookeeper 注册中心

一世执手 提交于 2019-12-04 01:19:28
zookeeper 注册中心 Zookeeper 是 Apacahe Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境,并推荐使用 [1]。 流程说明: 服务提供者启动时: 向 /dubbo/com.foo.BarService/providers 目录下写入自己的 URL 地址 服务消费者启动时: 订阅 /dubbo/com.foo.BarService/providers 目录下的提供者 URL 地址。并向 /dubbo/com.foo.BarService/consumers 目录下写入自己的 URL 地址 监控中心启动时: 订阅 /dubbo/com.foo.BarService 目录下的所有提供者和消费者 URL 地址。 支持以下功能: 当提供者出现断电等异常停机时,注册中心能自动删除提供者信息 当注册中心重启时,能自动恢复注册数据,以及订阅请求 当会话过期时,能自动恢复注册数据,以及订阅请求 当设置 时,记录失败注册和订阅请求,后台定时重试 可通过 设置 zookeeper 登录信息 可通过 设置 zookeeper 的根节点,不配置将使用默认的根节点。 支持 * 号通配符 ,可订阅服务的所有分组和所有版本的提供者 使用 在 provider 和 consumer 中增加 zookeeper

跟着实例学习ZooKeeper的用法: Curator扩展库

允我心安 提交于 2019-12-03 15:18:51
还记得Curator提供哪几个组件吗? 我们不妨回顾一下: Recipes Framework Utilities Client Errors Extensions 前面的例子其实前五个组件都涉及到了, 比如Utilities例子的TestServer, Client里的CuratorZookeeperClient, Errors里的ConnectionStateListener等。 还有最后一个组件我们还没有介绍,那就是Curator扩展组件。 Recipes组件包含了丰富的Curator应用的组件。 但是这些并不是ZooKeeper Recipe的全部。 大量的分布式应用已经抽象出了许许多多的的Recipe,其中有些还是可以通过Curator来实现。 如果不断都将这些Recipe都增加到Recipes中, Recipes会变得越来越大。 为了避免这种状况, Curator把一些其它的Recipe放在单独的包中, 命名方式就是curator-x-<name>,比如curator-x-discovery, curator-x-rpc。 本文就是介绍curator-x-discovery。 这是一个服务发现的Recipe。 我们在介绍临时节点Ephemeral Node的时候就讲到, 可以通过临时节点创建一个服务注册机制。 服务启动后创建临时节点, 服务断掉后临时节点就不存在了。

Elasticsearch索引管理利器——Curator深入详解

泄露秘密 提交于 2019-12-03 14:23:31
干货 | Elasticsearch索引管理利器——Curator深入详解 原创: 铭毅天下 铭毅天下 1月5日 1、痛点 Elasticsearch集群管理中索引的管理非常重要。 数据量少的时候,一个或者几个索引就能满足问题。 但是一旦数据量每天几TB甚至几十TB的增长时,索引的生命周期管理显得尤为重要。 痛点1 :你是否遇到过磁盘不够,要删除几个月前甚至更早时间数据的情况? 如果没有基于时间创建索引,单一索引借助delete_by_query结合时间戳,会越删磁盘空间越紧张,以至于对自己都产生了怀疑? 痛点2 :你是否还在通过复杂的脚本管理索引? 1个增量rollover动态更新脚本, 1个定期delete脚本, 1个定期force_merge脚本, 1个定期shrink脚本, 1个定期快照脚本。 索引多了或者集群规模大了,脚本的维护是一笔不菲的开销。 如果以上痛点,你都遇到过了。 那么,客官别走,本文利器curator会给你答案。 2、curator是什么? 2.1 被Elastic收编的历史 curator最早被称为clearESindices.py。 它的唯一功能是删除索引, 而后重命名:logstash_index_cleaner.py。它在logstash存储库下作用:过期日志清理。 此后不久,原作者加入Elastic,它成为了Elasticsearch

curator KeeperErrorCode = Unimplemented异常

匿名 (未验证) 提交于 2019-12-03 00:39:02
问题描述: 最近在玩Spring cloud 2.0,使用zookeeper最为注册中心,zookeeper的版本为3.4.11,工程依赖的curator版本为4.0.1,工程配置好启动报org.apache.zookeeper.KeeperException$UnimplementedException: KeeperErrorCode = Unimplemented for xxx 异常 查看curator官网发现如下信息: Curator 4.0 has a hard dependency on ZooKeeper 3.5.x If you are using ZooKeeper 3.5.x there’s nothing additional to do - just use Curator 4.0 所以问题很清楚.curator 4只支持zookeeper 3.5.x 升级zookeeper到3.5问题解决; zookeeper 3.5一直都是beta,生产环境慎用; 文章来源: curator KeeperErrorCode = Unimplemented异常

hive 2.3.3(HA) on spark 2.2.0 on yarn 2.6.5踩坑记

匿名 (未验证) 提交于 2019-12-03 00:21:02
hive 2.3.3配置HA spark 2.2.0 hadoop 2.6.5 zookeeper 3.6.5 hbase 1.2.6 org.apache.curator.utils.ZKPaths.fixForNamespace,这个是因为curator-framework和curator-client版本不匹配问题,在集成的时候要注意梳理,这里附上我的pom(依赖部分) < project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > ...... < properties > < jdk.version > 1.8 </ jdk.version > < junit.version > 4.11 </ junit.version > < spark.version > 2.1.0 </ spark.version > < hadoop.version > 2.6.5 </ hadoop.version > < hbase