博客
关于我
Zookeeper学习笔记
阅读量:411 次
发布时间:2019-03-06

本文共 4669 字,大约阅读时间需要 15 分钟。

目录

Zookeeper 介绍

Zookeeper是一个分布式应用程序协调服务,主要负责集中维护配置信息的服务,提供分布式的同步机制。其所有的服务都是做为其他分布式应用的基础。Zookeeper是Google Chubby的一个开源实现,是现在很多分布式应用的重要组件,包括诸如Hadoop、HBase、Kafka等,可以说现在Zookeeper是大家必须掌握的一门软件。

Zookeeper主要提供以下几种服务:

1、命名服务
2、配置管理
3、集群管理
4、分布式锁
5、队列管理

Zookeeper的特点

  • 简单:Zookeeper的核心是一个精简的文件系统,它支持一些简单的操作和一些抽象操作,例如,排序和通知。
  • 丰富:Zookeeper的原语操作是很丰富的,可实现一些协调数据结构和协议。例如,分布式队列、分布式锁和一组同级别节点中的“领导者选举”。
  • 高可用:Zookeeper支持集群模式,可以很容易的解决单点故障问题。
  • 松耦合式交互:不同进程间的交互不需要了解彼此,甚至可以不必同时存在,某进程在zookeeper中留下消息后,该进程结束后其它进程还可以读这条消息。
  • 资源库:Zookeeper实现了一个关于通用协调模式的开源共享存储库,能使开发者免于编写这类通用协议。

常用操作

为了熟悉Zookeeper的常用操作,最简单的办法就是使用Docker。

$ docker pull zookeeper# 完成后启动zookeeper$ docker run -p 2181:2181 zookeeper# 重新打开一个Terminal界面,查找到当前容器的ID,登陆到容器中$ docker psCONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                                        NAMES63c3aa117fca        zookeeper           "/docker-entrypoint.…"   About a minute ago   Up About a minute   2888/tcp, 0.0.0.0:2181->2181/tcp, 3888/tcp   infallible_saha$ docker exec -it 63c3aa117fca bash

现在一个单机版的Zookeeper就运行起来了,可以尝试常用的命令了。

查看Server运行状态

bash-4.4# ./zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /conf/zoo.cfgMode: standalone

客户端连接服务器

bash-4.4# ./zkCli.sh Connecting to localhost:2181

常用命令

  • 查看: ls
  • 获取节点数据和更新信息: get /zookeeper
[zk: localhost:2181(CONNECTED) 3] get /zookeepercZxid = 0x0ctime = Thu Jan 01 00:00:00 GMT 1970mZxid = 0x0mtime = Thu Jan 01 00:00:00 GMT 1970pZxid = 0x0cversion = -1dataVersion = 0aclVersion = 0ephemeralOwner = 0x0dataLength = 0numChildren = 1
  • 获取节点的更新信息: stat /zookeeper
  • 创建节点: craete [-s] [-e] path data acl-s表示创建顺序节点,-e表示创建临时节点。
[zk: localhost:2181(CONNECTED) 6] create /spring helloCreated /spring[zk: localhost:2181(CONNECTED) 9] get /springhellocZxid = 0x4ctime = Fri Apr 05 09:30:55 GMT 2019mZxid = 0x4mtime = Fri Apr 05 09:30:55 GMT 2019pZxid = 0x4cversion = 0dataVersion = 0aclVersion = 0ephemeralOwner = 0x0dataLength = 5numChildren = 0
  • 修改节点: set path data [version],可以看到dataVersion变成了1
[zk: localhost:2181(CONNECTED) 11] set /spring spring-v1cZxid = 0x4ctime = Fri Apr 05 09:30:55 GMT 2019mZxid = 0x5mtime = Fri Apr 05 09:34:19 GMT 2019pZxid = 0x4cversion = 0dataVersion = 1aclVersion = 0ephemeralOwner = 0x0dataLength = 9numChildren = 0
  • 删除节点: delete path [version]
[zk: localhost:2181(CONNECTED) 17] delete /spring[zk: localhost:2181(CONNECTED) 18] get /springNode does not exist: /spring
  • 设置watch事件: stat path [watch]
[zk: localhost:2181(CONNECTED) 33] stat /spring/bootx watchNode does not exist: /spring/bootx[zk: localhost:2181(CONNECTED) 34] create /spring/bootx bootxCreated /spring/bootxWATCHER::[zk: localhost:2181(CONNECTED) 35] WatchedEvent state:SyncConnected type:NodeCreated path:/spring/bootx
  • 设置watch事件: get path [watch]
[zk: localhost:2181(CONNECTED) 38] get /spring/booty watchnew-boot-ycZxid = 0xcctime = Fri Apr 05 13:38:36 GMT 2019mZxid = 0xdmtime = Fri Apr 05 13:38:48 GMT 2019pZxid = 0xccversion = 0dataVersion = 1aclVersion = 0ephemeralOwner = 0x0dataLength = 10numChildren = 0[zk: localhost:2181(CONNECTED) 39] set /spring/booty nnew-boot-yWATCHER::WatchedEvent state:SyncConnected type:NodeDataChanged path:/spring/bootycZxid = 0xcctime = Fri Apr 05 13:38:36 GMT 2019mZxid = 0xemtime = Fri Apr 05 13:39:26 GMT 2019pZxid = 0xccversion = 0dataVersion = 2aclVersion = 0ephemeralOwner = 0x0dataLength = 11numChildren = 0
  • xxxx
  • xxxx

ACL权限

ZK的节点有5种操作权限:CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限。

注:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限。

身份的认证有4种方式:

  • world:默认方式,相当于全世界都能访问
  • auth:代表已经认证通过的用户(cli中可以通过addauth digest user:pwd 来添加当前上下文中的授权用户)
  • digest:即用户名:密码这种方式认证,这也是业务系统中最常用的
  • ip:使用Ip地址认证
[zk: localhost:2181(CONNECTED) 42] getAcl /spring'world,'anyone: cdrwa[zk: localhost:2181(CONNECTED) 43] getAcl /zookeeper'world,'anyone: cdrwa

四字命令

ZooKeeper 支持某些特定的四字命令字母与其的交互。它们大多是查询命令,用来获取 ZooKeeper 服务的当前状态及相关信息。用户在客户端可以通过 telnetnc 向 ZooKeeper 提交相应的命令。 ZooKeeper 常用四字命令如下表所示。

Zookeeper四字命令 功能描述
conf 输出相关服务配置的详细信息。
cons 列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息。包括“接受 / 发送”的包数量、会话 id 、操作延迟、最后的操作执行等等信息。
dump 列出未经处理的会话和临时节点。
envi 输出关于服务环境的详细信息(区别于 conf 命令)。
reqs 列出未经处理的请求
ruok 测试服务是否处于正确状态。如果确实如此,那么服务返回“ imok ”,否则不做任何相应。
stat 输出关于性能和连接的客户端的列表。
wchs 列出服务器 watch 的详细信息。
wchc 通过 session 列出服务器 watch 的详细信息,它的输出是一个与 watch 相关的会话的列表。
wchp 通过路径列出服务器 watch 的详细信息。它输出一个与 session 相关的路径。

使用方法

$ echo stat | nc 127.0.0.1 2181Zookeeper version: 3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built on 06/29/2018 04:05 GMTClients: /172.17.0.1:53548[0](queued=0,recved=1,sent=0) /127.0.0.1:56306[1](queued=0,recved=483,sent=485)Latency min/avg/max: 0/0/45Received: 500Sent: 501Connections: 2Outstanding: 0Zxid: 0xeMode: standaloneNode count: 8

参考资料

转载地址:http://uerkz.baihongyu.com/

你可能感兴趣的文章
mongodb定时备份数据库
查看>>
mppt算法详解-ChatGPT4o作答
查看>>
mpvue的使用(一)必要的开发环境
查看>>
MQ 重复消费如何解决?
查看>>
mqtt broker服务端
查看>>
MQTT 保留消息
查看>>
MQTT 持久会话与 Clean Session 详解
查看>>
MQTT工作笔记0007---剩余长度
查看>>
MQTT工作笔记0009---订阅主题和订阅确认
查看>>
Mqtt搭建代理服务器进行通信-浅析
查看>>
MS Edge浏览器“STATUS_INVALID_IMAGE_HASH“兼容性问题
查看>>
ms sql server 2008 sp2更新异常
查看>>
MS UC 2013-0-Prepare Tool
查看>>
MSBuild 教程(2)
查看>>
msbuild发布web应用程序
查看>>
MSB与LSB
查看>>
MSCRM调用外部JS文件
查看>>
MSCRM调用外部JS文件
查看>>
MSEdgeDriver (Chromium) 不适用于版本 >= 79.0.313 (Canary)
查看>>
MsEdgeTTS开源项目使用教程
查看>>