Zookeeper -1

转自

什么是Zookeeper

Zookeeper是一个高性能的分布式应用协调服务的框架。Zookeeper=Zoo+keeper,中文直译是动物园的看守者。

zk能解决什么问题

分布式系统的问题,比如分布式锁,分布式协调,分布式消息队列等。

安装Zookeeper

在官网下载最新的Zookeeper稳定版,http://zookeeper.apache.org/releases.html#download,将下载的文件存放在本地目录及安装完毕,本文将Zookeeper安装在/Developer/java/project目录。本文下载的是zookeeper-3.4.9版本。

单机模式启动Zookeeper

下载完之后,将conf目录下的zoo_sample.cfg文件重命名成zoo.cfg文件。这个文件存放着Zookeeper的所有配置信息。

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181
maxClientCnxns=60
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
  • tickTime:客户端和服务器端维持心跳的时间,单位为毫秒。
  • initLimit:
  • syncLimit:
  • dataDir:用来存放快照数据,官方建议不要使用/tmp目录,可以使用/tmp/zookeeper。
  • clientPort;启动Zookeeper服务的默认端口。
  • maxClientCnxns:最大客户端连接数。如果客户端的数量超过了指定的数量,则新连接的客户端会抛出java.io.IOException: Connection reset by peer异常。
  • autopurge.snapRetainCount:
  • autopurge.purgeInterval:

通过zkServer.sh start命令启动Zookeeper,启动后默认端口是2181,启动成功后命令行会回显已经启动成功的标示STARTED。

client端调用ZK

client连接zk
sh /Developer/java/project/zookeeper-3.4.9/bin/zkCli.sh -server 127.0.0.1:2181

连接成功后会进入Zookeeper交互式窗口,命令行左边显示如下,然后你就可以使用Zookeeper提供的命令来创建,修改和删除节点。

创建节点
[zk: 127.0.0.1:2181(CONNECTED) 1] create /dmcNode data
Created /dmcNode
查看节点
[zk: 127.0.0.1:2181(CONNECTED) 2] get /dmcNode
data
cZxid = 0x54
ctime = Sat Sep 17 22:07:49 CST 2016
mZxid = 0x54
mtime = Sat Sep 17 22:07:49 CST 2016
pZxid = 0x54
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0

这些属性可以参考《Zookeeper官方文档》Zookeeper tatStructure章节https://zookeeper.apache.org/doc/r3.4.6/zookeeperProgrammers.html#sc_zkStatStructure

修改节点
[zk: 127.0.0.1:2181(CONNECTED) 3] set /dmcNode data1
cZxid = 0x54
ctime = Sat Sep 17 22:07:49 CST 2016
mZxid = 0x55
mtime = Sat Sep 17 22:10:46 CST 2016
pZxid = 0x54
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
删除节点
[zk: 127.0.0.1:2181(CONNECTED) 12] delete /dmcNode
关闭Zookeeper
sh /Developer/java/project/zookeeper-3.4.9/bin/zkServer.sh stop

Java API调用ZK

1:引入POM
<dependency>
  <groupId>org.apache.zookeeper</groupId>
  <artifactId>zookeeper</artifactId>
  <version>3.4.7</version>
</dependency>
2:Java测试代码
import java.io.IOException;

import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.ZooDefs;
import org.apache.zookeeper.ZooKeeper;

/**
 * 
 * @author tengfei.fangtf
 * @version $Id: TestZookeeper.java, v 0.1 Sep 14, 2016 5:05:07 PM tengfei.fangtf Exp $
 */
public class TestZookeeper {

    public static void main(String[] args) throws IOException, InterruptedException,
                                           KeeperException {
        //创建ZooKeeper实例
        ZooKeeper zk = new ZooKeeper("127.0.0.1:2181", 100, null);
        String path = "/dmc";

        //创建一个节点,模式是PERSISTENT
        zk.create(path, "1".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
        System.out.println("创建节点" + path + ",数据为:" + new String(zk.getData(path, null, null)));
        //修改节点数据
        zk.setData(path, "2".getBytes(), -1);
        System.out.println("修改节点" + path + ",数据为:" + new String(zk.getData(path, null, null)));
        //删除一个节点
        System.out.println(zk.exists(path, null));
        zk.delete(path, -1);
        //节点是否存在
        System.out.println(zk.exists(path, null));

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值