zookeeper客户端

标签: zookeeper
12人阅读 评论(0) 收藏 举报
分类:

1.zookeeper

1.1ZooKeeper特性

  • 全局数据一致:集群中每个服务器保存一份相同的数据副本,client无论连接到哪个服务器,展示的数据都是一致的,这是最重要的特征;
  • 可靠性:如果消息被其中一台服务器接受,那么将被所有的服务器接受。
  • 顺序性:包括全局有序和偏序两种:全局有序是指如果在一台服务器上消息 a在消息 b 前发布,则在所有Server上消息 a 都将在消息b前被发布;偏序是指如果一个消息b在消息 a 后被同一个发送者发布,a 必将排在 b前面。
  • 数据更新原子性:一次数据更新要么成功(半数以上节点成功),要么失败,不存在中间状态;
  • 实时性:Zookeeper 保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。

1.2 ZooKeeper 集群角色

img

  • Leader:

    • Zookeeper 集群工作的核心

事务请求(写操作)的唯一调度和处理者,保证集群事务处理的顺序性;

集群内部各个服务器的调度者。

对于 create,setData,delete 等有写操作的请求,则需要统一转发给 leader 处理,leader 需要决定编号、执行操作,这个过程称为一个事务。

  • Follower:

处理客户端非事务(读操作)请求,转发事务请求给 Leader;

参与集群 Leader 选举投票。

此外,针对访问量比较大的 zookeeper 集群,还可新增观察者角色。

  • Observer:

观察者角色,观察 Zookeeper 集群的最新状态变化并将这些状态同步过来,其对于非事务请求可以进行独立处理,对于事务请求,则会转发给 Leader 服务器进行处理。

不会参与任何形式的投票只提供非事务服务,通常用于在不影响集群事务处理能力的前提下提升集群的非事务处理能力。

1.3ZooKeeper 集群搭建

Zookeeper 集群搭建指的是 ZooKeeper 分布式模式安装。通常由 2n+1台 servers 组成。这是因为为了保证 Leader 选举(基于 Paxos 算法的实现)能过得到多数的支持,所以 ZooKeeper 集群的数量一般为奇数。

Zookeeper 运行需要 java 环境,所以需要提前安装 jdk。对于安装leader+follower 模式的集群,大致过程如下:

  • 配置主机名称到 IP 地址映射配置
  • 修改 ZooKeeper 配置文件

  • 远程复制分发安装文件

  • 设置 myid

  • 启动 ZooKeeper 集群

  • 如果要想使用 Observer 模式,可在对应节点的配置文件添加如下配置:

    peerType=observer

其次,必须在配置文件指定哪些节点被指定为 Observer,如:

server.1:localhost:2181:3181:observer

2.ZooKeeper shell

2.1. 客户端连接

  • 运行 zkCli.sh –server ip 进入命令行工具。

输入 help,输出 zk shell 提示:

img

2.2. shell 基本操作

  • 创建节点

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

其中,-s 或-e 分别指定节点特性,顺序或临时节点,若不指定,则表示持 久节点;acl 用来进行权限控制。

  • 创建顺序节点:

img

  • 创建临时节点:

img

  • 创建永久节点:

img

  • 读取节点

与读取相关的命令有 ls 命令和 get 命令,ls 命令可以列出 Zookeeper 指定节点下的所有子节点,只能查看指定节点下的第一级的所有子节点;get 命令可以获取 Zookeeper 指定节点的数据内容和属性信息。

  • ls path [watch]
  • get path [watch]
  • ls2 path [watch]

img

  • set path data [version]

    • data 就是要更新的新内容,version 表示数据版本。

img

现在 dataVersion 已经变为 1 了,表示进行了更新。

  • 删除节点
  • delete path [version]

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

  • Rmr path

可以递归删除节点。

  • quota

  • setquota -n|-b val path 对节点增加限制。

    • n:表示子节点的最大个数
    • b:表示数据值的最大长度
    • val:子节点最大个数或数据值的最大长度
    • path:节点路径

img

  • listquota path 列出指定节点的 quota

img

子节点个数为 2,数据长度-1 表示没限制

  • delquota [-n|-b] path 删除 quota

  • 其他命令

  • history : 列出命令历史

img

  • redo:该命令可以重新执行指定命令编号的历史命令,命令编号可以通过history 查看

3. ZooKeeper 数据模型

3.1 数据结构图

img

图中的每个节点称为一个 Znode。 每个 Znode 由 3 部分组成:

① stat:此为状态信息, 描述该 Znode 的版本, 权限等信息

② data:与该 Znode 关联的数据

③ children:该 Znode 下的子节点

3.2节点类型

  • Znode 有两种,分别为临时节点和永久节点。节点的类型在创建时即被确定,并且不能改变。

    临时节点:该节点的生命周期依赖于创建它们的会话。一旦会话结束,临时节点将被自动删除,当然可以也可以手动删除。临时节点不允许拥有子节点。

    永久节点:该节点的生命周期不依赖于会话,并且只有在客户端显示执行删除操作的时候,他们才能被删除。
    Znode 还有一个序列化的特性,如果创建的时候指定的话,该 Znode 的名字后面会自动追加一个不断增加的序列号。序列号对于此节点的父节点来说是唯一的,这样便会记录每个子节点创建的先后顺序。它的格式为“%10d”(10 位数字,没有数值的数位用 0 补充,例如“0000000001”)。

    Znode 还有一个序列化的特性,如果创建的时候指定的话,该 Znode 的名字后面会自动追加一个不断增加的序列号。序列号对于此节点的父节点来说是唯一的,这样便会记录每个子节点创建的先后顺序。它的格式为“%10d”(10 位数字,没有数值的数位用 0 补充,例如“0000000001”)。

  • quota 限制是软性限制,还可以继续执行,只是在日志文件打印警告

查看评论

zookeeper客户端 图形化界面

  • 2018年04月08日 22:46
  • 1.53MB
  • 下载

Zookeeper入门学习(三)--Zookeeper客户端使用

一、Zookeeper客户端1、ZooKeeper客户端 (1)使用SSH连接ZooKeeper服务器,然后进入到ZooKeeper安装目录下的bin目录下,然后使用./zkCli.sh -timeo...
  • a314368439
  • a314368439
  • 2017-04-19 16:35:45
  • 1440

ZooKeeper 客户端操作

在ZooKeeper工具包里面提供有一个客户端工具:zookeeper/bin/zkCli.sh。 1、 连接服务器端:可以连接整个ZooKeeper集群中的任意一台主机;zkCli.sh -ser...
  • u012737182
  • u012737182
  • 2016-11-18 02:12:10
  • 2304

15.zookeeper原理解析-客户端与服务器端交互

Zookeeper集群中server数量总是确定的,所以集群中的server交互采用比较可靠的bio长连接模型;不同于集群中sever间交互zookeeper客户端其实数量是未知的,为了提高zooke...
  • u010311445
  • u010311445
  • 2015-05-18 19:09:27
  • 3511

zookeeper客户端命令详解

zookeeper客户端命令详解 简介 查阅了网上相关资料,介绍zookeeper客户端命令并不是非常全面,大多数都是简单介绍ls、get、set、delete、stat这几个简单命令的,下面我把...
  • heihei36
  • heihei36
  • 2017-04-27 18:23:08
  • 6553

zookeeper客户端和服务端交互分析

实例化zookeeper客户端后,客户端会创建ClientCnxn,其表示与服务端的连接交互对象。ClientCnxn将创建两个线程SendThread和EventThread线程。发送线程主要完成请...
  • bestree007
  • bestree007
  • 2014-02-08 23:21:22
  • 1893

ZooKeeper学习笔记-3---ZooKeeper客户端使用

根据上一篇博客的操作,我们已经搭建好一个ZooKeeper集群,接下来我们开始学习使用ZooKeeper客户端对ZooKeeper进行操作。首先,我们要启动zkCli.cmd这个脚本。启动后在不知道任...
  • wangshuang1631
  • wangshuang1631
  • 2016-11-07 15:22:38
  • 2770

ZooKeeper客户端命令

ZooKeeper服务命令:      在准备好相应的配置之后,可以直接通过zkServer.sh 这个脚本进行服务的相关操作 1. 启动ZK服务:       sh bin/zkServ...
  • woshiwanxin102213
  • woshiwanxin102213
  • 2014-01-15 11:35:41
  • 16233

zookeeper的java客户端

需要jar 包: 安装目录 zookeeper-3.4.9.jar lib包下jar包 package com.bigdata.zk; import java.io.IOException; im...
  • u014695188
  • u014695188
  • 2017-03-17 09:22:16
  • 1364

zookeeper的Java客户端API

zookeeper作为一个分布式服务框架,主要用来解决分布式数据一致性问题,对多种语言提供了API。这里主要记录下JAVA客户端API的使用。 1.创建会话 客户端可以通过创建一个ZooKeepe...
  • jin5203344
  • jin5203344
  • 2016-10-23 09:21:48
  • 2328
    个人资料
    等级:
    访问量: 363
    积分: 252
    排名: 30万+
    文章存档