• ZooKeeper的基本概念


    ZooKeeper是干啥的?

    ZooKeeper是一个开源的分布式协调服务,他为分布式应用提供了高效且可靠的分布式协调服务,提供了诸如统一命名空间服务,配置服务和分布式锁等分布式基础服务。

    ZooKeeper基本概念

    集群角色

    和Paxos算法中的集群角色类型,ZooKeeper中包含Leader、Follower和Observer三个角色;

    通过一次选举过程,被选举的机器节点被称为Leader,Leader机器为客户端提供读和写服务;

    Follower和Observer是集群中的其他机器节点,唯一的区别就是:Observer不参与Leader的选举过程,也不参与写操作的过半写成功策略。

    一个典型的ZooKeeper集群如下:

    会话

    会话就是一个客户端与服务器之间的一个TCP长连接。客户端和服务器的一切交互都是通过这个长连接进行的;

    会话会在客户端与服务器断开链接后,如果经过了设点的sessionTimeout时间内没有重新链接后失效。

    节点

    节点在ZeeKeeper中包含两层含义:

    1. 集群中的一台机器,我们成为机器节点;
    2. ZooKeeper数据模型中的数据单元,我们成为数据节点(ZNode)。

    ZooKeeper的数据模型是内存中的一个ZNode数,由斜杠(/)进行分割的路径,就是一个ZNode,每个ZNode上除了保存自己的数据内容,还保存一系列属性信息;

    ZooKeeper中的数据节点分为两种:持久节点和临时节点。

    所谓的持久节点是指一旦这个ZNode创建成功,除非主动进行ZNode的移除操作,节点会一直保存在ZooKeeper上;而临时节点的生命周期是跟客户端的会话相关联的,一旦客户端会话失效,这个会话上的所有临时节点都会被自动移除。

    版本

    ZooKeeper为每一个ZNode节点维护一个叫做Stat的数据结构,在Stat中维护了节点相关的三个版本:

    1. 当前ZNode的版本 version
    2. 当前ZNode子节点的版本 cversion
    3. 当前ZNode的ACL(Access Control Lists)版本 aversion

    监听器Watcher

    ZooKeeper允许用户在指定节点上注册一些Watcher,并且在一些特定事件触发的时候,ZooKeeper会通过事件通知到感兴趣的客户端上。

    ACL(Access Control Lists)

    ZooKeeper中定义了5中控制权限:

    1. CREATE:创建子节点的权限
    2. READ:获取节点数据和子节点列表的权限
    3. WRITE:跟新节点数据的权限
    4. DELETE:删除子节点的权限
    5. ADMIN:设置节点ACL的权限。

    其中CREATE和DELETE这两种权限都是针对子节点的权限控制。

    ZooKeeper的数据模型

    上面有提到ZooKeeper的数据模型是一个ZNode节点树,是一个类型与标准文件系统的层次结构,也是使用斜杠(/)进行分割,如下图:

    在ZooKeeper中每一个节点都可以使用其路径唯一标识,如节点p_1的标识为:/app1/p_1

    每个ZNode节点都可以存储自己的数据,还可以拥有自己的子节点目录。

    参考

    http://zookeeper.apache.org/doc/trunk/zookeeperOver.html

    《从Paxos到ZooKeeper分布式一致性原理与实践》

    https://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/

    http://www.cnblogs.com/sunddenly/p/4138580.html

  • 相关阅读:
    MySQL中各数据类型的取值范围
    解决方法:访问接口 "SQLNCLI10" 的架构行集 "DBSCHEMA_TABLES_INFO"。该访问接口支持该接口
    mysql中数据类型N
    有点想鸟
    了解 Microsoft Access 安全性
    用Delphi编写ASP的ActiveX
    用Delphi制作DLL的方法
    功自诚在,利从义来
    手把手教delphi:写你的dll文件--因为想帮兄弟写个dll,把原来压箱底的东东翻出来,快作完了,但要测试先
    还是有一点点累
  • 原文地址:https://www.cnblogs.com/halu126/p/7078637.html
Copyright © 2020-2023  润新知