zoukankan      html  css  js  c++  java
  • ZooKeeper详解

    1 ZooKeeper简介                                              

      ZooKeeper是一个为分布式应用设计的开源协调服务。它可以为用户提供同步、配置管理、分组和命名服务。ZooKeeper的文件系统使用了目录树结构,并且使用java编写,但是它也支持c。
      协调服务非常容易出错,而且很难从故障中恢复,例如协调服务很容易处于竞争状态以至于出现死锁。ZooKeeper设计目的就是为了减轻分布式应用程序锁承担的协调任务

    2 数据模型和层次命名空间                                       

      ZooKeeper提供的命名空间与标准的文件系统非常相似。它的名称是由通过斜线分隔的路径名序列所组成的。ZooKeeper中的每一个节点都是通过路径来识别的。
      ZooKeeper中节点的数据模型,这种树形结构的命名空间操作方便且易于理解。

    3 ZooKeeper中的节点和临时节点                       

      上文已经介绍节点是通过像树一样的结构来进行维护的,并且每一个节点通过路径来标识及访问。除此之外,每一个节点还拥有自身的一些信息,并且每一个节点通过路径来标识及访问。除此之外,每一个节点还拥有自身的一些信息,包括:数据、数据长度、创建时间、修改时间等。从节点的这些特性(既含有数据,又通过路径来表示)可以看出,它既可以被看作一个文件,又可以当成目录。我们用Znode表示ZooKeeper的节点。
      具体说Znode维护着数据、ACL、时间戳等包含交换版本号信息的数据结构,它通过对这些数据的管理来让缓存中的数据生效,并且执行协调更新操作。每当Znode中的数据更新时,它所维护的版本号就会增加,这非常类似于数据库中计数器时间戳的操作方式。

    4 ZooKeeper四字命令                                     

      ZooKeeper支持某些特定的四字命令字母与其交互。它们大多是查询命令,用来获取ZooKeeper服务的当前状态及相关信息。用户在客户端可以通过telnet或nc向ZooKeeper提交相应的命令。

    5 ZooKeeper命令行工具                                  

    启动ZooKeeper服务之后,输入如下命令,连接到ZooKeeper服务
    zkCli.sh -server 192.168.1.112:2181

    5.1 使用ZooKeeper命令的简单操作步骤

    1.使用ls命令来查看当前ZooKeeper所包含的内容
    [zk: 192.168.1.111:2181(CONNECTED) 3] ls /
    [zookeeper]
    2.创建一个新的Znode,使用create /zk myData

    这个命令创建了一个新的Znode节点"zk",以及与它关联的字符串:
    [zk: 192.168.1.111:2181(CONNECTED) 4] create /zk myData
    Created /zk
    3.下面我们运行get命令来确认第二步所创建的Znode是否包含我们所创建的字符串:
    [zk: 192.168.1.111:2181(CONNECTED) 9] get /zk
    myData
    cZxid = 0x400000006
    ctime = Fri Jul 19 05:15:48 PDT 2013
    mZxid = 0x400000006
    mtime = Fri Jul 19 05:15:48 PDT 2013
    pZxid = 0x400000006
    cversion = 0
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 6
    numChildren = 0
    4.下面我们通过set命令来对zk所关联的字符串进行设置
    [zk: 192.168.1.111:2181(CONNECTED) 10] set /zk shenlan211314
    cZxid = 0x400000006
    ctime = Fri Jul 19 05:15:48 PDT 2013
    mZxid = 0x400000007
    mtime = Fri Jul 19 05:18:58 PDT 2013
    pZxid = 0x400000006
    cversion = 0
    dataVersion = 1
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 13
    numChildren = 0
    5.下面我们将刚才创建的Znode删除
    delete /zk

    WATCHER::

    WatchedEvent state:SyncConnected type:NodeDeleted path:/zk

  • 相关阅读:
    Leetcode总结之Tree
    Leetcode总结之DFS
    Leetcode总结之Backtracking
    策略模式(设计模式_02)
    面向对象思想设计_计算器小程序(设计模式入门篇_01)
    Android GridView 滑动条设置一直显示状态
    dp暑假专题 训练记录
    dp入门 专题记录 2017-7-26
    dp问题 -挑战例题 2017-7-24
    贪心思维 专题记录 2017-7-21
  • 原文地址:https://www.cnblogs.com/people/p/3199815.html
Copyright © 2011-2022 走看看