zookeeper系列(六)zookeeper的系统模型(数据树)

做者:leesf    掌控之中,才会成功;掌控以外,注定失败。 出处:http://www.cnblogs.com/leesf456/p/6072597.html尊重做者原创,奇文共欣赏,你们共同窗习进步;html

1、前言数据库

  前面已经讲解了Zookeeper的一些应用场景,可是并无深刻到Zookeeper内部进行分析,本篇将讲解其系统模型。安全

2、系统模型服务器

  2.1 数据模型分布式

  Zookeeper的数据节点称为ZNode,ZNode是Zookeeper中数据的最小单元,每一个ZNode均可以保存数据,同时还能够挂载子节点,所以构成了一个层次化的命名空间,称为树。学习

  在Zookeeper中,事务是指可以改变Zookeeper服务器状态的操做,通常包括节点建立与删除,数据节点内容更新和客户端会话建立与失效,对于每一个事务请求,Zookeeper都会为其分配一个全局惟一的事务ID,用ZXID表示,一般是64位的数字,每一个ZXID对应一次更新操做,从这些ZXID中能够间接地识别出Zookeeper处理这些更新操做请求的全局顺序。编码

  2.2 节点特性加密

  在Zookeeper中,每一个数据节点都是由生命周期的,类型不一样则会不一样的生命周期,节点类型能够分为持久节点(PERSISTENT)、临时节点(EPHEMERAL)、顺序节点(SEQUENTIAL)三大类,能够经过组合生成以下四种类型节点线程

  1. 持久节点(PERSISTENT)。节点建立后便一直存在于Zookeeper服务器上,直到有删除操做来主动清楚该节点。htm

  2. 持久顺序节点(PERSISTENT_SEQUENTIAL)。相比持久节点,其新增了顺序特性,每一个父节点都会为它的第一级子节点维护一份顺序,用于记录每一个子节点建立的前后顺序。在建立节点时,会自动添加一个数字后缀,做为新的节点名,该数字后缀的上限是整形的最大值。

  3. 临时节点(EPEMERAL)。临时节点的生命周期与客户端会话绑定,客户端失效,节点会被自动清理。同时,Zookeeper规定不能基于临时节点来建立子节点,即临时节点只能做为叶子节点。

  4. 临时顺序节点(EPEMERAL_SEQUENTIAL)。在临时节点的基础添加了顺序特性。

  每一个节点除了存储数据外,还存储了节点自己的一些状态信息,可经过get命令获取。

  2.3 版本--保证分布式数据原子性操做

  每一个数据节点都具备三种类型的版本信息,对数据节点的任何更新操做都会引发版本号的变化。

  version-- 当前数据节点数据内容的版本号

  cversion-- 当前数据子节点的版本号

  aversion-- 当前数据节点ACL变动版本号

  上述各版本号都是表示修改次数,如version为1表示对数据节点的内容变动了一次。即便先后两次变动并无改变数据内容,version的值仍然会改变。version能够用于写入验证,相似于CAS。

  2.4 Watcher--数据变动通知

  Zookeeper使用Watcher机制实现分布式数据的发布/订阅功能。

  Zookeeper的Watcher机制主要包括客户端线程、客户端WatcherManager、Zookeeper服务器三部分。客户端在向Zookeeper服务器注册的同时,会将Watcher对象存储在客户端的WatcherManager当中。当Zookeeper服务器触发Watcher事件后,会向客户端发送通知,客户端线程从WatcherManager中取出对应的Watcher对象来执行回调逻辑。

  2.5 ACL--保障数据的安全

  Zookeeper内部存储了分布式系统运行时状态的元数据,这些元数据会直接影响基于Zookeeper进行构造的分布式系统的运行状态,如何保障系统中数据的安全,从而避免因误操做而带来的数据随意变动而致使的数据库异常十分重要,Zookeeper提供了一套完善的ACL权限控制机制来保障数据的安全。

  咱们能够从三个方面来理解ACL机制:权限模式(Scheme)、受权对象(ID)、权限(Permission),一般使用"scheme:id:permission"来标识一个有效的ACL信息。

  权限模式用来肯定权限验证过程当中使用的检验策略,有以下四种模式:

  1. IP,经过IP地址粒度来进行权限控制,如"ip:192.168.0.110"表示权限控制针对该IP地址,同时IP模式能够支持按照网段方式进行配置,如"ip:192.168.0.1/24"表示针对192.168.0.*这个网段进行权限控制。

  2. Digest,使用"username:password"形式的权限标识来进行权限配置,便于区分不一样应用来进行权限控制。Zookeeper会对其进行SHA-1加密和BASE64编码。

  3. World,最为开放的权限控制模式,数据节点的访问权限对全部用户开放。

  4. Super,超级用户,是一种特殊的Digest模式,超级用户能够对任意Zookeeper上的数据节点进行任何操做。

  受权对象是指权限赋予的用户或一个指定实体,如IP地址或机器等。不一样的权限模式一般有不一样的受权对象。

  权限是指经过权限检查能够被容许执行的操做,Zookeeper对全部数据的操做权限分为CREATE(节点建立权限)、DELETE(节点删除权限)、READ(节点读取权限)、WRITE(节点更新权限)、ADMIN(节点管理权限)

3、总结

  本篇博客介绍了Zookeeper中的系统模型,系统模型的五个部分是Zookeeper提供一系列服务的基础,以后笔者会结合源码进行相应分析。

相关文章
相关标签/搜索