序【1】zookeeper概念

版权声明:未经本人同意不能转载。可联系 ( [email protected] ) https://blog.csdn.net/jaryn_fang/article/details/81273279

zoo.cfg配置文件

#zookeeper中最小的时间单位长度 (ms)
tickTime=2000

#  follower节点启动后与leader节点完成数据同步的时间
initLimit=10

# leader节点和follower节点进行心跳检测的最大延时时间
syncLimit=5

#  表示zookeeper服务器存储快照文件的目录
dataDir=/tmp/zookeeper

# 表示配置 zookeeper事务日志的存储路径,默认指定在dataDir目录下
dataLogDir

# 表示客户端和服务端建立连接的端口号: 2181
clientPort

zookeeper中的一些概念

数据模型

zookeeper的数据模型和文件系统类似,每一个节点称为:znode. 是zookeeper中的最小数据单元。每一个znode上都可以保存数据和挂载子节点。 从而构成一个层次化的属性结构

节点特性

持久化节点 : 节点创建后会一直存在zookeeper服务器上,直到主动删除
持久化有序节点 :每个节点都会为它的一级子节点维护一个顺序
临时节点 : 临时节点的生命周期和客户端的会话保持一致。当客户端会话失效,该节点自动清理
临时有序节点 : 在临时节点上多勒一个顺序性特性

Watcher

zookeeper提供了分布式数据发布/订阅,zookeeper允许客户端向服务器注册一个watcher监听。当服务器端的节点触发指定事件的时候
会触发watcher。服务端会向客户端发送一个事件通知
watcher的通知是一次性,一旦触发一次通知后,该watcher就失效

ACL

zookeeper提供控制节点访问权限的功能,用于有效的保证zookeeper中数据的安全性。避免误操作而导致系统出现重大事故。
CREATE /READ/WRITE/DELETE/ADMIN

zookeeper的基本命令操作

1. create [-s] [-e] path data acl
-s 表示节点是否有序
-e 表示是否为临时节点
默认情况下,是持久化节点

2. get path [watch]
获得指定 path的信息

3.set path data [version]
修改节点 path对应的data
乐观锁的概念
数据库里面有一个 version 字段去控制数据行的版本号

4.delete path [version]
删除节点

stat信息

cversion = 0       子节点的版本号
aclVersion = 0     表示acl的版本号,修改节点权限
dataVersion = 1    表示的是当前节点数据的版本号

czxid    节点被创建时的事务ID
mzxid   节点最后一次被更新的事务ID
pzxid    当前节点下的子节点最后一次被修改时的事务ID

ctime = Sat Aug 05 20:48:26 CST 2017
mtime = Sat Aug 05 20:48:50 CST 2017
ephemeralOwner = 0x0   创建临时节点的时候,会有一个sessionId 。 该值存储的就是这个sessionid
dataLength = 3    数据值长度
numChildren = 0  子节点数

集群角色

  • Leader: 接受所有Follower的提案并协调。负责与所有Follower进行数据同步。
  • Folloewer: 直接为客户端服务,参与投票,与Leader进行数据同步。
  • Observer: 直接为客户端服务,不参与投票,与Leader进行数据同步。

权限的控制模型

  • schema:授权对象,如root:root
  • ip: 192.168.1.1
  • digest: username:password
  • world: 开放式的权限控制模式,数据节点的访问权限对所有用户开放。
  • super:超级用户,可以对上的数据节点进行操作

连接状态

  • KeeperStat.Expired: 在一定时间内客户端没有收到服务器的通知, 则认为当前的会话已经过期了。
  • KeeperStat.Disconnected: 断开连接的状态
  • KeeperStat.SyncConnected: 客户端和服务器端在某一个节点上建立连接,并且完成一次version、zxid同步
  • KeeperStat.authFailed: 授权失败

事件类型

  • NodeCreated: 当节点被创建的时候,触发
  • NodeChildrenChanged: 表示子节点被创建、被删除、子节点数据发生变化
  • NodeDataChanged: 节点数据发生变化
  • NodeDeleted: 节点被删除
  • None: 客户端和服务器端连接状态发生变化的时候,事件类型就是None

猜你喜欢

转载自blog.csdn.net/jaryn_fang/article/details/81273279