Zookeeper的概述

Apache Zookeeper是一个开源的分布式协调服务,源于雅虎研究院,用于解决分布式环境中的数据一致性问题。它提供配置管理、名字服务、分布式锁和集群管理等功能,采用类似Unix目录节点树的数据模型,确保全局数据一致性。Zookeeper集群由 Leader、Follower 和 Observer 角色构成,保证高可用性和事务处理顺序性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

下载地址

Zookeeper的由来

Zookeeper是什么

Zookeeper的特点

ZooKeeper集群的角色

Zookeeper的数据模型


下载地址

官网首页:https://zookeeper.apache.org/

Zookeeper的由来

Zookeeper最早起源于雅虎研究院的一个研究小组。在当时,研究人员发现,在雅虎内部很多大型系统基本都需要依赖一个类似的系统来进行分布式协调,但是这些系统往往都存在分布式单点问题。所以,雅虎的开发人员就试图开发一个通用的无单点问题的分布式协调框架,以便让开发人员将精力集中在处理业务逻辑上。

关于“ZooKeeper”这个项目的名字,其实也有一段趣闻。在立项初期,考虑到之前内部很多项目都是使用动物的名字来命名的(例如著名的Pig项目),雅虎的工程师希望给这个项目也取一个动物的名字。时任研究院的首席科学家RaghuRamakrishnan开玩笑地说:“在这样下去,我们这儿就变成动物园了!”此话一出,大家纷纷表示就叫动物园管理员吧一一一因为各个以动物命名的分布式组件放在一起,雅虎的整个分布式系统看上去就像一个大型的动物园了,而Zookeeper正好要用来进行分布式环境的协调一一于是,Zookeeper的名字也就由此诞生了。
 

顾名思义 zookeeper 就是动物园管理员,他是用来管 hadoop(大象)、Hive(蜜蜂)、pig(小
猪)的管理员, Apache Hbase 和 Apache Solr 的分布式集群都用到了 zookeeper;Zookeeper:
是一个分布式的、开源的程序协调服务,是 hadoop 项目下的一个子项目。他提供的主要功
能包括:配置管理、名字服务、分布式锁、集群管理。
 

Zookeeper是什么

1. zookeeper 是⼀个为分布式应⽤程序提供的⼀个分布式开源协调服务框架。是 Google的 Chubby
的⼀个开源实现,是 Hadoop Hbase 的重要组件。主要⽤于解决分布式集群中应⽤系统的⼀致性问题。
2. 提供了基于类似 Unix 系统的⽬录节点树⽅式的数据存储。
3. 可⽤于维护和监控存储的数据的状态的变化,通过监控这些数据状态的变化,从⽽达到基于数据的集群管理
4. 提供了⼀组原语 ( 机器指令 ) ,提供了 java c 语⾔的接⼝

Zookeeper的特点

1. 也是⼀个分布式集群,⼀个领导者(leader),多个跟随者(follower).

2. 集群中只要有半数以上的节点存活, Zookeeper 集群就能正常服务。
3. 全局数据⼀致性:每个 server 保存⼀份相同的数据副本, client ⽆论连接到哪个server,数据都是⼀致的。
4. 更新请求按顺序进⾏:来⾃同⼀个 client 的更新请求按其发送顺序依次执⾏
5. 数据更新的原⼦性:⼀次数据的更新要么成功,要么失败
6. 数据的实时性:在⼀定时间范围内, client 能读到最新数据。

ZooKeeper集群的角色

1.Leader

Zookeeper 集群工作的核心

事务请求 (写操作) 的唯一调度和处理者,保证集群事务处理的顺序性

集群内部各个服务器的调度者

对于 create, setData, delete 等有写操作的请求,则需要统一转发给leader 处理.leader 需要决定编号、执行操作,这个过程称为一个事务

2.Follower

处理客户端非事务(读操作)请求,转发事务请求给 Leader

参与集群Leader 选举投票

3.Observer(对于访问量比较大的集群,可以新增观察者角色)

观察者角色,观察Zookeeper集群的最新状态变化并将这些状态同步过来,对于非事务请求可以进行独立处理,对于事务请求,则会转发给 Leader服务器进行处理

不会参与任何形式的投票只提供非事务服务,通常用于在不影响集群事务处理能力的前提下提升集群的非事务处理能力

Zookeeper的数据模型

        Zookeeper的数据模型采⽤的与 Unix ⽂件系统类似的层次化的树形结构。我们可以 将其理解为⼀个具有⾼可⽤特征的⽂件系统。这个⽂件系统中没有⽂件和⽬录,⽽是 统⼀使⽤" 节点 "(node) 的概念,称之为 znode znode 既可以作为保存数据的容器 ( 如 同⽂件), 也可以作为保存其他 znode 的容器 ( 如同⽬录 ) 。所有的 znode 构成了⼀个层次 化的命名空间。

图中的每个节点称为一个Znode

每个 Znode 由3部分组成:

stat:此为状态信息,描述该 Znode 的版本,权限等信息

data:与该Znode 关联的数据

children:该 Znode下的子节点

1,Zookeeper 被设计⽤来实现协调服务(这类服务通常使⽤⼩数据⽂件 ) ,⽽不是⽤于 ⼤容量数据存储,因此⼀个znode 能存储的数据被限制在 1MB 以内,
2.每个 znode 都可以通过其路径唯⼀标识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值