• zookeeper基础笔记


    一、安装

    1.安装jdk

    2.安装Zookeeper

    3.单机模式(stand-alone):安装目录/conf   复制 zoo_sample.cfg 并粘贴到当前目录下,命名zoo.cfg.

    二、目录结构

    bin             存放系统脚本

    conf            存放配置文件

    contrib          zk附加功能支持

    dist-maven       maven仓库文件

    docs            zk文档

    lib              依赖的第三方库

    recipes          经典场景样例代码

    src             zk源码

    其中bin和conf是非常重要的两个目录,平时也是经常使用的。

    三、bin目录

     其中

    zkServer为服务器,启动后默认端口为2181

    zkCli为命令行客户端

     

    四、conf目录

    Conf目录为配置文件存放的目录,zoo.cfg为核心的配置文件

     

    这里面的配置很多,这配置是运维的工作,目前没必要,也没办法全部掌握。

     

     

     

     

    clientPort:参数无默认值,必须配置,用于配置当前服务器对外的服务端口,客户端必须使用这端口才能进行连接

    dataDir:用于存放内存数据库快照的文件夹,同时用于集群的myid文件也存在这个文件夹里(注意:一个配置文件只能包含一个dataDir字样,即使它被注释掉了。)

    dataLogDir:用于单独设置transaction log的目录,transaction log分离可以避免和普通log还有快照的竞争

    maxClientCnxns:配置单个客户端机器创建的最大连接数;

    dataDir新安装zk这文件夹里面是没有文件的,可以通过snapCount参数配置产生快照的时机 

    以下配置集群中才会使用

    tickTime:心跳时间,为了确保连接存在的,以毫秒为单位,最小超时时间为两个心跳时间

    initLimit:多少个心跳时间内,允许其他server连接并初始化数据,如果ZooKeeper管理的数据较大,则应相应增大这个值

    syncLimit:多少个tickTime内,允许follower同步,如果follower落后太多,则会被丢弃。

     

    五、zookeeper特性

    1、会话

    客户端与服务端的一次会话连接,本质是TCP长连接,通过会话可以进行心跳检测和数据传输;

    会话状态

    看下这图,Zk客户端和服务端成功连接后,就创建了一次会话,ZK会话在整个运行期间的生命周期中,会在不同的会话状态之间切换,这些状态包括:

    CONNECTINGCONNECTEDRECONNECTINGRECONNECTEDCLOSE

     

    一旦客户端开始创建Zookeeper对象,那么客户端状态就会变成CONNECTING状态,同时客户端开始尝试连接服务端,连接成功后,客户端状态变为CONNECTED,通常情况下,由于断网或其他原因,客户端与服务端之间会出现断开情况,一旦碰到这种情况,Zookeeper客户端会自动进行重连服务,同时客户端状态再次变成CONNCTING,直到重新连上服务端后,状态又变为CONNECTED,在通常情况下,客户端的状态总是介于CONNECTINGCONNECTED之间。但是,如果出现诸如会话超时、权限检查或是客户端主动退出程序等情况,客户端的状态就会直接变更为CLOSE状态

    2、数据模型

    ZooKeeper的视图结构和标准的Unix文件系统类似,其中每个节点称为“数据节点”或ZNode,每个znode可以存储数据,还可以挂载子节点,因此可以称之为“树”

    第二点需要注意的是,每一个znode都必须有值,如果没有值,节点是不能创建成功的。

    l  Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据

    l  通过客户端可对znode进行增删改查的操作,还可以注册watcher监控znode的变化。

    3、节点类型

    aZnode有两种类型:

    短暂(ephemeral)(create -e /app1/test1 “test1” 客户端断开连接zk删除ephemeral类型节点) 
    持久(persistent create -s /app1/test2 “test2” 客户端断开连接zk不删除persistent类型节点)

    bZnode有四种形式的目录节点(默认是persistent

    PERSISTENT 
    PERSISTENT_SEQUENTIAL
    (持久序列/test0000000019  
    EPHEMERAL 
    EPHEMERAL_SEQUENTIAL

    c、创建znode时设置顺序标识,znode名称后会附加一个值,顺序号是一个单调递增的计数器,由父节点维护 
           

    d、在分布式系统中,顺序号可以被用于为所有的事件进行全局排序,这样客户端可以通过顺序号推断事件的顺序

     

    4、节点状态属性

    5、ACL

    ACL机制,表示为scheme:id:permissions,第一个字段表示采用哪一种机制,第二个id表示用户,permissions表示相关权限(如只读,读写,管理等)。

    zookeeper提供了如下几种机制(scheme):

    world:它下面只有一个id, anyone, world:anyone代表任何人,zookeeper中对所有人有权限的结点就是属于world:anyone

    auth:它不需要id, 只要是通过authenticationuser都有权限(zookeeper支持通过kerberos来进行authencation, 也支持username/password形式的authentication)

    digest:它对应的idusername:BASE64(SHA1(password)),它需要先通过username:password形式的authentication

    ip: 它对应的id为客户机的IP地址,设置的时候可以设置一个ip段,比如ip:192.168.1.0/16, 表示匹配前16bitIP

    六、命令

    1、服务端常用命令

    在准备好相应的配置之后,可以直接通过zkServer.sh 这个脚本进行服务的相关操作 

    启动ZK服务:       sh bin/zkServer.sh start 

    查看ZK服务状态: sh bin/zkServer.sh status 

    停止ZK服务:       sh bin/zkServer.sh stop 

    重启ZK服务:       sh bin/zkServer.sh restart 

     

    2、客户端常用命令

    使用 zkCli.sh -server 127.0.0.1:2181 连接到 ZooKeeper 服务,连接成功后,系统会输出 ZooKeeper 的相关环境以及配置信息。 命令行工具的一些简单操作如下:

    l  显示根目录下、文件: ls / 使用 ls 命令来查看当前 ZooKeeper 中所包含的内容 

    l  显示根目录下、文件: ls2 / 查看当前节点数据并能看到更新次数等数据 

    l  创建文件,并设置初始内容: create /zk "test" 创建一个新的 znode节点“ zk ”以及与它关联的字符串  [-e] [-s] -e 零时节点】 -s 顺序节点】

    l  获取文件内容: get /zk 确认 znode 是否包含我们所创建的字符串  [watch]watch 监听】

    l  修改文件内容: set /zk "zkbak"  zk 所关联的字符串进行设置 

    l  删除文件: delete /zk 将刚才创建的 znode 删除,如果存在子节点删除失败 

    l  递归删除:rmr  /zk将刚才创建的 znode 删除,子节点同时删除

    l  退出客户端: quit 

    l  帮助命令: help

     

    3、ACL常用命令(一般都是使用默认的)

    ZookeeperACL(Access Control List),分为三个维度:schemeidpermission

    通常表示为:scheme:id:permission

    l  schema:代表授权策略

    l  id:代表用户

    l  permission:代表权限

    getAcl -- 获取指定节点的ACL信息 

    setAcl -- 设置指定节点的ACL信息

     

    4、常用四字命令

    ZooKeeper 支持某些特定的四字命令字母与其的交互。用来获取 ZooKeeper 服务的当前状态及相关信息。可通过 telnet  nc  ZooKeeper 提交相应的命令 

    当然,前提是安装好了nc

    echo stat|nc 127.0.0.1 2181 来查看哪个节点被选择作为follower或者leader

    使用echo ruok|nc 127.0.0.1 2181 测试是否启动了该Server,若回复imok表示已经启动。

    echo dump| nc 127.0.0.1 2181 ,列出未经处理的会话和临时节点。

    echo kill | nc 127.0.0.1 2181 ,关掉server

    echo conf | nc 127.0.0.1 2181 ,输出相关服务配置的详细信息。

    echo cons | nc 127.0.0.1 2181 ,列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息 

    echo envi |nc 127.0.0.1 2181 ,输出关于服务环境的详细信息(区别于 conf 命令)。 

    echo reqs | nc 127.0.0.1 2181 ,列出未经处理的请求。

    echo wchs | nc 127.0.0.1 2181 ,列出服务器 watch 的详细信息。

    echo wchc | nc 127.0.0.1 2181 ,通过 session 列出服务器 watch 的详细信息,它的输出是一个与 watch 相关的会话的列表。

    echo wchp | nc 127.0.0.1 2181 ,通过路径列出服务器 watch 的详细信息。它输出一个与 session 相关的路径。

  • 相关阅读:
    Shell学习(四)Shell运算符
    Shell学习(三)Shell参数传递
    Shell学习(二)Shell变量
    Shell学习(一)认识Shell
    JVM学习(四)JVM调优
    JVM学习(三)JVM垃圾回收
    JVM学习(二)JVM加载类
    JVM学习(一)什么是JVM
    Python学习————包
    Python学习————模块
  • 原文地址:https://www.cnblogs.com/Mustr/p/11907202.html
Copyright © 2020-2023  润新知