- 浏览: 531980 次
- 性别:
- 来自: 上海
-
文章分类
最新评论
-
zfx1982:
楼主能把doubango和webrtc2sip的源码发我一份么 ...
CentOS下编译webrtc2sip实战 -
zfx1982:
请问在编译doubango的时候configure总是说少sr ...
CentOS下编译webrtc2sip实战 -
cgs1999:
845896876 写道老师你好,我发现// 自定义属性 ...
使用Java操作LDAP案例 -
845896876:
老师你好,我发现// 自定义属性 a ...
使用Java操作LDAP案例 -
myitela:
NAT即地址转换,也可以是内网地址与外网地址的转换。如nat1 ...
NAT与NAT穿越学习总结
简单写了一个自己用的zookeeper工具,实现了对zookeeper基本的创建节点、修改节点、删除节点和查询节点的基本操作,可在其基础上扩展增加需要的功能,现拿出来和大家分享。
创建节点,可以把相关的数据写入节点中。
不创建节点,,怎么查询、修改和删除?
package cn.basttg.demo.zk; import java.util.List; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; import org.apache.zookeeper.ZooDefs.Ids; import org.apache.zookeeper.ZooKeeper; import org.apache.zookeeper.data.ACL; public class ZkTool { // 工具信息 private final static String TOOL_NAME = "ZooKeeper工具 "; private final static String TOOL_VERSION = "V0.1"; private final static String TOOL_AUTHOR = "Jason Chen"; private final static String TOOL_COPYRIGHT = "©2012 Jason 版权所有"; // 相关命令编号 private final static int ACTION_QUERY = 1; private final static int ACTION_CREATE = 2; private final static int ACTION_MODIFY = 3; private final static int ACTION_DELETE = 4; private final static int ACTION_CONFIG = 8; private final static int ACTION_ABOUT = 9; private final static int ACTION_QUIT = 0; // 默认配置信息 private final static String DEFAULT_HOST = "172.16.160.196"; private final static int DEFAULT_PORT = 2181; private final static int DEFAULT_TIMEOUT = 30000; // 当前配置信息 private static String zkHost = DEFAULT_HOST; private static int zkPort = DEFAULT_PORT; private static int zkTimeout = DEFAULT_TIMEOUT; private static ZooKeeper zooKeeper = null; public static void main(String[] args) { try { openZk(); StartMenu(); while (true) { int operate = Integer.parseInt(getCommand()); switch (operate) { case ACTION_QUERY: queryData(); break; case ACTION_CREATE: createData(); break; case ACTION_MODIFY: modifyData(); break; case ACTION_DELETE: deleteData(); break; case ACTION_CONFIG: configConnection(); break; case ACTION_ABOUT: about(); break; case ACTION_QUIT: exit(); break; default: System.out.println("没有该命令 " + operate); break; } } } catch (Exception e) { System.out.println("输入错误,错误信息如下: "); e.printStackTrace(); } } // 开始菜单 public static void StartMenu() { System.out.println("**********" + TOOL_NAME + " " + TOOL_VERSION + "**********"); System.out.println(ACTION_QUERY + "、查询目录信息"); System.out.println(ACTION_CREATE + "、创建目录节点"); System.out.println(ACTION_MODIFY + "、修改目录节点"); System.out.println(ACTION_DELETE + "、删除目录节点"); System.out.println(ACTION_CONFIG + "、设置连接信息"); System.out.println(ACTION_ABOUT + "、关于程序"); System.out.println(ACTION_QUIT + "、退出"); System.out.println("********************************"); } // 获取输入信息 public static String getCommand() { return getCommand("请输入命令", 1); } public static String getCommand(String message) { return getCommand(message, null, 100); } public static String getCommand(String message, int limit) { return getCommand(message, null, limit); } public static String getCommand(String message, String defaultValue) { return getCommand(message, defaultValue, 100); } public static String getCommand(String message, String defaultValue, int limit) { String strCommand = ""; try { do { System.out.println(); if (defaultValue == null) { System.out.print(message + ": "); } else { System.out.print(message + " [" + defaultValue + "]: "); } byte[] command = new byte[100]; System.in.read(command); strCommand = new String(command); strCommand = strCommand.replaceAll("\r\n", "").trim(); // 若存在默认值且直接输入回车,则直接使用默认值作为返回值 if (defaultValue != null && "".equals(strCommand)) { strCommand = defaultValue; } } while (strCommand.length() > limit); } catch (Exception e) { System.out.println("输入错误!!!"); } return strCommand; } public static void queryData() { System.out.println("*****查询目录节点*****"); String zpath = getCommand("目录节点路径", "/App"); try { openZk(); // 取出子目录节点列表 System.out.println(zooKeeper.getChildren(zpath, true)); } catch (Exception e) { e.printStackTrace(); } } public static void createData() { System.out.println("*****创建目录节点*****"); String zpath = getCommand("目录节点路径", "/App"); String zdata = getCommand("目录节点数据", zpath); String zacl = getCommand("目录节点权限", "0"); String ztype = getCommand("目录节点类型", "E"); try { openZk(); zooKeeper.create(zpath, zdata.getBytes(), getAcl(zacl), getCreateMode(ztype)); } catch (Exception e) { e.printStackTrace(); } } public static void modifyData() { System.out.println("*****修改目录节点*****"); String zpath = getCommand("目录节点路径", "/App"); String zdata = getCommand("目录节点数据", zpath); try { openZk(); zooKeeper.setData(zpath, zdata.getBytes(), -1); String parent = StringUtil.strLeftBack(zpath, "/"); System.out.println("目录节点状态:[" + zooKeeper.exists(parent, false) + "]"); } catch (Exception e) { e.printStackTrace(); } } public static void deleteData() { System.out.println("*****删除目录节点*****"); String zpath = getCommand("目录节点路径", "/App"); String zversion = getCommand("目录节点路径", "-1"); try { openZk(); zooKeeper.delete(zpath, Integer.valueOf(zversion)); } catch (Exception e) { e.printStackTrace(); } } /** 设置连接信息 */ public static void configConnection() { System.out.println("*****设置连接信息*****"); do { zkHost = getCommand("请输入服务器地址", zkHost); zkPort = Integer.valueOf(getCommand("请输入端口", "" + zkPort)); zkTimeout = Integer.valueOf(getCommand("请输入连接超时", "" + zkTimeout)); try { // 创建一个与服务器的连接 zooKeeper = new ZooKeeper(zkHost + ":" + zkPort, zkTimeout, new Watcher() { // 监控所有被触发的事件 public void process(WatchedEvent event) { System.out.println("已经触发了[" + event.getType() + "]事件!"); } }); } catch (Exception e) { zooKeeper = null; e.printStackTrace(); } } while (zooKeeper == null); System.out.println(">>>测试连接成功!"); } /** 关于 */ public static void about() { System.out.println("************关于" + TOOL_NAME + "****************"); System.out.println("| 版本:" + TOOL_VERSION + " |"); System.out.println("| 作者:" + TOOL_AUTHOR + " |"); System.out.println("| |"); System.out.println("|版本更新: |"); System.out.println("|V0.1 |"); System.out.println("| 1.查询目录信息功能 |"); System.out.println("| 2.创建目录信息功能 |"); System.out.println("| 3.修改目录信息功能 |"); System.out.println("| 4.删除目录信息功能 |"); System.out.println("| 5.设置连接信息 |"); System.out.println("| |"); System.out.println("| " + TOOL_COPYRIGHT + " |"); System.out.println("*****************************************"); } /** 退出 */ public static void exit() { System.out.println("谢谢使用,再见!"); try { closeZk(); Thread.sleep(1000); } catch (Exception e) { } System.exit(0); } private static ZooKeeper openZk() { if(zooKeeper==null) { // 创建一个与服务器的连接 try { zooKeeper = new ZooKeeper(zkHost + ":" + zkPort, zkTimeout, new Watcher() { // 监控所有被触发的事件 public void process(WatchedEvent event) { System.out.println("已经触发了[" + event.getType() + "]事件!"); } }); } catch (Exception e) { e.printStackTrace(); } } return zooKeeper; } private static void closeZk() { if(zooKeeper!=null) { // 创建一个与服务器的连接 try { zooKeeper.close(); } catch (Exception e) { e.printStackTrace(); } } } private static List<ACL> getAcl(String zacl) { return Ids.OPEN_ACL_UNSAFE; } private static CreateMode getCreateMode(String ztype) { if("P".equalsIgnoreCase(ztype)) { return CreateMode.PERSISTENT; } else if("PS".equalsIgnoreCase(ztype)) { return CreateMode.PERSISTENT_SEQUENTIAL; } else if("E".equalsIgnoreCase(ztype)) { return CreateMode.EPHEMERAL; } else{ return CreateMode.EPHEMERAL_SEQUENTIAL; } } }
评论
2 楼
cgs1999
2015-03-15
string2020 写道
创建节点 可以干什么,有什么用?
创建节点,可以把相关的数据写入节点中。
不创建节点,,怎么查询、修改和删除?
1 楼
string2020
2015-03-10
创建节点 可以干什么,有什么用?
发表评论
-
MySQL中Update的执行效率测试及验证
2016-12-06 16:22 68271、引言 某日,在讨论解决生产环境的问题时,一同事问说增加条件 ... -
MySQL定时器实战
2016-11-29 17:38 21321、引言 项目商用环境上,用户反馈有个统计存在问题,排查后 ... -
用Java实现N*N的标准数独及对角线数独解题
2016-10-11 11:25 35151、引言 前一段时间迷 ... -
在Spring项目中实现动态创建数据库
2017-06-21 16:31 52101、问题描述 在使用Sprin ... -
改进现有架构支持HTTPS服务
2016-06-23 16:57 01、引言 nginx使用ssl模块配置HTTPS支持 ht ... -
CentOS下从源码安装Asterisk实战
2016-05-20 20:23 36170、引言 在研究WebRTC服 ... -
EasyUI学习(1)- 入门
2015-12-14 17:20 00、引言 前段时间,在项目开发过程中使用了EasyUI的部分组 ... -
JS实现的3级联动例子
2015-06-17 23:10 1366朋友项目需要实现3级联动,需要JS实现的,网上找的例子有些复杂 ... -
JSBuilder2介绍及应用范例
2014-08-27 17:58 01、引言 Web项目开发过程中,使用到多个第三方的插件,同时, ... -
实现CSS样式文件中图标的可视化
2014-06-26 14:39 4980关键词: CSS,EasyUI ... -
jquery选择器学习范例
2014-04-22 20:54 0http://www.w3school.com.cn/jque ... -
通过webrtc2sip实现web客户端sipML5与SIP客户端Jtisi对通
2014-01-13 19:53 00、引言 在研究WebRTC服 ... -
NAT与NAT穿越学习总结
2013-12-23 19:19 204671、引言网络地址转换 ... -
完全清除Desktop_1.ini和Desktop_2.ini
2013-12-06 17:21 71651、引言 Windows7工作机进入系统就会弹出“deskto ... -
CentOS下搭建Asterisk+SIPml5实战
2013-11-14 14:53 00、引言 在研究SIPml5信令处理时,需要搭建环境SIPml ... -
CentOS下编译webrtc2sip实战
2013-11-13 10:39 152250、引言 在研究WebRTC服 ... -
Java实现RTP流转发服务器
2013-10-24 17:36 00、引言 在做多方视频会议系统时,需要有代理服务器来转发视频平 ... -
利用mysql日志排查数据异常问题
2013-03-21 16:52 01、案例描述 2、MySQL日志 3、解决过程 (1) ... -
Java中通过MySQL的行锁解决并发写的问题
2012-12-22 12:45 01、案例描述 开发会议管理项目中,涉及会议管理系统和视频会议平 ... -
【算法】基于时间段的有限资源算法
2013-03-07 12:20 24021、案例描述 最近做会议管理系统,预约会议需要一个算法来判断在 ...
相关推荐
ZooKeeper客户端工具主要提供了与ZooKeeper服务器交互的能力,包括数据的查看、更新、创建和删除等操作。这些工具对于开发者调试、监控和管理ZooKeeper集群至关重要。 1. **ZooInspector**:这是一个图形化的...
了解并熟练使用Zookeeper客户端是大数据开发中的必备技能,它为分布式环境提供了可靠的协调机制,确保了系统的稳定性和一致性。无论是Java API还是命令行工具,都能帮助我们有效地与Zookeeper交互,实现各种分布式...
4. Curator:Facebook开源的Zookeeper客户端库,其中包含了一个简单的图形化界面工具。 四、安装与使用 1. 安装:根据所选择的图形化工具,通常需要将其部署在服务器上,并确保与Zookeeper集群通信正常。 2. 配置...
在使用ZooKeeper客户端进行开发时,为了确保程序能够正常运行,我们需要依赖一系列的库文件,其中包括JMS(Java Message Service)和JMX(Java Management Extensions)的相关jar包。这些jar包对于理解和操作...
总的来说,ZooInspector作为Zookeeper的客户端工具,极大地简化了Zookeeper的管理和调试过程,提升了开发和运维效率。通过深入理解和熟练使用ZooInspector,我们可以更好地驾驭Zookeeper,为分布式系统构建坚实的...
某大神基于springcloud开发的zookeeper浏览器,使用java即可启动。 下载jar包直接运行 1. java -jar zookeeper-explorer-1.0.2-RELEASE-exec.jar --server.port=8099 --server.context-path=/zookeeper-explorer --...
3. **会话(Session)**: 用户与Zookeeper服务器之间的连接称为会话,会话期间,Zookeeper服务器会保持与客户端的连接状态,如果会话超时或网络中断,会话结束。 **Zookeeper管理工具的功能** 1. **集群监控**: ...
在运维和开发过程中,为了更方便地管理和监控Zookeeper,出现了许多可视化工具。这些工具通过图形用户界面(GUI)提供对Zookeeper状态的直观展示,帮助用户查看节点信息、操作数据、监控集群状态以及进行故障排查。 ...
总结来说,Zookeeper客户端Curator Framework通过提供简洁的API和高级功能,极大地简化了与Zookeeper的交互,是开发分布式应用程序的有力工具。通过掌握其基本用法和核心组件,可以高效地实现诸如分布式锁、状态同步...
总结来说,Zookeeper和Dubbo的结合使用为企业构建高可用、可扩展的分布式服务架构提供了强大的工具。在客户端,正确地引入和配置这两个框架的jar包,可以实现服务的自动发现、调用和管理,极大地简化了分布式环境下...
**Zookeeper:分布式协调服务详解** Zookeeper是一个高性能的分布式协调服务,由...而提供的客户端工具ZkClient,则使得与Zookeeper的交互变得更加便捷。了解和掌握Zookeeper,对于构建高可用的分布式系统至关重要。
此外,对于学习ZooKeeper原理和进行相关开发的人来说,这个插件也是一个很好的辅助工具。 在MyEclipse环境中,虽然插件安装步骤类似,但由于MyEclipse是商业版本,可能需要额外的步骤来导入非官方插件。具体操作...
在Zookeeper生态系统中,有多种客户端工具供用户选择,包括命令行接口(CLI)和图形用户界面(GUI)。Zookeeper CLI是基础的命令行工具,适合进行基本的操作,如创建、删除、查看节点等。然而,对于复杂的操作和调试...
ZkClient是早期较为流行的Zookeeper客户端,它是一个轻量级、易于使用的Java库。ZkClient的特点包括: 1. **简洁API**:ZkClient提供了简单易懂的API,如connect、create、exists、getData等,使得开发者能快速上手...
zookeeper客户端,可以在windows, linux下运行,使用java开发,启动后,填写zookeeper配置信息,可以连接zookeeper服务器,查看服务器上的数据信息
它们共同构成了ZooKeeper客户端的运行环境,使得开发者能够轻松地连接到ZooKeeper集群,进行数据的读写操作,并利用ZooKeeper的特性实现分布式协调。在实际项目中,还需要结合具体的业务需求,理解和掌握ZooKeeper的...
Zookeeper查看工具,如标题所示,是用于管理和监控Apache ZooKeeper的一种运维软件。...因此,掌握Zookeeper运维工具的使用,对于从事分布式系统开发和运维的人员来说,是提升工作效率和系统可靠性的重要技能。