- 浏览: 623943 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (819)
- java开发 (110)
- 数据库 (56)
- javascript (30)
- 生活、哲理 (17)
- jquery (36)
- 杂谈 (15)
- linux (62)
- spring (52)
- kafka (11)
- http协议 (22)
- 架构 (18)
- ZooKeeper (18)
- eclipse (13)
- ngork (2)
- dubbo框架 (6)
- Mybatis (9)
- 缓存 (28)
- maven (20)
- MongoDB (3)
- 设计模式 (3)
- shiro (10)
- taokeeper (1)
- 锁和多线程 (3)
- Tomcat7集群 (12)
- Nginx (34)
- nodejs (1)
- MDC (1)
- Netty (7)
- solr (15)
- JSON (8)
- rabbitmq (32)
- disconf (7)
- PowerDesigne (0)
- Spring Boot (31)
- 日志系统 (6)
- erlang (2)
- Swagger (3)
- 测试工具 (3)
- docker (17)
- ELK (2)
- TCC分布式事务 (2)
- marathon (12)
- phpMyAdmin (12)
- git (3)
- Atomix (1)
- Calico (1)
- Lua (7)
- 泛解析 (2)
- OpenResty (2)
- spring mvc (19)
- 前端 (3)
- spring cloud (15)
- Netflix (1)
- zipkin (3)
- JVM 内存模型 (5)
- websocket (1)
- Eureka (4)
- apollo (2)
- idea (2)
- go (1)
- 业务 (0)
- idea开发工具 (1)
最新评论
-
sichunli_030:
对于频繁调用的话,建议采用连接池机制
配置TOMCAT及httpClient的keepalive以高效利用长连接 -
11想念99不见:
你好,我看不太懂。假如我的项目中会频繁调用rest接口,是要用 ...
配置TOMCAT及httpClient的keepalive以高效利用长连接
Curator Framework提供了简化使用zookeeper更高级的API接口。它包涵很多优秀的特性,主要包括以下三点:
自动连接管理:自动处理zookeeper的连接和重试存在一些潜在的问题;可以watch NodeDataChanged event和获取updateServerList;Watches可以自动被Cruator recipes删除;
更干净的API:简化raw zookeeper方法,事件等;提供现代流式API接口
Recipe实现:leader选举,分布式锁,path缓存,和watcher,分布式队列等。
Zookeeper在实际生产环境中应用比较广泛,比如SOA的服务监控系统,Hadoop,spark的分布式调度系统。Curator框架提供的优秀特性可以使得我们更加便捷的开发zookeeper应用。本文主要讲解了curator的基本使用方法。
CuratorFramework实例创建
Curator框架通过CuratorFrameworkFactory以工厂模式和builder模式创建CuratorFramework实例。 CuratorFramework实例都是线程安全的,我们应该当在ZooKeeper Cluster中共享同一个CuratorFramework实例。工厂方法newClient() 提供了简便创建client实例方式,使用start和close方法启动和关闭客户端。使用Curator框架创建客户端代码如下,
操作数据节点
zookeeper中,节点的组织类似于linux的文件系统,使用path来标识每个节点(znode),znode作为保存数据的容器,数据量限制在1M以内,这部分介绍如何使用curator框架创建,获取,更新,以及删除节点。
创建节点
Curator创建znode节点代码如下所示:
zookeeper中节点有两种类型,临时节点和永久节点,CreateMode类用于指定创建节点的类型,用户可以选择以下几个参数:
CreateMode.PERSISTENT: 创建节点后,不删除就永久存在
CreateMode.PERSISTENT_SEQUENTIAL:节点path末尾会追加一个10位数的单调递增的序列
CreateMode.EPHEMERAL:创建后,回话结束节点会自动删除
CreateMode.EPHEMERAL_SEQUENTIAL:节点path末尾会追加一个10位数的单调递增的序列
forPath函数指定创建节点的path和保存的数据,path的指定遵循linux文件path格式,创建node时指定的path,父path节点需要存在,否则创建节点失败,比如创建"/parent/child"节点,若不存在节点"parent",那么创建节点会失败。在znode中保存的数据需要进行序列化,用户可以选择使用JSON,XML,java内置的序列化机制,或者Hession以及Google的protocal Buffer等,为方便讲解,节点存储字符串数据。
获取节点数据
CuratorFramework提供getData函数,通过指定znode的path,就可以完成数据的获取。
更新节点
同样CuratorFramework提供setData函数,通过指定znode的path,可以完成数据的更新。
删除节点
和获取,更新节点类似,CuratorFramework提供delete函数,指定znode的path删除某一个节点。
Conclusion
本文和大家分享了CuratorFramework的基本使用方法,希望能对大家有所帮助。更多的使用方式可以参考官方给出的API文档。
参考:http://www.cnblogs.com/jun-ma/p/4918137.html
http://090508tanjie.iteye.com/blog/2288256
http://blog.csdn.net/sqh201030412/article/details/51446434
自动连接管理:自动处理zookeeper的连接和重试存在一些潜在的问题;可以watch NodeDataChanged event和获取updateServerList;Watches可以自动被Cruator recipes删除;
更干净的API:简化raw zookeeper方法,事件等;提供现代流式API接口
Recipe实现:leader选举,分布式锁,path缓存,和watcher,分布式队列等。
Zookeeper在实际生产环境中应用比较广泛,比如SOA的服务监控系统,Hadoop,spark的分布式调度系统。Curator框架提供的优秀特性可以使得我们更加便捷的开发zookeeper应用。本文主要讲解了curator的基本使用方法。
CuratorFramework实例创建
Curator框架通过CuratorFrameworkFactory以工厂模式和builder模式创建CuratorFramework实例。 CuratorFramework实例都是线程安全的,我们应该当在ZooKeeper Cluster中共享同一个CuratorFramework实例。工厂方法newClient() 提供了简便创建client实例方式,使用start和close方法启动和关闭客户端。使用Curator框架创建客户端代码如下,
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3); CuratorFramework newClient=CuratorFrameworkFactory.newClient("localhost:2181", retryPolicy);
操作数据节点
zookeeper中,节点的组织类似于linux的文件系统,使用path来标识每个节点(znode),znode作为保存数据的容器,数据量限制在1M以内,这部分介绍如何使用curator框架创建,获取,更新,以及删除节点。
创建节点
Curator创建znode节点代码如下所示:
public void createNode(CuratorFramework newClient, String path, CreateMode createMode, String data) { try { newClient.create().withMode(createMode).forPath(path, data.getBytes()); } catch (Exception e) { System.out.println("创建节点失败, elog=" + e.getMessage()); } }
zookeeper中节点有两种类型,临时节点和永久节点,CreateMode类用于指定创建节点的类型,用户可以选择以下几个参数:
CreateMode.PERSISTENT: 创建节点后,不删除就永久存在
CreateMode.PERSISTENT_SEQUENTIAL:节点path末尾会追加一个10位数的单调递增的序列
CreateMode.EPHEMERAL:创建后,回话结束节点会自动删除
CreateMode.EPHEMERAL_SEQUENTIAL:节点path末尾会追加一个10位数的单调递增的序列
forPath函数指定创建节点的path和保存的数据,path的指定遵循linux文件path格式,创建node时指定的path,父path节点需要存在,否则创建节点失败,比如创建"/parent/child"节点,若不存在节点"parent",那么创建节点会失败。在znode中保存的数据需要进行序列化,用户可以选择使用JSON,XML,java内置的序列化机制,或者Hession以及Google的protocal Buffer等,为方便讲解,节点存储字符串数据。
获取节点数据
CuratorFramework提供getData函数,通过指定znode的path,就可以完成数据的获取。
public String getData(CuratorFramework newClient, String path){ try { return new String(newClient.getData().forPath(path)); } catch (Exception e) { System.out.println("获取数据失败, elog=" + e.getMessage()); } return null; }
更新节点
同样CuratorFramework提供setData函数,通过指定znode的path,可以完成数据的更新。
public void updateNodeDate(CuratorFramework newClient, String path, String data) { try { newClient.setData().forPath(path, data.getBytes()); } catch (Exception e) { System.out.println("更新节点数据失败, elog=" + e.getMessage()); } }
删除节点
和获取,更新节点类似,CuratorFramework提供delete函数,指定znode的path删除某一个节点。
public void deleteNode(CuratorFramework newClient, String path) { try { newClient.delete().forPath(path); } catch (Exception e) { System.out.println("删除节点失败, elog=" + e.getMessage()); } }
Conclusion
本文和大家分享了CuratorFramework的基本使用方法,希望能对大家有所帮助。更多的使用方式可以参考官方给出的API文档。
参考:http://www.cnblogs.com/jun-ma/p/4918137.html
http://090508tanjie.iteye.com/blog/2288256
http://blog.csdn.net/sqh201030412/article/details/51446434
发表评论
-
Zookeeper的四字命令
2017-05-18 20:39 543http://www.cnblogs.com/wuxl360/ ... -
Zookeeper开源客户端框架Curator简介
2016-10-25 08:43 493ZooKeeper原生的API支持通过注册Watcher来进行 ... -
ZooKeeper学习总结
2016-09-30 15:18 401参考:http://www.tuicool.com/artic ... -
推荐一个zookeeper信息查看工具
2016-08-31 16:01 1686zookeeper信息查看工具 下载地址:https://i ... -
Paxos算法细节详解(一)--通过现实世界描述算法
2016-08-24 16:29 533http://www.cnblogs.com/endsock/ ... -
ZooKeeper学习总结 第一篇:ZooKeeper快速入门
2016-08-22 16:23 418http://www.cnblogs.com/leocook/ ... -
zookeeper原理(转)
2016-08-22 14:02 376ZooKeeper是一个分布式的 ... -
zookeeper客户端curator使用手记
2016-08-09 15:10 454http://www.tuicool.com/articles ... -
Zookeeper的一致性协议:Zab
2016-08-01 09:21 646Zookeeper使用了一种称为Zab(Zookeeper A ... -
ZooKeeper源码阅读(一):ZAB协议
2016-07-29 14:29 650ZooKeeper内部有一个in-memo ... -
Zookeeper基本原理与应用场景
2016-07-28 18:51 301http://blog.csdn.net/yunpiao123 ... -
一步一步理解Paxos算法
2016-07-21 14:34 598背景 Paxos算法是Lamport ... -
Paxos算法简述
2016-07-21 14:10 364Paxos算法是分布式中一个著名的一致性算法。它的假设前提是, ... -
Zookeeper-Zookeeper leader选举
2016-07-20 09:05 522在上一篇文章中我们大 ... -
部署与管理ZooKeeper(转)
2016-07-19 09:17 365http://www.cnblogs.com/ggjuchen ... -
ZooKeeper原理及使用
2016-08-02 08:27 400ZooKeeper是Hadoop Ecosystem中非常重要 ... -
ZooKeeper Java API
2016-05-22 10:05 876ZooKeeper提供了Java和C的binding. 本文关 ...
相关推荐
本篇文章将深入探讨Curator Framework的主要功能、使用方法以及示例代码。 1. **Zookeeper基础** Zookeeper是一个分布式协调服务,常用于管理配置信息、命名服务、集群状态同步、分布式锁等场景。它采用的是主从...
2. **基本概念**:Curator 包含了多个框架,如 CuratorFramework、ZkClient、 recipes 等,它们提供了不同的功能。CuratorFramework 是 Curator 的核心,它封装了 ZooKeeper 连接的创建、会话管理以及操作执行等。 ...
`Apache Curator入门实战.docx`文档很可能是对如何使用Curator进行Zookeeper操作的详细教程,包括安装、配置、基本用法以及食谱的实践示例。这份文档对于初学者来说是一份宝贵的资源,可以帮助他们快速理解和掌握...
例如,`org.apache.curator.framework.CuratorFramework`是Curator的主要入口点,通过它我们可以创建会话、获取数据、设置节点等。 2. `curator-recipes-2.8.0.jar`:这个库包含了Curator的各种高级功能或“食谱”,...
CuratorFramework client = CuratorFrameworkFactory.builder() .connectString("localhost:2181") // ZK服务器地址 .connectionTimeoutMs(5000) // 连接超时时间 .sessionTimeoutMs(5000) // 会话超时时间 ....
SpringBoot与Zookeeper...通过以上步骤,你已经掌握了如何在SpringBoot中集成Zookeeper Curator的基本方法,后续可以根据需要进一步研究和扩展相关功能。记得在使用过程中注意处理异常和资源释放,以确保系统的健壮性。
在这个`ZookeeperService`类中,我们定义了创建、删除、获取和更新节点的方法,它们分别调用了`curatorFramework`的相应方法。 在实际应用中,我们还需要处理异常情况,例如网络中断、权限问题等。为了确保服务的高...
在创建`InterProcessMutex`实例时,需要提供一个`CuratorFramework`客户端和一个Zookeeper中的路径(锁的标识),通常这个路径会包含锁的所有者信息。 下面来看看示例代码: ```java import java.util.concurrent....
- **CuratorFramework**:Curator 的主要入口点,提供了创建、读取、更新、删除 ZNode 的基础操作。 - **CuratorTransaction**:支持事务操作,允许在一个会话中执行多个 ZooKeeper 操作,并确保它们要么全部成功...
在创建CuratorFramework实例时,我们使用了RetryNTimes策略,这意味着在遇到连接问题时,客户端会尝试重新连接ZooKeeper服务,最多尝试10次,每次间隔500毫秒。这种重试机制增加了系统的鲁棒性,使得临时的网络故障...
- 引入Curator的依赖,初始化 CuratorFramework 实例,并连接Zookeeper。 - 使用Curator提供的Factory类创建分布式锁、队列等高级服务。 - 利用RetryPolicy处理网络不稳定情况,确保操作的可靠性。 - 注意理解并...
为了仅使用基本的CRUD功能,可以仅引入`curator-client`和`curator-framework`包。 总结来说,Apache Curator作为Zookeeper的Java客户端,通过提供高级API和各种预定义的解决方案,显著降低了开发者的使用难度,使...
SpringCloud 集成 ZooKeeper 的方法示例 SpringCloud 作为一个微服务架构下的框架,提供了许多实用的功能和...此外,我们还了解了 ZooKeeper 的基本概念和 Curator 的使用方法。希望本文能够对大家的学习有所帮助。
开发者可以通过Logger接口创建特定命名的日志器,然后调用其方法(如`debug()`, `info()`, `warn()`, `error()`等)来记录不同级别的信息。 3. **Appender**:Appender负责将日志事件发送到特定的目标,如控制台、...
CuratorFramework client = CuratorFrameworkFactory.newClient("localhost:2181"); client.start(); // 创建分布式锁 InterProcessMutex lock = new InterProcessMutex(client, "/distributed-lock"); try { ...
CuratorFramework client = CuratorFrameworkFactory.newClient("localhost:2181", new ExponentialBackoffRetry(1000, 3)); client.start(); ``` 3. 使用Curator的InterProcessMutex实现锁: ```java ...
在实际应用中,可以结合Java的`Curator Framework`等库,简化与Zookeeper的交互,提高开发效率。Curator提供了一套完整的工具集,包括分布式锁、队列、事件监听等,可以方便地集成到Java项目中。 总结来说,...
CuratorFramework client = CuratorFrameworkFactory.newClient("localhost:2181", new ExponentialBackoffRetry(1000, 3)); client.start(); client.create().creatingParentsIfNeeded().forPath(ZK_PATH, data)...
10. **curator-framework-2.6.0.jar**:Apache Curator是ZooKeeper的一个客户端框架,简化了与ZooKeeper的交互。 这些jar文件的组合提供了连接和操作Hive所需的所有组件,尤其是在使用DataGrip这样的第三方工具时。...
总结,Java技术面试中关于分布式开发的问题主要集中在分布式系统的原理、关键技术以及具体实现框架上,特别是像Dubbo这样的流行框架,其开发流程和使用方法是考察的重点。同时,深入理解RPC协议及其在网络通信中的...