【Zookeeper入门篇二 安装与使用】

一、安装

zookeeper 的安装模式有三种:

  • 单机模式( stand-alone):单机单 server;
  • 集群模式:多机多 server,形成集群;
  • 伪集群模式:单机多个 server,形成伪集群;

1.1 Zookeeper单机模式安装

下面介绍使用Docker安装zookeeper的方式。

  1. 寻找镜像
docker search zookeeper
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
zookeeper                          Apache ZooKeeper is an open-source server wh…   871                 [OK]
jplock/zookeeper                   Builds a docker image for Zookeeper version …   164                                     [OK]
wurstmeister/zookeeper                                                             122                                     [OK]
mesoscloud/zookeeper               ZooKeeper                                       73                                      [OK]
bitnami/zookeeper                  ZooKeeper is a centralized service for distr…   35                                      [OK]
mbabineau/zookeeper-exhibitor                                                      24                                      [OK]
digitalwonderland/zookeeper        Latest Zookeeper - clusterable                  20                                      [OK]
tobilg/zookeeper-webui             Docker image for using `zk-web` as ZooKeeper…   14                                      [OK]
confluent/zookeeper                                                                13                                      [OK]
debezium/zookeeper                 Zookeeper image required when running the De…   11                                      [OK]
31z4/zookeeper                     Dockerized Apache Zookeeper.                    7                                       [OK]
thefactory/zookeeper-exhibitor     Exhibitor-managed ZooKeeper with S3 backups …   6                                       [OK]
emccorp/zookeeper                  Zookeeper                                       2
engapa/zookeeper                   Zookeeper image optimised for being used int…   2
strimzi/zookeeper                                                                  1
paulbrown/zookeeper                Zookeeper on Kubernetes (PetSet)                1                                       [OK]
duffqiu/zookeeper-cli                                                              1                                       [OK]
openshift/zookeeper-346-fedora20   ZooKeeper 3.4.6 with replication support        1
josdotso/zookeeper-exporter        ref: https://github.com/carlpett/zookeeper_e…   1                                       [OK]
perrykim/zookeeper                 k8s - zookeeper  ( forked k8s contrib )         1                                       [OK]
midonet/zookeeper                  Dockerfile for a Zookeeper server.              0                                       [OK]
humio/zookeeper-dev                zookeeper build with zulu jvm.                  0
dabealu/zookeeper-exporter         zookeeper exporter for prometheus               0                                       [OK]
phenompeople/zookeeper             Apache ZooKeeper is an open-source server wh…   0                                       [OK]
pravega/zookeeper-operator         Kubernetes operator for Zookeeper               0

2、拉取镜像

docker pull zookeeper

3、启动镜像

docker run --name zk -p 2181:2181 -p 2888:2888 -p 3888:3888 --restart always -d zookeeper
#或者
docker run --privileged=true -id --name zookeeper --publish 2181:2181  -id zookeeper:latest

参数介绍

  • -p  端口映射
  • --name  容器实例名称
  • -d  后台运行
  • 2181  Zookeeper客户端交互端口
  • 2888  Zookeeper集群端口
  • 3888  Zookeeper选举端口

4、查看zookeeper的运行状态

docker ps -a|grep zk

二、基本使用

前面说了 ZooKeeper 主要是用来维护和监控一个目录节点树中存储的数据的状态,所有我们能够操作 ZooKeeper 的也和操作目录节点树大体一样,如创建一个目录节点,给某个目录节点设置数据,获取某个目录节点的所有子目录节点,给某个目录节点设置权限和监控这个目录节点的状态变化。

2.1 核心API列表

图片.png

除了以上这些上表中列出的方法之外还有一些重载方法,如都提供了一个回调类的重载方法以及可以设置特定 Watcher 的重载方法,具体的方法可以参考 org.apache.zookeeper. ZooKeeper 类的 API 说明。

2.2 基本操作

下面给出基本的操作 ZooKeeper 的示例代码,包括了创建与 ZooKeeper 服务器的连接以及最基本的数据操作。

// 创建一个与服务器的连接
ZooKeeper zk = new ZooKeeper("localhost:" + CLIENT_PORT, 
       ClientBase.CONNECTION_TIMEOUT, new Watcher() { 
           // 监控所有被触发的事件
           public void process(WatchedEvent event) { 
               System.out.println("已经触发了" + event.getType() + "事件!"); 
           } 
       }); 
// 创建一个目录节点
zk.create("/testRootPath", "testRootData".getBytes(), Ids.OPEN_ACL_UNSAFE,
  CreateMode.PERSISTENT); 
// 创建一个子目录节点
zk.create("/testRootPath/testChildPathOne", "testChildDataOne".getBytes(),
  Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT); 
System.out.println(new String(zk.getData("/testRootPath",false,null))); 
// 取出子目录节点列表
System.out.println(zk.getChildren("/testRootPath",true)); 
// 修改子目录节点数据
zk.setData("/testRootPath/testChildPathOne","modifyChildDataOne".getBytes(),-1); 
System.out.println("目录节点状态:["+zk.exists("/testRootPath",true)+"]"); 
// 创建另外一个子目录节点
zk.create("/testRootPath/testChildPathTwo", "testChildDataTwo".getBytes(), 
  Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT); 
System.out.println(new String(zk.getData("/testRootPath/testChildPathTwo",true,null))); 
// 删除子目录节点
zk.delete("/testRootPath/testChildPathTwo",-1); 
zk.delete("/testRootPath/testChildPathOne",-1); 
// 删除父目录节点
zk.delete("/testRootPath",-1); 
// 关闭连接
zk.close();

输出的结果如下:

已经触发了 None 事件!
 testRootData 
 [testChildPathOne] 
目录节点状态:[5,5,1281804532336,1281804532336,0,1,0,0,12,1,6] 
已经触发了 NodeChildrenChanged 事件!
 testChildDataTwo 
已经触发了 NodeDeleted 事件!
已经触发了 NodeDeleted 事件!

当对目录节点监控状态打开时,一旦目录节点的状态发生变化,Watcher 对象的 process 方法就会被调用。

参考资料

  1. ZooKeeper基本原理及安装部署
  2. 分布式服务框架 Zookeeper -- 管理分布式环境中的数据
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,492评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,048评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,927评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,293评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,309评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,024评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,638评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,546评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,073评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,188评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,321评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,998评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,678评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,186评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,303评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,663评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,330评论 2 358