Zookeeper学习
1、Zookeeper
zookeeper是一个为分布式应用系统的一致性和协调性服务的软件,类似于unix系统文件+通知机制+Znode节点。
作用:服务注册+分布式系统的一致性通知协调。
vim /etc/sysconfig/network-scripts/ifcfg-eth0 #打开linux系统ip配置文件,可以修改linux虚拟机的ip。
service network restart #重启网关服务
2、conf/zoo_sample.cfg
tickTime:通信心跳数,Zookeeper服务器心跳时间,单位毫秒,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
initLimit:
syncLimit:Leader和Follower同步通信时限集群中Leader与Follower之间的最大响应时间单位。
dataDir:数据文件目录+数据持久化路径
clientPort:客户端连接端口
3、启动(bin目录下)
启动zookeeper服务端:./zkServer.sh start
启动zookeeper客户端: ./zkCli.sh
退出客户端:quit
退出服务端: ./zkServer.sh stop
查看zookeeper是否启动使用四字命令:echo ruok | nc 127.0.0.1 2181 返回imok[[email protected] bin]# ,zookeeper 启动成功。
如果linux系统报错:-bash: nc: command not found,请使用yum install -y nc 在线安装nc命令
4、zookeeper数据模型
ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode
很显然zookeeper集群自身维护了一套数据结构。这个存储结构是一个树形结构,其上的每一个节点,我们称之为"znode",每一个znode默认能够存储1MB的数据,每个ZNode都可以通过其路径唯一标识
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子节点数量
5、zookeeper四大节点
PERSISTENT-持久化目录节点:客户端与zookeeper断开连接后,该节点依旧存在
PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点:客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号
EPHEMERAL-临时目录节点:客户端与zookeeper断开连接后,该节点被删除
EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点:客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号
6、常用四字命令
echo 【命令】 | nc ip port
ruok:测试服务是否处于正确状态。如果确实如此,那么服务返回“imok ”,否则不做任何相应
stat:输出关于性能和连接的客户端的列表
conf:输出相关服务配置的详细信息
cons:列出所有连接到服务器的客户端的完全的连接 /会话的详细信息。包括“接受 / 发送”的包数量、会话id 、操作延迟、最后的操作执行等等信息
dump:列出未经处理的会话和临时节点
envi:输出关于服务环境的详细信息(区别于conf命令)
reqs:列出未经处理的请求
wchs:列出服务器watch的详细信息
wchc:通过session列出服务器watch的详细信息,它的输出是一个与watch相关的会话的列表
wchp:通过路径列出服务器 watch的详细信息。它输出一个与 session相关的路径
7、JAVA代码操作(简单Demo)
8、watch(通知机制)
通知机制: 客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增加删除)时,zookeeper会通知客户端,它是一个异步回调的触发机制。
一次通知
递归产生多次通知: