zoukankan      html  css  js  c++  java
  • 03_Zookeeper基本数据模型及基本命令操作

    【Zookeeper基本数据模型及注意点】

    * zk的数据模型可以类比为Linux的文件目录,是一种树状结构,如:/dubbo/com.service.DemoService/provider....

    * 每一个节点都称之为znode,它可以有子节点,也可以有数据。

    * 每个节点分为临时节点和永久节点,临时节点在客户端断开连接后消失。

    * 每个zk节点都有各自的版本号,可以通过命令行来显示节点信息

    * 每当节点数据发生变化,那么该节点的版本号会累加(乐观锁)。

    * 删除/修改过时节点,版本号不匹配会报错。

    * 每个zk节点存储的数据不宜过大,不超过几k。

    * 节点可以设置ACL,可以通过权限来限制用户的访问。

    【ZK特性——session基本原理】

    * 客户端和服务端之间的连接存在会话

    * 每个会话都可以设置一个超时时间

    * 心跳结束,Session则过期(客户端会定时向服务端发送心跳指令)

    * Session过期,则临时节点Znode会被抛弃

    * 心跳机制:客户端向服务端的ping包请求

    【Zookeeper数据模型基本操作】

    【 zkServer.sh 相关 】

    [ 启动zkServer ]

    //进入zk的bin目录:cd /zookeeper-3.4.8/bin
    ./zkServer.sh start

    [ 停止zkServer ]

    ./zkServer.sh stop

    [ 重启zkServer ]

    ./zkServer.sh restart

    [ 查看zkServer状态 ]

    ./zkServer.sh status

     【zkCli.sh相关】

    zkCli.sh 使用的基本格式

    //-timeout:表示客户端向zk服务器发送心跳的时间间隔,单位为毫秒
    //-r:表示客户端以只读模式连接 
    //-server:指定指定zk服务器的IP与端口,zk默认的客户端端口为2181
    zkCli.sh -timeout 5000 -r -server ip:port

    [ zkCli连接本地默认的zkServer ]

    ./zkCli.sh 

    [ zkCli连接远程的zkServer ] 

    ./zkCli.sh -timeout 5000 -server 192.xxx.x.xxx:2181

     【创建Znode——create命令】

    create [-s] [-e] path data acl

    使用create命令,可以创建一个znode节点,其中-s或-e分别指定节点的特性,顺序或临时节点,若不指定,则表示持久节点,acl用来进行权限控制。

    [示例1:create创建永久节点]

    [ 示例2:create创建顺序节点 ]

    create -s higginA 1234 

    [ 示例3:create创建临时节点 ]

    create -e /higginB 666

    使用quit指令退出客户端

    再次启动zk客户端连接,查看发现对应的higginB节点已经被删除

    [ 注意 ]

    直接创建路径,不创建节点,无法成功创建路径,如下所示:

     【 读取节点 】

    与读取相关的命令有ls 和 get命令,

    ls:可以列出zk指定节点下的所有子节点,但只能查看指定节点下的第一级的所有子节点。

    get:可以获取zk指定节点的数据内容和属性信息。

    [ ls示例:获取根节点下的所有子节点 ]

    [ get示例:获取根节点的内容和属性 ]

    [ 注意:也可以用ls2查看 ]

    ls2有点类似get+ls组合后的效果

    【 更新节点 】

    使用set命令,可以更新指定节点的数据内容

    set path data [version]

    data:要更新的新内容

    version:表示数据版本

    [ 更新higgin的数据为xixix ]

    【删除节点】

    使用delete命令可以删除zk上指定的节点

    delete path [version]

    [ 示例:删除higgin节点 ]

    [ delete注意 ]

    若删除的节点存在子节点,那么无法删除该节点,必须先删除子节点,再删除父节点。 

    【Zookeeper的作用】 

    1.master节点选举,主节点挂了以后,从节点就会接手工作,并且保证这个节点是唯一的,这也是所谓的首脑模式,从而保证我们的集群是高可用的。

    2.统一配置文件管理,即只需要一台服务器,就可以把相同配置文件的内容同步更新到其他所有服务器(例如修改redis的统一配置)

    3.发布与订阅,类似消息队列的MQ,dubbo服务提供者会把数据存在znode上,dubbo服务消费者会订阅读取这个数据。

    4.提供分布式锁,分布式环境中不同的进程之间争取资源,类似多线程中的锁。

     5.数据强一致性,在集群中保证数据的强一致性,如图:

  • 相关阅读:
    后台src-app.js详情
    后台中src-router-index.js文件详情
    VUE:如何设置当前页面的背景色
    web移动端项目初始化
    vue路由懒加载及组件懒加载
    浏览器内核
    java 文件读取
    [SUCTF 2019]EasySQL
    Hctf 2016 兵者多诡
    less-17
  • 原文地址:https://www.cnblogs.com/HigginCui/p/9644017.html
Copyright © 2011-2022 走看看