Zookeeper基本概念

Zookeeper基本概念

一. Zookeeper概述

Zookeeper是一个分布式协调服务,分布式应用程序可以基于它来实现注入数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举和分布式锁等功能。

二. Zookeeper的特性

  1. 顺序一致性

    对于同一个客户端发出的事务操作,Zookeeper会严格按照顺序执行。

  2. 原子性

    对于一个事务操作,集群上的所有节点的结果都是一样的,不会存在一部分节点操作成功,而另一部分节点失败的情况。

  3. 单一视图

    无论客户端访问集群中的哪个节点,所看到的数据模型都是一样的。

  4. 可靠性

    一旦服务端成功执行了一个事务操作,并完成了对客户端的响应,那么该操作所带来的结果就会被一直保存起来,直到另一个事务修改了该结果。

  5. 实时性

    严格意义上讲,Zookeeper保证的是最终一致性,即事务操作发起后,Zookeeper能够给保证在一段时间内,客户端一定能从服务器上读取到最新的数据。

三. Zookeeper的设计目标

  1. 简单的数据模型

    Zookeeper提供了一个类似于Unix文件系统的数据结构,称为ztree,而其中的每个节点称为一个znode。每个znode都可以保存数据,并且维护自己的元数据信息。ztree的结构如下图所示:

    在这里插入图片描述

    与Unix文件系统不同的是,Zookeeper将全量数据都保存在内存中,以实现服务器集群的高吞吐和低延时。

  2. 方便构建集群

    一个Zookeeper集群通常由一组机器组成,一般3~5台机器就可以构建一个Zookeeper集群。集群模式如下图:

    在这里插入图片描述

    组成集群的每台机器都会在内存中维护当前的服务器状态,并且每两台机器之间都保存互相通信。只要集群中有超过一半的节点正常工作,整个集群就能够正常对外提供服务。

    Zookeeper客户端可以选择和集群中的任意一台机器建立TCP连接。如果客户端与该节点的连接异常断开,则客户端会自动重连到其他节点上。

  3. 顺序访问

    对于客户端的每个更新请求,Zookeeper都会为该请求分配一个全局递增的唯一id,这个id反映了所有事务操作的先后顺序。应用程序可以基于Zookeeper的这一特性,实现更改层次的同步原语。

  4. 高性能

    由于Zookeeper将所有数据保存在内存中,并直接服务于客户端的所有非事务请求,因此Zookeeper的读性能很高,十分适合用于大量读请求的场景。

四. 集群角色

  1. Leader:由集群选举产生,每个集群有且仅有一个Leader,可以为客户端提供读写服务。
  2. Follower:提供读服务,并参与集群选举。
  3. Observer:仅提供读服务,不参与集群的选举等操作。Observer可以在不影响集群写性能的情况下,提升读性能。

五. 会话(Session)

Session为客户端与Zookeeper服务器建立的一个TCP长连接。在客户端启动,并向服务器建立连接成功后,一个Session的生命周期就开始了。客户端可以通过Session向服务器发送请求并接收响应,同时还可以接收来自服务器的Watch事件通知。客户端通过心跳检测来保持与客户端的有效会话。

六. 数据节点(ZNode)

如前文所述,Zookeeper将全量数据保存在内存中,并以树形结构组织起来。用“/”进行分割的一个路径,就是一个Znode,如/zookeeper/data。每个Znode上都会保存自己的数据内容,同时还会保存一系列属性信息(节点元信息)。

Znode有以下几种类型:

  1. 持久节点:除非主动进行移除操作,否则持久节点会一直保存在Zookeeper上。
  2. 临时节点:节点的生命周期与客户端会话绑定,一旦客户端会话失效,则该客户端创建的所有临时节点都会被移除。
  3. 顺序节点:该类型的节点有一个特殊的属性:Sequential。一旦节点被标记上这个属性,那么该节点在创建时,Zookeeper会自动在其节点名称后面追加一个整形数字,这个数字是由其父节点维护的一个自增id。
  4. 非顺序节点:无Sequential标记,也即名称后面不会自动追加数字。

七. 版本(Version)

对于每一个Znode,Zookeeper都会为其维护一个叫做Stat的数据结构,Stat中记录了这个ZNode的三个数据版本:

  1. version:当前ZNode的版本
  2. cversion:当前ZNode子节点的版本
  3. aversion:当前ZNode的ACL版本

八. 事件监听器(Watcher)

Watcher是Zookeeper中一个十分重要的特性。Zookeeper允许用户在指定节点上注册一些Watcher,这样在一些特定事件触发的时候,Zookeeper服务器会将该事件通知给所有感兴趣的客户端。Watcher机制是Zookeeper实现分布式协调服务的重要特性。

九. ACL权限

Zookeeper采用ACL(Access Control Lists)策略来进行权限控制,与Unix文件系统的权限机制类似。Zookeeper定义了以下5种权限:

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

其中尤其要注意的是,CREATE和DELETE都是针对子节点的权限控制。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张申傲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值