简介
ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:
配置维护、
命名服务、
分布式同步、
组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
Zookeeper是Google的Chubby一个开源的实现,
是高有效和可靠的协同工作系统,Zookeeper能够用来leader选举,配置信息维护等,
在一个分布式的环境中,需要一个Master实例或存储一些配置信息,确保文件写入的一致性等。
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,包含一个简单的原语集,是Hadoop和Hbase的重要组件。 提供Java和C的接口。
Zookeeper 作为一个分布式的服务框架,
主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,
但是 Zookeeper 并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。
原理
ZooKeeper是以Fast Paxos算法为基础的,paxos算法存在活锁的问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而Fast Paxos作了一些优化,
通过选举产生一个leader,只有leader才能提交propose,具体算法可见Fast Paxos。因此,
要想弄懂ZooKeeper首先得对Fast Paxos有所了解。
ZooKeeper的基本运转流程:
1、选举Leader。
2、同步数据。
3、选举Leader过程中算法有很多,但要达到的选举标准是一致的。
4、Leader要具有最高的zxid。
5、集群中大多数的机器得到响应并follow选出的Leader。
ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.3\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本
统一命名空间
在zookeeper中实现了一个类似file system系统的数据结构,比如/zookeeper/status。 每个节点都对应于一个znode节点。
znode节点的数据结构模型:
znode的数据结构内容:
czxid
The zxid of the change that caused this znode to be created.
mzxid
The zxid of the change that last modified this znode.
ctime
The time in milliseconds from epoch when this znode was created.
mtime
The time in milliseconds from epoch when this znode was last modified.
version
The number of changes to the data of this znode.
cversion
The number of changes to the children of this znode.
aversion
The number of changes to the ACL of this znode.
ephemeralOwner
The session id of the owner of this znode if the znode is an ephemeral node. If it is not an ephemeral node, it will be zero.
dataLength
The length of the data field of this znode.
numChildren
The number of children of this znode.
说明: zxid (ZooKeeper Transaction Id,每次请求对应一个唯一的zxid,如果zxid a < zxid b ,则可以保证a一定发生在b之前)。
配置推送(Watcher)
zookeeper为解决数据的一致性,使用了Watcher的异步回调接口,将服务端znode的变化以事件的形式通知给客户端,主要是一种反向推送的机制,让客户端可以做出及时响应。比如及时更新后端的可用集群服务列表。
- 大小: 34.6 KB
分享到:
相关推荐
《Zookeeper一站式学习资料》是一份全面覆盖Zookeeper基础到高级知识的学习资源包,旨在帮助初学者快速入门并深入理解Zookeeper。这份资料包含了丰富的文本资料、视频教程以及相关的实践代码,是学习分布式协调服务...
通过这些知识点的学习,我们不仅了解了如何在 Linux 环境下安装配置 zookeeper,并且还掌握了基本的操作命令和数据模型的基础知识。这对于深入理解 zookeeper 的工作原理及应用场景非常有帮助。
通过深入学习这个压缩包提供的资料,你将能够掌握ZooKeeper的基础知识,理解其工作原理,并具备在实际项目中运用的能力。同时,持续关注ZooKeeper的最新动态和最佳实践,有助于提升你在分布式系统领域的专业素养。
在"Zookeeper 学习资料 上篇"中,我们可以预见到将要涉及的ZooKeeper核心概念和基础知识点。首先,我们需要理解ZooKeeper的数据模型,这个模型基于一个层次化的命名空间,类似于文件系统。每个节点称为znode,znode...
通过这个《Zookeeper学习视频》压缩包的学习,开发者不仅可以掌握Zookeeper的基础知识,还能进一步提升在分布式系统中应用Zookeeper的技能,为构建稳定、高可用的分布式应用打下坚实基础。在观看视频时,结合实践...
### Zookeeper基础知识详解 #### 一、Zookeeper简介与安装 **Zookeeper**是一款开源的分布式协调服务,它提供了一套完整的解决方案来帮助开发者解决分布式应用程序中的常见问题,如命名服务、配置管理、集群管理等...
### Zookeeper 入门知识点详解 #### 一、Zookeeper 是什么? Zookeeper是一个用于分布式应用协调服务的软件。它可以维护配置信息、提供...以上就是关于Zookeeper入门的一些基础知识和使用方法,希望对大家有所帮助。
《Zookeeper3八本》是针对Apache ZooKeeper的深度学习资料集合,特别关注在...通过深入学习和实践这些知识点,开发者可以在Windows环境下熟练掌握Zookeeper的使用和管理,为构建和维护稳定的分布式系统打下坚实的基础。
本指南涵盖了Zookeeper的基础知识、安装部署方法以及一些实用示例,旨在帮助读者快速掌握如何利用Zookeeper来构建可靠的分布式系统。通过这些内容的学习,读者不仅能够理解Zookeeper的核心功能,还能够学会如何在...
1. **ZooKeeper编程指南(一)**:这部分可能介绍了ZooKeeper的基础知识,包括它的设计目标、架构、基本数据模型(如节点、路径、数据版本和ACLs)、会话机制以及基本操作API。可能还涉及到了ZooKeeper如何实现强...
同时,对于想要深入研究分布式系统的开发者,这也会是一个很好的起点,为进一步学习Hadoop、Kafka、Spark等大数据框架打下坚实的基础。记住,理论知识与实践相结合,是学习任何技术的关键。在学习过程中,不断动手...
整体而言,《ZooKeeper:分布式过程协同技术详解》为读者提供了一个全面的ZooKeeper学习和使用指南,不仅涵盖了ZooKeeper的基础知识和API使用,还深入到其内部机制和集群管理的层面,使读者能够全面掌握ZooKeeper的...
《Zookeeper服务器管理手册》是IT领域中针对分布式协调服务Zookeeper的一份详细指南,它涵盖了从基础到高级的各种操作和管理知识。Zookeeper是由Apache软件基金会开发的一个开源项目,常用于分布式系统的数据存储、...
而“尚硅谷大数据技术之Zookeeper.xmind”思维导图,则是将整个Zookeeper的知识体系以图形化的形式展现出来,帮助学习者梳理知识点,形成全面的认知框架。 总的来说,这个教程提供了从理论到实践的全面学习材料,...
《Zookeeper入门到精通》教学视频及文档涵盖了分布式协调...通过学习《Zookeeper入门到精通》的教学视频和文档,你将全面掌握Zookeeper的基础知识,并能灵活运用到实际的分布式系统开发和运维中,提升你的IT技能水平。
在深入理解Zookeeper的使用之前,我们首先需要熟悉其API的基础知识。 一、Zookeeper的数据模型 Zookeeper的数据模型是一个层次化的命名空间,类似于文件系统的目录结构。每个节点称为ZNode,可以存储数据并具有子...
通过以上步骤,读者能够掌握Zookeeper的基础知识和本地安装过程,为进一步学习和应用Zookeeper在分布式系统中的协调服务打下基础。对于更多关于Java、大数据、前端、Python及人工智能的学习资源,可以通过尚硅谷官网...
总之,《从Paxos到Zookeeper分布式一致性原理与实践》是一本深入浅出的Zookeeper学习资料,无论是初学者还是经验丰富的开发者,都能从中获益匪浅,提升自己在分布式一致性领域的理论知识和实践经验。通过阅读这本书...
关于Zookeeper-3.3.6的深入学习,可以参考博客《Zookeeper详解》(http://blog.csdn.net/u011877584/article/details/78443651),该博客详细介绍了Zookeeper的基础知识和实践案例,对于初学者来说是一份不错的参考...