ToB企服应用市场:ToB评测及商务社交产业平台

标题: ZooKeeper 学习笔记 [打印本页]

作者: 西河刘卡车医    时间: 2024-9-25 18:51
标题: ZooKeeper 学习笔记
概述

ZooKeeper 是一个分布式和谐服务,其设计初衷是为分布式软件提供一致性服务。ZooKeeper 提供了一个类似 Linux 文件体系的树形结构,ZooKeeper 的每个节点既可以是目录,也可以是数据,同时 ZooKeeper 提供了对每个节点的监控与通知机制。基于 ZooKeeper 的一致性服务,可以方便地实现分布式锁、分布式推举、服务发现和监控、设置中心等功能
ZooKeeper 是一个基于主备复制的高可用集群,ZooKeeper 的角色包括 Leader、Follower、Observer
Leader:一个运行中的 ZooKeeper 集群只有一个 Leader,Leader 主要有两个职责:一是负责集群数据的写操纵,二是发起并维护各个 Follower 及 Observer 之间的心跳以监控集群的运行状态。在 ZooKeeper 集群中,所有写操纵都必须经过 Leader,只有在 Leader 写操纵完成后,才将写操纵广播到其他 Follower。只有超过半数的节点(不包括 Observer 节点)写入成功时,该写请求才算写成功
Follower:一个 ZooKeeper 集群可以有多个 Follower,Follower 通过心跳和 Leader 保持连接。Follower 主要有两个职责:一是负责集群数据的读操纵,二是到场集群的 Leader 推举。Follower 在接收到一个客户端请求后会先判断该请求是读请求还是写请求,如果是读请求,则 Follower 从本地节点上读取数据并返回给客户端,如果是写请求,则 Follower 将写请求转发给 Leader 处置惩罚。同时,在 Leader 失效后,Follower 必要在集群推举时进行投票
Observer:一个 ZooKeeper 集群可以有多个 Observer,Observer 主要负责对集群数据的读操纵。Observer 的功能与 Follower 类似主要区别是 Observer 无投票权。ZooKeeper 集群在运行过程中要支持更多的客户端并发操纵,就必要增长更多的服务实例,而过多的服务实例会使集群的投票阶段变得复杂,集群选主时间过长,不利于集群故障的快速规复。因此,ZooKeeper 引入 Observer 角色,Observer 不到场投票,只用于接收客户端的连接并响应客户端的读请求,将写请求转发给 Leader 节点,加入更多的 Observer 节点不但提高了 ZooKeeper 集群的吞吐量,也保障了体系的稳定性

ZAB 协议

ZAB(ZooKeeper Atomic Broadcast,ZooKeeper 原子消息广播)协议要通过唯一的事务编号 Zxid(ZooKeeper Transaction id)保集群状态的唯一性
ZAB 协议有两种模式,分别是规复模式(集群选主)和广播模式(数据同步)
ZAB 协议的四个阶段

ZooKeeper 的推举机制和流程

ZooKeeper 的推举机制被定义为:每个 Server 首先都提议自己是 Leader,并为自己投票,然后将投票结果与其他 Server 的选票进行对比,权庞大的胜出,使用权重较大的选票更新自身的选票箱
具体推举过程如下:

Zookeeper 的数据模子

ZooKeeper 使用一个树形结构的命名空间来表现其数据结构,类似文件体系的目录树。ZooKeeper 树中的每个节点都被称为一个 Znode,ZooKeeper 树中的每个节点都可以拥有子节点,ZooKeeper 的每个节点都存储数据信息,同时提供对节点信息的监控操纵
Znode 由三个部分构成:
Znode 节点虽然可以存储数据,但它并不像数据库那样能存储大量的数据。设计 Znode 的初衷是存储分布式应用中的设置文件、集群状态等元数据信息
Znode 的控制访问:
ZooKeeper 的节点有两种,分别是临时节点和永久节点,节点的类型在创建时被确定并且不能改变:
Znode 的节点监控:在ZooKeeper 的每个节点上都有一个 Watch 用于监控节点数据的变革,当节点状态发生改变时会触发 Watch 所对应的操纵。在 Watch 被触发时 ZooKeeper 会向监控该节点的客户端发送一条通知,说明节点的变革情况

Zookeeper 应用场景


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4