• 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
  • 相关阅读:
    Android测试入门篇
    SQL的基本知识
    正则表达式
    ES5语法
    vscode
    继承小结
    工作遇到的问题
    后台程序员的HTTP缓存
    xhr下载图片/服务器向客户端推送消息
    HTTP2.0
  • 原文地址:https://www.cnblogs.com/zhumiao/p/9894841.html
Copyright © 2020-2023  润新知