zookeeper的基本使用+Linux
zookeeper:
1. zookeeper入门级介绍:
zookeeper是什么?
1) 用设计模式来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生改变,zookeeper就讲负责通知已经在zookeeper上注册的那些观察者做出相对应的反应,从而实现集群中类似Master/Slave管理模式。
此处的zookeeper和redis中的哨兵机制是一样的。
2)一句话解释:zookeeper=类似Linux文件系统+通知机制+Znode节点组成
3)zookeeper主要的作用:命名服务,配置维护,集群管理,分布式消息同步和协调机制,对Dubbo的支持
2. zookeeper的安装配置:
主要是通过CentOS虚拟机来进行安装;
一些Linux的基本命令,在这就不一一演示了,直接进入主题。(如果想了解的话,可以看看我的另外一篇关于Linux的博客。)
如果想在Linux中运行zookeeper的话,一定要安装jdk环境,安装jdk环境的方法也在上方的链接中。我已经为大家准备好了。亲测是可以正常使用的。
1)下载:可以直接通过apache.org中去下载。 http://apache.org/
上面图片列出了apache基金组织的全部软件,如果有需要的话可以直接到官网去进行下载。
2)自己创建一个文件夹命名为myzookeeper;然后将我们从官网下载好的后缀名为tar的包导入进去。
导入包有很多种方法,我是使用xshell,直接到指定的路径下面,让里边拖拽即可。
3)解压的指令:tar zxvf 文件名
上图是已经解压好的文件目录
注意点:如果是Linux中含有已经解压完成的文件夹,我们在复制的时候,一定要注意使用cp -r (文件名) (复制到的地址)。因为这个是文件夹中嵌套着文件夹,直接使用cp命令的话,不能复制过来。
我们下面主要演示的也是上面我标注的两个文件夹,一个是bin(服务端的启动,关闭和客户端启动的指令),另外一个是conf文件夹(zookeeper的一些基本的配置,主要是理解为主)
4)配置:(主要是讲解其中的一些配置的主要作用是什么)
(1) tickTime:通信心跳数,zookeeper服务心跳时间,单位是毫秒
(2)initLimit:这个配置是用来配置zookeeper接收Follower客户端,初始化连接最长能忍受多少个心跳的时间间隔数。当已经超过10个心跳的时间之后,就表明这个客户端连接失败,总的时长就是10*2000=20秒
(3)syncLimit:LF同步通信时限,集群中Leader与Follower之间的最大响应时间单位。在运行过程中,Leader负责与zookeeper集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存货状态。通过检测机制来检测机器的存货状态。
(4)dataDir:数据文件目录+数据持久化路径。保存内存数据快照信息的位置,如果没有其他说明,更新的事务日志也保存到数据库。
(5)clientPort:是客户端的端口号。(如果设置了zookeeper集群的话,这一块的端口号是一定需要进行更改的)。
5)启动服务:
(1)首选需要到bin这个目录下:
zkCli.cmd 是window系统下客户端启动的指令
zkCli.sh 是Linux系统下客户端启动的指令
zkServer.cmd 是window系统下服务端启动的指令
zkServer.sh 是Linux系统下服务端启动的指令
启动zookeeper服务:
当出现Starting zookeeper … STARTED就表示我们已经启动服务器成功了。
启动客户端:(本人在启动客户端的时候,时间稍微较长,如果出现类似的问题,请不要着急)
启动指令:./zkCli.sh
当出现上面的Welcome to Zookeeper的时候,就表示我们已经把客户端正常启动起来了
退出的话直接输入quit即可
每个节点的解释:
czxid- 引起这个znode创建的zxid,创建节点的事务的zxid(ZooKeeper Transaction Id)
ctime - znode被创建的毫秒数(从1970年开始)
mzxid - znode最后更新的zxid
mtime - znode最后修改的毫秒数(从1970年开始)
pZxid-znode最后更新的子节点zxid
cversion - znode子节点变化号,znode子节点修改次数
dataversion - znode数据变化号
aclVersion - znode访问控制列表的变化号
ephemeralOwner- 如果是临时节点,这个是znode拥有者的session id。如果不是临时节点则是0。
dataLength- znode的数据长度
numChildren - znode子节点数量
重点来了上述的类型,就是我们在一开始说到的 类似Linux文件系统+通知机制+Znode节点组成
上述的就是Znode节点。
Znode的组成:路径+值+stat结构
类似Linux文件系统:
所使用的数据模型风格很像文件系统的目录树结构,简单来说,有点类似window中注册表的结构。有名称,有树节点,有key(键)/value(值)对的关系。可以看做一个树形结构的数据库,分步在不同的机器上做名称管理。
6)zkCli中使用的基本命令:
注意:只要输入不在指令中的任意指令,帮助的指令就会出现。
基本上的意思就是和我们字面的意思是一样的,下面只介绍几个特殊的部分:
create :是普通的创建
create -s 含有序列:会按照我们的想法,逐渐的去添加,和mysql数据库中主键的意思是一样的,是一个主键递增的状态。
常用的四字命令:
补充:
检查当前服务的状态的几种方法:
ps -ef|grep zookeeper
netstat -anp|grep 2181
echo ruok | nc 127.0.0.1 2181
ruok:测试服务是否处于正确状态。如果确实如此,那么服务返回“imok ”,否则不做任何相应
stat:输出关于性能和连接的客户端的列表
conf:输出相关服务配置的详细信息
cons:列出所有连接到服务器的客户端的完全的连接 /会话的详细信息。包括“接受 / 发送”的包数量、会话id 、操作延迟、最后的操作执行等等信息
dump:列出未经处理的会话和临时节点
envi:输出关于服务环境的详细信息(区别于conf命令)
reqs:列出未经处理的请求
wchs:列出服务器watch的详细信息
wchc:通过session列出服务器watch的详细信息,它的输出是一个与watch相关的会话的列表
wchp:通过路径列出服务器 watch的详细信息。它输出一个与 session相关的路径
3.通知机制:
watch:通知机制:客户端之策监听它关心的目录节点,当目录接地那发生变化(数据改变、删除、子目录节点增删改查)时,zookeeper会通知客户端。
主要是观察者的功能。一句话就是雨布回调的触发机制