zookeeper初试
实验环境:
- os-platform: windows7 x64
- jdk: 1.7
参考文档:
- http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/
- http://zookeeper.apache.org/doc/r3.4.6/
- http://blog.csdn.net/rengq126/article/details/7393227
1.下载zookeeper,这里选用stable版本的3.4.6
- 下载地址:http://apache.fayea.com/zookeeper/zookeeper-3.4.6/
2.配置安装zookeeper
- 下载完成后,将zookeeper-3.4.6.tar.gz解压到指定目录(如,D:/zookeeper-3.4.6)。
- 重命名conf/zoo_sample.cfg为zoo.cfg,其中关键配置请至少保留以下项:
- tickTime=2000
- dataDir=D:/zookeeper-3.4.6/data
- clientPort=2181
- 配置项分别为:
- 心跳频率,每2000ms发送一次心跳包
- 数据路径,可用于数据落地,确保zookeeper宕机后数据不丢失(一般用来保障那些永久性节点)
- 服务端口,即客户端的连接端口,zookeeper用来监听客户端的请求
3.启动和关闭,以及客户端的连接
- 启动方式:
- bin/zkServer.cmd 或 bin/zkServer.sh start
- 关闭方式:
- 遗憾的是windows只能手动Ctrl+C关掉server,而linux则可以通过bin/zkServer.sh stop完成关闭操作
- 客户端连接:
- bin/zkCli.cmd 或者 bin/zkCli.cmd -server 127.0.0.1:2181
4.zookeeper api using demo(可用来了解watcher和zk的基础操作)
- package org.kongdl.zookeeper.demo;
- import java.io.*;
- import org.apache.zookeeper.CreateMode;
- import org.apache.zookeeper.KeeperException;
- import org.apache.zookeeper.Watcher;
- import org.apache.zookeeper.ZooDefs.Ids;
- import org.apache.zookeeper.ZooKeeper;
- public class ZookeeperDemo {
- private static final int SESSION_TIMEOUT = 3000;
- public static void main(String[] args) {
- ZookeeperDemo demo = new ZookeeperDemo();
- try {
- demo.zkOperations();
- } catch(Exception e) {
- e.printStackTrace();
- }
- }
- private void zkOperations() throws IOException, InterruptedException, KeeperException{
- ZooKeeper zk = createZookeeperInstance();
- System.out.println("\n1. 创建 ZooKeeper 节点 (znode : zoo2, "
- + "数据: myData2 ,"
- + "权限: OPEN_ACL_UNSAFE ,"
- + "节点类型: Persistent");
- zk.create("/zoo2", "mydata".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
- System.out.println("\n2. 查看是否创建成功: ");
- System.out.println(new String(zk.getData("/zoo2", true, null)));
- System.out.println("\n3. 修改节点数据 ");
- zk.setData("/zoo2", "lichmama".getBytes(), -1);
- System.out.println("\n4. 查看是否修改成功: ");
- System.out.println(new String(zk.getData("/zoo2", true, null)));
- System.out.println("\n5. 删除节点 ");
- zk.delete("/zoo2", -1);
- System.out.println("\n6. 查看节点是否被删除: ");
- System.out.println(" 节点状态: [" + zk.exists("/zoo2", true) + "]");
- System.out.println("\n7. 关闭client连接");
- zk.close();
- }
- private ZooKeeper createZookeeperInstance() throws IOException {
- return new ZooKeeper("localhost:2181", ZookeeperDemo.SESSION_TIMEOUT, new Watcher() {
- public void process(org.apache.zookeeper.WatchedEvent event) {
- System.out.println(event.toString());
- }
- });
- }
- }
zookeeper初试的更多相关文章
- zookeeper(2)-curator
一.Curator介绍 zookeeper的提交人也说过,curator对于zookeeper而言就像是guava对于java差不多,更加优雅高效. 而且之前的zookeeper原生API,往往因为2 ...
- 多节点,多线程下发订单,使用zookeeper分布式锁机制保证订单正确接入oms系统
假设订单下发, 采用单机每分钟从订单OrderEntry接口表中抓100单, 接入订单oms系统中. 由于双十一期间, 订单量激增, 导致订单单机每分钟100单造成, 订单积压. 所以采用多节点多线程 ...
- Zookeeper客户端Curator---Getting Started
先说个小插曲,前几天有个网站转载我的文章没有署名作者,我有点不开心就给他们留言了,然后今天一看他们把文章删了.其实我的意思并不是你允许转载,我想表达的是我的付出需要被尊重.也不知道是谁的错~ ==== ...
- Zookeeper 系列(五)Curator API
Zookeeper 系列(五)Curator API 一.Curator 使用 Curator 框架中使用链式编程风格,易读性更强,使用工程方法创建连接对象使用. (1) CuratorFramewo ...
- curator框架的使用以及实现分布式锁等应用与zkclient操作zookeeper,简化复杂原生API
打开zookeeper集群 先体会一下原生API有多麻烦(可略过): //地址 static final String ADDR = "192.168.171.128:2181,192.16 ...
- 基于Apache Curator框架的ZooKeeper使用详解
一 简介 Apache Curator是一个比较完善的ZooKeeper客户端框架,通过封装的一套高级API 简化了ZooKeeper的操作.通过查看官方文档,可以发现Curator主要解决了三类问题 ...
- zookeeper安装步骤
zookeeper安装步骤 百度搜索:zookeeper 进入后点击下载: 进入到下载的页面 英文: 中文: 进入版本列表: 进入后复制该链接, 在linux执行wget下载: wget https: ...
- 初试kafka消息队列中间件一 (只适合初学者哈)
初试kafka消息队列中间件一 今天闲来有点无聊,然后就看了一下关于消息中间件的资料, 简单一点的理解哈,网上都说的太高大上档次了,字面意思都想半天: 也就是用作消息通知,比如你想告诉某某你喜欢他,或 ...
- 初试kafka消息队列中间件二(采用java代码收发消息)
初试kafka消息队列中间件二(采用java代码收发消息) 上一篇 初试kafka消息队列中间件一 今天的案例主要是将采用命令行收发信息改成使用java代码实现,根据上一篇的接着写: 先启动Zooke ...
随机推荐
- Ajax02 json
1 什么是json JavaScript Object Notation(JavaScript 对象表示法) 是一种轻量级的数据交换格式. 注: 数据交换:将数据先转换成一种与平台无关的数据 格式(比 ...
- JavaScript中的该如何[更好的]做动效
在用js写动画的时候,无非使用 setTimeout/setInterval 或者 requestAnimationFrame 来处理动画(在jquery的代码里也是这么干的),本文主要为了记录下两者 ...
- 以太坊的crypto模块--以太坊源码学习
以太坊的crypto模块 该模块分为两个部分一个是实现sha3,一个是实现secp256k1(这也是比特币中使用的签名算法). 需要说明的是secp256k1有两种实现方式,一种是依赖libsecp2 ...
- 关于ASP.NET WebForm与ASP.NET MVC的比较
WebForm的理解 1. WebForm概念 ASP.NETWebform提供了一个类似于Winform的事件响应GUI模型(event-drivenGUI),隐藏了HTTP.HTML.Java ...
- Java经典编程题50道之五十
有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件 "stud"中. public ...
- .Net开发的两个小技巧
一.@符号的妙用 1.可以作为保留关键字的标识符 C#规范当中,不允许使用保留关键字(class.bool等)当作普通的标识符来命名,这时候@符号作用就体现 出来了,可以通过@符号前缀把这些保留关键字 ...
- canvas 画钟表
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- [BZOJ4518]征途
4518: [Sdoi2016]征途 Time Limit: 10 Sec Memory Limit: 256 MB Description Pine开始了从S地到T地的征途. 从S地到T地的路可以 ...
- python基础之字典dict和集合set
作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7043642.html python基础之字典dict和集合set 字典dic ...
- ui-router 父子state共享数据
如果ui-view是嵌套的,那么在子view中,可以直接引用 $scope.$parent 即可.