微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

03 | Zookeeper 的基本介绍

1. 什么是 Zookeeper?

Zookeeper 是一个开源的高效可靠的分布式协同服务

可以通过 Zookeeper 实现统一配置管理、统一命名服务、分布式锁、集群管理等

Zookeeper 更适用于存储和协同相关的关键数据,更适用于读多写少的应用场景

Zookeeper 有哪些特性(官方说是构建复杂服务的保证)?

  • 顺序一致性(事务请求都是有序执行的)
  • 原子性
  • 单一视图(从集群任一节点获取的数据都是一致的)
  • 可靠性
  • 实时性

2. Zookeeper 的数据模型

Zookeeper 的数据模型是类似文件系统的层次模型

Zookeeper 的层次模型被称为 data-tree,date-tree 的每个节点叫做 znode:

  • znode 是类 unix 风格的路径名来定位的,eg:/a/b,表示 znode节点 a 下的 子节点 b

  • znode 的所有操作都是 wait-free 操作(一个操作是否执行完并不影响其他操作的执行)

  • znode 分类

    • 持久性的 znode,创建之后一直保留,不会丢失
    • 临时性的 znode,宕机或者超时就会丢失
    • 持久顺序性的 znode,具有顺序性的持久性的 znode
    • 临时顺序性的 znode

    znode 的顺序性直观的表现在 znode 命名上,每一个顺序性的 znode 关联一个单调递增的整数,可能是后缀,也可能是命名

  • znode 的基本操作:

    • create:创建节点
    • delete删除节点
    • setData:写入需保存的数据到节点内
    • exists:判断节点是否存在
    • getData获取节点保存的数据
    • getChildren获取节点下所有子节点

3. Zookeeper 集群角色

Zookeeper 的集群角色有:

  1. leader:负责处理所有事务请求(写操作),同时也可以处理读操作,协调集群内部服务
  2. Follower:只能处理非事务请求(读操作),
  3. Observer:只能处理读请求,转发写请求给 leader 处理

Zookeeper 是一主多从的架构,所以集群中只能有一个 leader

集群搭建的配置中看,我们并没有指定集群的角色,因为 Zookeeper 集群的 leader 是运行时动态选举出来的:一个节点获取超过半数节点的票数,就可以当选 leader

如果 leader 失联,则从 Follower 中重新选举,Observer 并不参与选举

Observer 负责观察 Zookeeper 集群的状态并进行同步,在不影响集群的情况下降低 leader 的复杂程度

因为 Follower 数量比较多的时候,投票的过程会成为 Zookeeper 的性能瓶颈,因为选举过程 Zookeeper 是不能处理请求的

具体的选举过程后面在学习

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐