zookeeper简介(二)

zookeeper简介(二)

Zookeeper会话机制

session会话机制

280723-20190421155617154-399070915.jpg

  • 一个客户端连接一个会话,由zk分配唯一会话id;
  • 客户端以特定的时间间隔发送心跳以保持会话有效; tickTime
  • 超过会话超时时间未收到客户端的心跳,则判定客户端死了;(默认2倍tickTime)
  • 会话中的请求按FIFO顺序执行。
znode节点数据构成
  • 节点数据:存储的协调数据(状态信息、配置、位置信息等)
  • 节点类型:持久、顺序、临时、临时顺序
  • 名称唯一,命名规范
  • 节点元数据(stat结构)
  • 数据大小上限:1M
  • 一个znode维护了一个属性结构,该结构包括:版本号、ACL变更、时间戳。每次znode数据发生变化,版本号都会递增,这样客户端的读请求可以基于版本号来检索状态相关数据。
  • 每个znode都有一个ACL,用来限制是否可以访问该znode。
  • 在一个命名空间中,对znode上存储的数据执行读和写请求操作都是原子的。

280723-20190421155535812-975531958.jpg

znode—节点类型
  • 临时节点(EPHEMERAL):临时创建的,会话结束节点自动被删除,也可以手动删除,临时节点不能拥有子节点.
  • 持久节点(PERSISTENT):创建后永久存在,除非主动删除。

    临时节点(EPHEMERAL):临时创建的,会话结束节点自动被删除,也可以手动删除,临时节点不能拥有子节点.

  • 临时顺序节点(EPHEMERAL_SEQUENTIAL):具有临时节点特征,但是它会有序列号

  • 持久顺序节点(PERSISTENT_SEQUENTIAL):具有持久节点特征,但是它会有序列号。

节点元数据(stat结构)

每一个Znode都有对应的stat结构,和文件系统类似。stat状态主要包含下面的信息:

  • cZxid. 节点被创建时候的事务ID
  • mZxid 节点最后一次被修改时候的事务ID
  • pZxid 该节点的子节点最后一次被修改时的事务ID。子节点删除或添加才会影响pZxid
  • ctime 节点被创建的时间
  • mtime 节点被修改的世界
  • dataVersion 这个节点数据改变的次数
  • cversion 子节点被改变的次数
  • aclVersion 节点的ACL(访问控制列表被改变的次数)
  • ephemeralOwner 创建该临时节点的 session ID。如果是持久节点,设置为0
  • dataLength 数据内容长度
节点的访问控制(ACL)

zk提供了ACL来控制znode节点的访问,只有符合了ACL控制,才可以操作该节点,否则将无法操作。
Zookeeper支持可配置的认证机制。它利用一个三元组来定义客户端的访问权限:
(scheme:expression, perms) 。其中:

  1. Schema 代表权限控制模式,分别为:
    • World 任何人
    • Auth 不需要ID
    • Digest 用户名和密码方式的认证
    • IP Address IP地址方式的认证
  2. perms(权限),ZooKeeper支持如下权限

    • CREATE: 创建子节点
    • READ: 获取子节点与自身节点的数据信息
    • WRITE:在Znode节点上写数据
    • DELETE:删除子节点
    • ADMIN:设置ACL权限
Znode的Acl只是针对某个节点,不会作用到它的子节点上

转载于:https://www.cnblogs.com/javadevelper/p/10745496.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值