首页 > 其他分享 >Zookeeper基础-单机部署,目录机构,Zk特性,数据结构等

Zookeeper基础-单机部署,目录机构,Zk特性,数据结构等

时间:2022-11-30 14:35:41浏览次数:40  
标签:zookeeper Zk Zookeeper znode 会话 数据结构 节点 客户端


Zookeeper windows环境安装

环境要求:必须要有jdk环境,本次讲课使用jdk1.8

1.安装jdk

2.安装Zookeeper. 在官网http://zookeeper.apache.org/下载zookeeper.我下载的是zookeeper-3.4.12版本。

解压zookeeper-3.4.6至D:\machine\zookeeper-3.4.12.

在D:\machine 新建data及log目录。

3.ZooKeeper的安装模式分为三种,分别为:单机模式(stand-alone)、集群模式和集群伪分布模式。ZooKeeper 单机模式的安装相对比较简单,如果第一次接触ZooKeeper的话,建议安装ZooKeeper单机模式或者集群伪分布模式。

安装单击模式。 至D:\machine\zookeeper-3.4.12\conf 复制 zoo_sample.cfg 并粘贴到当前目录下,命名zoo.cfg.

目录结构

bin             存放系统脚本

conf            存放配置文件

contrib          zk附加功能支持

dist-maven       maven仓库文件

docs            zk文档

lib              依赖的第三方库

recipes          经典场景样例代码

src             zk源码

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

bin目录

Zookeeper基础-单机部署,目录机构,Zk特性,数据结构等_服务端

其中

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

zkCli为命令行客户端

conf目录

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

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

Zookeeper基础-单机部署,目录机构,Zk特性,数据结构等_客户端_02

Zookeeper基础-单机部署,目录机构,Zk特性,数据结构等_服务端_03

Zookeeper基础-单机部署,目录机构,Zk特性,数据结构等_服务端_04

Zookeeper基础-单机部署,目录机构,Zk特性,数据结构等_服务端_05

Zookeeper基础-单机部署,目录机构,Zk特性,数据结构等_服务端_06

在这挑选几个讲解:

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

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

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

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

以下配置集群中才会使用,后面再讨论

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

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

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

ZK的特性

Zk的特性会从会话、数据节点,版本,Watcher,ACL权限控制,集群角色这些部分来了解,其中重点需要掌握的数据节点与Watcher

会话

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

Zookeeper基础-单机部署,目录机构,Zk特性,数据结构等_zookeeper_07

会话(session)是zookepper非常重要的概念,客户端和服务端之间的任何交互操作都与会话有关

会话状态

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

CONNECTING、CONNECTED、RECONNECTING、RECONNECTED、CLOSE

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

ZK数据模型

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

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

Zookeeper基础-单机部署,目录机构,Zk特性,数据结构等_zookeeper_08

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

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

Zookeeper节点类型

a、Znode有两种类型:

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

b、Znode有四种形式的目录节点(默认是persistent )

PERSISTENT 
PERSISTENT_SEQUENTIAL(持久序列/test0000000019 ) 
EPHEMERAL 
EPHEMERAL_SEQUENTIAL

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

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

对于持久节点和临时节点,同一个znode下,节点的名称是唯一的!

Zookeeper基础-单机部署,目录机构,Zk特性,数据结构等_服务端_09

Zookeeper节点状态属性

Zookeeper基础-单机部署,目录机构,Zk特性,数据结构等_服务端_10

ACL保障数据的安全

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

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

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

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

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

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

 

标签:zookeeper,Zk,Zookeeper,znode,会话,数据结构,节点,客户端
From: https://blog.51cto.com/u_14906615/5899432

相关文章