乐趣区

关于zookeeper: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 是不能解决申请的

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

退出移动版