`
jiangwenfeng762
  • 浏览: 288240 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

zookeeper学习笔记

 
阅读更多

ZooKeeper是什么?

高可用的高性能的分布式系统协调服务。局部不可用是分布式系统的固有特征,ZooKeeper可以很好的地处理这种情况。

下面从三个方面来理解ZooKeeper服务:数据模型、操作、实现

数据模型

可以把zookper看成一个文件系统,文件系统中的所有文件形成一个数状结构,zookeeper维护着这样的树形层次结构,树中的节点称为znode。每个znode有一个与之相关联的ACL(Access Control List)。这种数据模型示意图如下:

znode通过路径被引用,而且要采用绝对路径,即必须以/开头。znode存储的数据要<1m。

znode类型

  短暂znode:回话结束,zookeeper就会把短暂znode删除,短暂znode不可以有子节点。

  持久znode:回话结束也不会被删除,除非客户端明确要删除此znode,持久znode可以有子节点。

对于在特定时刻需要知道有哪些分布式资源可用的应用来说,使用短暂znode比较合适。

znode的观察机制

znode以某种方式发生变化时,“观察”(watch)机制可以让客户端得到通知。可以针对ZooKeeper服务的“操作”来设置观察,该服务的其他操作可以触发观察。比如,客户端可以对某个客户端调用exists操作,同时在它上面设置一个观察,如果此时这个znode不存在,则exists返回false,如果一段时间之后,这个znode被其他客户端创建,则这个观察会被触发,之前的那个客户端就会得到通知。

 

操作

ZooKeeper有9种基本操作:

操作

描述

create

创建一个znode(必须有父节点)

delete

删除一个znode(该znode不能有任何子节点)

exists

测试一个znode是否存在,并且查询它的元数据

getACL,setACL

获取/设置一个znodeACL

getChildren

获取一个znode的子节点列表

getData,setData

获取/设置一个znode所保存的数据

sync

将客户端的znode视图与ZooKeeper同步

 Zookeeper中的更新操作是有条件的。在使用delete或者setData操作时必须提供被更新znode的版本号,如果版本号不匹配,则更新操作失败。

API

目前主要有java和C两种客户端,每种操作都有同步和异步两种执行方式。

观察触发器

可以设置观察的操作:exists,getChildren,getData

可以触发观察的操作:create,delete,setData

 

观察触发器

设置观察的操作

create

delete

setData

znode

子节点

znode

子节点

 

exists

NodeCreated

 

NodeDeleted

 

NodeDataChanged

getData

   

NodeDeleted

 

NodeDataChanged

getChildren

 

NodeChildrenChanged

NodeDeleted

NodeChildrenChanged

 

NodeCreated:节点创建事件

NodeDeleted:节点被删除事件

NodeDataChanged:节点数据改变事件

NodeChildrenChanged:节点的子节点改变事件

 

ACL

每个znode被创建时都会带有一个ACL列表,用于决定谁可以对它执行何种操作。

ACL权限

允许的操作

CREATE

create(子节点)

READ

getChildren

getData

WRITE

setData

DELETE

delete(子节点)

ADMIN

setACL

每个ACL都是身份验证模式、符合该模式的一个身份和一组权限的组合。身份验证模式有三种:
digest:用户名,密码

host:通过客户端的主机名来识别客户端

ip: 通过客户端的ip来识别客户端

所以我们可以类似这样构建一个ACL类:

new ACL(Perms.READ,new Id("host","example.com"));

这个ACL对应的身份验证模式是host

符合该模式的身份是example.com

权限的组合是:READ

实现

Zookeeper有两种运行模式:

独立模式(standalone mode):只运行在一台服务器上,适合测试环境

复制模式(replicated mode):运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble)。Zookeeper通过复制来实现高可用性,只要集合体中半数以上的机器处于可用状态,它就能够保证服务继续。为什么一定要超过半数呢?这跟Zookeeper的复制策略有关:zookeeper确保对znode树的每一个修改都会被复制到集合体中超过半数的机器上。

生产环境,zookeeper集群的服务器数目应该是奇数。

Zookeeper集群中的角色及其职责

领导者

  1.管理写请求

跟随者

  1.响应客户端的读请求

  2.负责把客户端提交的写请求转发给领导者

 

回话

客户端与zookeeper集群中的某个服务器建立连接,就建立了一个回话,回话可以过期,可以设置ping周期来防止回话过期。

滴答(tick time):定义了zookeeper中的基本时间周期,其他设置都是根据滴答参数来定义的。2个滴答=<回话时间<=20个滴答时间

状态

  CONNECTING,CONNECTED,CLOSED

 

Zookeeper采用的算法:Zab(待续)

leader选举

原子广播

分享到:
评论

相关推荐

    Zookeeper学习笔记.docx

    ZooKeeper 学习笔记 ZooKeeper 是一个开源的分布式协调服务,由 Hadoop 的创始人 Doug Cutting 等人开发。它为分布式应用提供了一个高效、可靠的协调机制,帮助开发者快速构建高可用、可扩展的分布式系统。 ...

    Zookeeper学习笔记

    【Zookeeper学习笔记】 Zookeeper是一个分布式协调服务,它的核心目标是简化分布式环境下的数据管理与系统协调。作为Apache Hadoop和HBase的重要组件,Zookeeper提供了简单的原语集,支持分布式应用程序之间的通信...

    基于Java语言的Zookeeper学习笔记设计源码

    该项目为基于Java语言的Zookeeper学习笔记设计源码,总计包含20个文件,具体构成包括15个Java源文件、3个PNG图片文件以及1个Markdown文件。此外,项目还包含1个XML配置文件,适用于学习和实践Zookeeper相关知识。

    Zookeeper学习笔记.pdf

    Zookeeper是一种重要的分布式协调服务,尤其在处理高可用性、高性能的应用场景中。它最初设计的核心功能是提供分布式锁服务,但随着社区的发展,Zookeeper的功能得到了扩展,现在还用于配置维护、组服务、分布式消息...

    ZooKeeper学习笔记

    ### ZooKeeper概述 ZooKeeper,如同其名字所暗示的那样,扮演着“动物园管理员”的角色,主要负责管理和协调各种分布式应用程序(如Hadoop、Hive、Pig等)。它是一个开源的分布式协调服务框架,旨在帮助开发者解决...

    zookeeper学习笔记.pptx

    本文适合但不限于软件开发人员阅读。本文档能够使阅读者对zookeeper有一个宏观且全面的了解,内容主要包含zookeeper架构、数据模型、读写及工作原理、典型应用场景、指令汇总等,

    2021尚硅谷技术之Zookeeper笔记

    总的来说,尚硅谷2021年的ZooKeeper笔记提供了一套全面的学习资源,帮助开发者深入了解ZooKeeper的工作原理及其在分布式系统中的关键作用。通过深入学习和实践,可以提升在分布式协调领域的技术水平。

    zookeeper资料

    “zookeeper学习笔记.vsdx”可能是一个Visio图表,用于可视化Zookeeper的数据结构、工作流程或架构;而“zookeeper-trunk”可能是一个源码仓库,包含Zookeeper的源代码,适合深入理解其内部机制和进行二次开发。 ...

    Zookeeper学习资源和笔记(附代码)

    Zookeeper是Apache Hadoop项目下的一个子项目,它是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现。...通过深入学习和实践,可以更好地应对分布式环境中的各种挑战。

    zookeeper完整学习笔记

    【Zookeeper概述】 Apache ZooKeeper 是一款开源的分布式协调服务,设计用于管理和简化分布式环境中的数据协调任务。它提供了一种简单、高可用且容错的机制,使得开发者可以专注于核心业务逻辑,而不是复杂的分布式...

    zookeeper笔记

    ### Zookeeper概述 Zookeeper是一种分布式协调服务框架,它的核心任务是为用户的分布式应用程序提供一系列的协调...无论是从其提供的服务还是从其内部的机制来看,Zookeeper都是值得深入学习和掌握的重要技术之一。

    Hbase与zookeeper笔记备份.rar

    本篇笔记主要围绕这两个技术进行深入探讨,结合尚硅谷的视频教程资源,旨在帮助读者全面理解并掌握这两者的核心知识。 一、Zookeeper:分布式协调服务 Zookeeper是由Apache开发的一款开源分布式协调服务,它提供了...

    学习笔记--zookeeper

    【Zookeeper概述】 Zookeeper是Apache Hadoop的一个子项目,主要设计用于解决分布式环境中的数据管理问题,如统一命名服务、状态同步、集群管理和配置管理等。作为一个分布式服务框架,Zookeeper采用Java编写,同时...

    zookeeper一站式学习资料

    《Zookeeper一站式学习资料》是一份全面覆盖Zookeeper基础到高级知识的学习资源包,旨在帮助初学者快速入门并深入理解Zookeeper。这份资料包含了丰富的文本资料、视频教程以及相关的实践代码,是学习分布式协调服务...

    尚硅谷大数据技术之zookeeper

    而“尚硅谷大数据技术之Zookeeper.xmind”思维导图,则是将整个Zookeeper的知识体系以图形化的形式展现出来,帮助学习者梳理知识点,形成全面的认知框架。 总的来说,这个教程提供了从理论到实践的全面学习材料,...

    dubbo+zookeeper入门资源

    【描述】"dubbo+zookeeper入门资源,可直接使用,适合新手练习使用"意味着这个压缩包包含了学习和实践这两个技术的基础材料。通过这个资源,初学者可以了解如何配置和使用Dubbo与Zookeeper来实现服务间的通信和管理...

    08_尚硅谷技术之Zookeeper(源码解析)V3.3.pdf

    Zookeeper作为分布式协调服务,其设计初衷就是为了帮助分布式系统维护数据的一致性。Zookeeper的实现基于一种被称为Paxos的算法,Paxos算法是解决分布式系统中一致性问题的一种经典算法。 Paxos算法的核心思想是...

Global site tag (gtag.js) - Google Analytics