zookeeper介绍(5)快速入门教程

1. Zookeeper

前言

由于之前总结的zk相对项目实战化,导致有人不好理解,特此准备zk的快速入门教程,仅供大家学习参考

1.1 ZK简介

  1. ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

  2. ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

  3. ZooKeeper包含一个简单的原语集,提供Java和C的接口。

  4. ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在$zookeeper_homesrc ecipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本

下载地址:https://webscripts.softpedia.com/script/Development-Scripts-js/Complete-applications/Apache-Hadoop-ZooKeeper-59851.html

1.2 ZK数据模型

1.3 ZK节点类型

1.4 ZK的安装

linux安装

# 准备工作
- jdk1.8  的安装   java -version  验证

# 下载zk  (我选择的3.4.14)  上传服务器   sftp  或者  rz命令即可
- curl http://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/

# 解压 并修改文件名 
- tar -zxvf zookeeper-3.4.14.tar.gz   &&  mv zookeeper-3.4.14 zk

# 补充:解压后目录结构如下

# 修改zoo.cfg配置文件
- cd conf   && cp   zoo_sample.cfg  zoo.cfg
# 创建文件夹
- mkdir /tmp/zookeeper  
## zoo.cfg文件内容如下:
 - tickTime=2000   心跳时间间隔
 - initLimit=10		超时时间  10*2 10代表重连次数
 - syncLimit=5      集群运行时同步数据时间  5*2
  # the directory where the snapshot is stored.
  # do not use /tmp for storage, /tmp here is just 
  # example sakes.  不会自动创建
 - dataDir=/tmp/zookeeper
  # the port at which the clients will connect
 - clientPort=2181
 
# 启动 zk
	切换到bin文件夹下   cd ../bin
  	/zkServer.sh  start  zoo.cfg文件绝对路径(默认不加去config加载zoo.cfg)

# 验证  
	1. jps  (java进程查询) zk是java编写,可以使用jps进行查询  QuorumPeerMain代表zk启动成功
	2. zkcli查询
		./zkCli.sh -server ip:port   -- -server ip:port 不写默认链接本机zk
		./zkCli.sh help

docker安装

# 拉取zk镜像
- docker pull zookeeper:3.4.14

# 启动镜像
- docker run -d --name zk1  -p 2182:2181 zookeeper:3.4.14(也可以使用镜像id)

# 验证容器
- docker ps  查询正在运行的容器 

# 客户端连接验证
-  ./zkCli.sh -server localhost:2182   使用任意zk客户端命令连接到2182端口进行验证即可

1.5 客户端命令

# help  帮助指令  查询相关命令

# ls path    查询指定节点下的子节点

# create path  data   创建节点 并绑定数据  默认是持久化节点
	create /znode1 huhy     创建持久化节点 绑定数据huhy  (默认是持久化节点)
	create -s /znode2 huhy  创建持久化顺序节点  返回的节点名称/znode20000000001
	create -e /znode3 huhy  创建临时节点(不允许有子节点)
	create -e -s /znode4 huhy  创建临时性顺序节点(不允许有子节点) 返回的节点名称/znode40000000003
	
# stat  path    查询节点状态

# set path  newdata  修改节点数据

# ls2 path   递归查询path节点

# history  查询历史操作记录

# get path  获取节点绑定数据

# delete path   删除节点 不能含有子节点
# rmr  path   递归删除

# quit  退出回话   临时节点自动清除  会话失效或者超时临时节点自动清除

1.6 Watch监听机制

一个Watch事件是一个一次性的触发器,当被设置了Watch的数据发生了改变的时候,则服务器将这个改变发送给设置了Watch的客户端,以便通知它们。

# ls path true      监控节点目录
# get path true     监控节点数据

	ps: 可以同时启动两个客户端进行监听模拟   可以验证都是一次性的监听事件,一旦监听成功想要再次监听,就需要重新执行相关监听指令

java代码中的监听是永久监听的

1.7 zk集群

参考:https://www.cnblogs.com/huhongy/p/10935233.html

本文来自博客园,作者:huhy,转载请注明原文链接:https://www.cnblogs.com/huhongy/p/15019591.html

原文地址:https://www.cnblogs.com/huhongy/p/15019591.html