zookeeper
一、简介zookeeper
1、是一个中间件,提供协调服务。
2、作用与分布式系统,发挥其优势,可以为大数据服务
3、支持java,提供java和c语言的客户端api
二、分布式系统
1、是一个很多台计算机组成的一个整体,一个整体一致对外并且处理同一个请求
2、内部的每台计算机都可以相互通信(rest/rpc)
3、客户端到服务端的一次请求到响应结束会经历多台计算机
三、zookeeper的特性
1、一致性:数据一致性,数据按照顺序分批入库
2、原子性:数据要么成功要么失败,不会局部化
3、单一视图:客户端连接zookeeper的任意一个节点,数据都是一致的
4、可靠性:每次对zk的操作状态都会保存在服务端
5、实时性:客户端可以读取到zookeeper服务端的最新数据
四、zookeeper安装教程参考文章: https://www.cnblogs.com/lsdb/p/7297731.html
五、zookeeper的基本数据模型
zk的数据模型可以理解为linux/unix的文件结构,每一个节点称之为znode,可以有子节点,也可以有数据,每个节点分为临时节点和永久节点,临时节点在客户端断开后消失,每个zk节点都有各自的版本号,可以通过命令行来查看节点信息,每当节点数据发生变化,那么该节点的版本号会累加(乐观锁),删除和修改过时节点,版本号不匹配会报错,zk节点存储数据不宜过大,几k就行了,节点可以设置权限,可以通过设置权限来限制用户访问。
六、zookeeper常用命令操作(首先启动zookeeper服务器,然后启动客户端进行命令操作)
ls 查看当前节点,stat 查看当前节点信息,ls2相当于ls加上stat命令,get 获取节点的值,set设置节点值,delete删除节点
watcher机制,针对每个节点的操作都会有一个watcher监督者,当监控某个对象发生了变化,则触发了watcher事件,zk中watcher事件是一次性的,触发后立即销毁。父节点,子节点的增删改都会触发watcher事件,针对不同的操作,触发的watcher事件也不同。
根据 get path [watch] 设置watcher,
父节点:
创建节点触发NodeCreated 修改节点触发NodeDataChanged 删除节点触发事件NodeDelete事件
子节点
ls为父节点设置watcher,创建子节点触发:NodeChildChanged事件,删除子节点触发: NodeChildChanged事件,修改子节点不触发事件。
七、关于zookeeper acl权限详解access control list
getAcl: 获取某个节点的acl权限信息
setAcl: 设置某个节点 的acl权限信息
addauth: 输入认证授权信息,注册时输入明文密码(登录),但是在
zookeeper系统里面,密码是以加密的形式存在的、
acl构成[scheme:id:permissions] scheme: 代表采用的某种权限机制,id: 代表允许访问的用户,permissions: 代表权限组合字符串,格式: world:anyone:[permissions]
scheme: world
id: auth:代表认证登录,需要注册用户有相应的权限就可以,形式是
auth:user:password:[permissions]
digest: 需要对密码进行加密才能访问,组合形式为
digest:username:BASE64(SHA1(password)):permissions
ip:当设置为ip指定的ip地址,此时限制ip进行访问,比如
ip:192.168.2.2::[permissions]
super: 拥有所有权限
permissions:crdwa
create: 可以创建子节点
r: 可以获取节点、子节点
w: 设置子节点数据
d: 可以删除子节点
a: 可以设置权限
acl之超级管理员:设置过后要重启一下,设置过程网上找把,反正就是更改zkServer.sh里面的一段代码,让zk启动的时候可以自己加载并且读到,然后重启后用这个登陆就行了,注意密码是先sha1加密然后base64加密放到zkServer.sh里面,登陆的时候用明文。
八、zk四字命令
1、stat 查看zk状态信息
echo stat | nc ip 8080
2、 ruok 查看zkServer是否启动成功
echo ruok | nc ip 8080
3、dump 查看列出未经处理的回话和临时节点
echo dump | nc ip 8080
4、conf 查看配置信息
echo conf | nc ip 8080
5、cons 展示连接到服务器的客户端信息
echo cons | nc ip 8080
6、envi 环境变量
echo envi | nc ip 8080
7、mntr zk健康信息
echo mntr | nc ip 8080
8、wchs zk中watcher信息
echo wchs | nc ip 8080
9、wchc wchp需要配置后才会生效,session和path对于watcher关系
echo wchc | nc ip 8080
zookeeper集群搭建
zk集群,主从节点,心跳机制(选举模式)
配置数据文件 myid 1/2/3 对应server 1/2/3
通过./zkCli.sh -server [ip]:[port] 检测集群是否配置成功
具体命令可以参照: http://blog.51cto.com/zero01/2106801