一、zookeeper的基本概念
1、集群3种角色
- leader:是整个zookeeper工作机制中的核心
- follower:是zookeeper集群状态的跟随者
- observer:服务器充当观察者的角色
备注:zookeeper用到了两种设计模式
- leader,follower设计模式
- observer 观察者设计模式
2、会话
会话指的是客户端和zookeeper服务器的链接,zookeeper中的会话叫session,客户端与服务器建立一个tcp的长连接来维持一个session,客户端的启动首先会与服务器建立一个tcp连接,通过这个连接,客户端能够通过心跳检测服务保持有效的会话,也能向zk服务器发送请求并获得响应
3、数据节点(2种)
- 集群中的一台机器称为一个节点
- 数据模型中的数据单元znode,分为持久节点和临时节点
zookeeper的数据模型是一棵树,书的节点就是znode,znode可以保存信息
4、版本
- version 当前数据节点数据内容的版本号
- cversion 当前数据节点子节点的版本号
- aversion 当前数据节点acl变更版本号
悲观锁和乐观锁
悲观锁又叫做悲观并发锁,是数据库中一种非常严格的锁策略,具有强烈的排他性,能够避免不同事物对同一数据兵法更新造成的数据不一致性,在一个事物没有完成之前,下一个事物不能同事访问相同的资源,舍河数据更新竞争非常激烈的场景
乐观锁
5、watcher
可以理解为事件监听器,当接待你发生变化的时候会将变化的通知发给客户端
6、ACL权限控制
- create:创建节点权限
- read:获取节点数据和子节点列表的权限
- write:更新节点数据的权限
- delete:删除子节点的权限
- admin:设置节点ACL的权限
二、zookeeper环境搭建
- zookeeper是用java语言写的,所以用zookeeper的前提是你的机器上安装了jdk
- 复制 zookeeper/conf/下的zoo_sample.cfg 为zoo.cfg
- 修改 zoo.cfg 文件
- dataDir=/var/zookeeper/ zookeeper存储快照文件的目录;
- clientport zookeeper的端口号(2181默认端口);
- server.1=host:prot(follower端口):port(leader端口) 备注:集群部署的时候,这个配置可以配多个
- 进入/var/目录下创建zookeeper文件夹
- 在/var/目录下创建myid文件,写入当前服务器的server的id,保存退出
启动zookeeper
- cd /zookeeper/bin/
- ./zkServer.sh start
zookeeper模式(备注:zookeeper集群只要有两台机器可用,此集群即可以使用)
- 单机模式
- 集群模式
- 伪集群模式
三、zookeeper客户端使用(linux)
- 客户端连接zk服务:sh zkCli.sh -timeout 5000 -server 192.168.1.105:2181
- 查看zk命令列表:h
- 查看某一个节点下的所有子节点的信息:ls /
- 获取数据节点的状态信息:stat /node_1
- 获取当前节点存储的数据的内容:get /node_1
- 查看当前节点的所有子节点和相关状态:ls2 /node_1
- 创建节点 cheate -s(数据节点) -e(临时节点) data(携带的数据) acl(权限) 备注:-e或者-s必须紧跟在create后边;临时节点,当客户端退出后,就销毁
- 修改节点 set path data [version]
- 删除节点 delete path [version] 备注:只能删除空的子节点
- 强制删除子节点 rmr