1.Apache-Zookeeper介绍及名词

文章目录

  • 1. ZooKeeper介绍
  • 2. 术语及名词
    • 2.1. Client
    • 2.2. Server
    • 2.3. Ensemble
    • 2.4. Leader
    • 2.5. Follower
    • 2.6. 层次命名空间
      • 2.6.1. 版本号
      • 2.6.2. 操作控制列表(ACL)
      • 2.6.3. 时间戳
      • 2.6.4. 数据长度
    • 2.7. Znode
      • 2.7.1 持久节点
      • 2.7.2. 临时节点
      • 2.7.3. 顺序节点
    • 2.8. Sessions(会话)
    • 2.9. Watches(监视)
    • 2.10. ZAB协议
  • 3. 应用场景
    • 3.1. 配置一致
    • 3.2. 高可用
    • 3.3. pub/sub
    • 3.4. 命名服务
    • 3.5. 负载均衡
    • 3.6. 分布式锁

1. ZooKeeper介绍

2. 术语及名词

2.1. Client

客户端,我们的分布式应用集群中的一个节点,从服务器访问信息。对于特定的时间间隔,每个客户端向服务器发送消息以使服务器知道客户端是活跃的。

类似地,当客户端连接时,服务器发送确认码。如果连接的服务器没有响应,客户端会自动将消息重定向到另一个服务器。

2.2. Server

服务器,我们的ZooKeeper总体中的一个节点,为客户端提供所有的服务。向客户端发送确认码以告知服务器是活跃的。

2.3. Ensemble

ZooKeeper服务器组。形成ensemble所需的最小节点数为3。

2.4. Leader

服务器节点,如果任何连接的节点失败,则执行自动恢复。Leader在服务启动时被选举。

2.5. Follower

跟随leader指令的服务器节点。

2.6. 层次命名空间

ZooKeeper节点称为 znode 。每个znode由一个名称标识,并用路径(/)序列分隔。

zookeeper的根节点为“/”znode。在根目录下,你有两个逻辑命名空间 config 和 workers 。

config 命名空间用于集中式配置管理,workers 命名空间用于命名。

在 config 命名空间下,每个znode最多可存储1MB的数据。这与UNIX文件系统相类似,父znode也可以存储数据。这种结构的主要目的是存储同步数据并描述znode的元数据。此结构称为 ZooKeeper数据模型。

ZooKeeper数据模型中的每个znode都维护着一个 stat 结构。一个stat仅提供一个znode的元数据。它由版本号,操作控制列表(ACL),时间戳和数据长度组成。

2.6.1. 版本号

每个znode都有版本号,这意味着每当与znode相关联的数据发生变化时,其对应的版本号也会增加。当多个zookeeper客户端尝试在同一znode上执行操作时,版本号的使用就很重要。

2.6.2. 操作控制列表(ACL)

ACL基本上是访问znode的认证机制。它管理所有znode读取和写入操作。

2.6.3. 时间戳

时间戳表示创建和修改znode所经过的时间。它通常以毫秒为单位。ZooKeeper从“事务ID"(zxid)标识znode的每个更改。Zxid 是唯一的,并且为每个事务保留时间,以便你可以轻松地确定从一个请求到另一个请求所经过的时间。

2.6.4. 数据长度

存储在znode中的数据总量是数据长度。你最多可以存储1MB的数据。

2.7. Znode

Znode被分为持久(persistent)节点,顺序(sequential)节点和临时(ephemeral)节点。

2.7.1 持久节点

即使在创建该特定znode的客户端断开连接后,持久节点仍然存在。默认情况下,除非另有说明,否则所有znode都是持久的。

2.7.2. 临时节点

客户端活跃时,临时节点就是有效的。当客户端与ZooKeeper集合断开连接时,临时节点会自动删除。因此,只有临时节点不允许有子节点。如果临时节点被删除,则下一个合适的节点将填充其位置。临时节点在leader选举中起着重要作用。

2.7.3. 顺序节点

顺序节点可以是持久的或临时的。当一个新的znode被创建为一个顺序节点时,ZooKeeper通过将10位的序列号附加到原始名称来设置znode的路径。例如,如果将具有路径 /myapp 的znode创建为顺序节点,则ZooKeeper会将路径更改为 /myapp0000000001 ,并将下一个序列号设置为0000000002。如果两个顺序节点是同时创建的,那么ZooKeeper不会对每个znode使用相同的数字。顺序节点在锁定和同步中起重要作用。

2.8. Sessions(会话)

会话对于ZooKeeper的操作非常重要。会话中的请求按FIFO顺序执行。一旦客户端连接到服务器,将建立会话并向客户端分配会话ID 。

客户端以特定的时间间隔发送心跳以保持会话有效。如果ZooKeeper集合在超过服务器开启时指定的期间(会话超时)都没有从客户端接收到心跳,则它会判定客户端死机。

会话超时通常以毫秒为单位。当会话由于任何原因结束时,在该会话期间创建的临时节点也会被删除。

2.9. Watches(监视)

监视是一种简单的机制,使客户端收到关于ZooKeeper集合中的更改的通知。客户端可以在读取特定znode时设置Watches。Watches会向注册的客户端发送任何znode(客户端注册表)更改的通知。

Znode更改是与znode相关的数据的修改或znode的子项中的更改。只触发一次watches。如果客户端想要再次通知,则必须通过另一个读取操作来完成。当连接会话过期时,客户端将与服务器断开连接,相关的watches也将被删除。

2.10. ZAB协议

Zookeeper Atomic Broadcast 一致性协议

3. 应用场景

3.1. 配置一致

3.2. 高可用

3.3. pub/sub

3.4. 命名服务

3.5. 负载均衡

3.6. 分布式锁

你可能感兴趣的:(1.Apache-Zookeeper介绍及名词)