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

zhumiao
原文地址:https://www.cnblogs.com/zhumiao/p/9894841.html