`
哎喔别走
  • 浏览: 4985 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

ZooKeeper介绍

阅读更多

ZooKeeper是Hadoop的分布式协调服务,可以用于构建一般的分布式应用。

可以将ZooKeeper看作一个具有高可用性特征的文件系统。这个文件系统使用节点znode来组合成一个树形层次结构。znode可以存储数据及相关联的ACL,znode存储的数据被限制在1MB之内。

ZooKeeper的数据访问具有原子性,读znode数据要么全部读取,要么读取失败;同样写操作也是,要么写成功,要么写失败,不存在部分写成功的情况。

ZooKeeper通过路径被引用。例如/zoo/cat。

 

znode的类型在创建后不可修改。

znode准确来说有四种类型:

1.短暂znode:创建短暂znode的客户端在会话结束后,ZooKeeper会把它删除。

2.短暂顺序znode:短暂znode添加了顺序号。

3.持久znode:只有当客户端明确要删除时,才会删除。

4.持久顺序znode:持久znode添加了顺序号。

顺序号可以对所有事件进行全局排序,这样客户端就可以根据顺序号推断事件的顺序。可以通过顺序号实现共享锁。

 

ZooKeeper的观察机制,当znode以某种方式发生变化时,观察机制(watcher)可以让客户端得到通知。但是观察只能被触发一次,为了实现多次通知,需要重新注册所需的观察。

 

ZooKeeper中有9种基本操作:

create:创建一个znode,必须有父节点

delete:删除一个znode

exists:znode是否存在并返回元数据

getChildren:获取一个znode的子节点列表

getData:获取znode保存的数据

setData:修改znode保存的数据

getACL:获取一个znode的ACL

setACL:修改一个znode的ACL

sync:将客户端的视图与ZooKeeper的同步

ZooKeeper中的更新操作是有条件的,delete和setData需提供版本号,版本号一致才可以执行成功.

 

ZooKeeper中有一个被称为multi的操作,用于将多个操作集合成一个操作单元.类似事务的功能,可以确保这些子操作要么都成功要么都失败.

 

ZooKeeper可以在exists/getData/getChildren上设置观察。观察可以被写操作create/delete/setData触发,观察触发时产生观察事件。

  观察触发器
设置观察的操作 创建znode 创建子节点

删除znode

删除子节点 setData
exists NodeCreated   NodeDelete  

NodeDat-

aChanged

getData     NodeDelete  

NodeDat-

aChanged

getChildren  

NodeChildr-

enChanged

NodeDelete

NodeChildre-

nChanged

 

 

创建znode的时候会创建ACL列表,ZooKeeper提供了三种身份验证机制

1.Digest        通过用户名密码来识别客户端。zk.addAuthInfo("digest","user:password".getBytes())

2.sasl            通过Kerberos来识别客户端

3.IP               通过客户端Ip地址识别客户端。new ACL(Perms.READ,new IP("ip","10.0.0.1"))

ACL权限列表

ACL权限  允许的操作
create

create子节点

read getChildren/getNode
write setData
delete delete子节点
admin setACL

ZooKeeper支持第三方身份验证系统插入。

 

ZooKeeper服务有两种不同的运行模式:

1.独立模式

2.复制模式

ZooKeeper通过复制来实现高可用性,只要集合中半数以上处于可用状态,它就能提供服务(这也是推荐奇数台服务器的原因)。

 

ZooKeeper使用了Zab协议,该协议包含两个可以无限重复的阶段

1.领导者选举

2.原子广播         所有的写请求都回转发给领导者,再由领导者将更新广播给跟随者,当半数以上跟随者已经修改后,领导者才会提交这个更新。

 

ZooKeeper服务提供的一致性:

1.顺序一致性  客户端将znode的值改为a,然后又改为b,则没有客户端可以先看到b再看到a

2.原子性  每个更新操作要么全成功,要么全失败

3.单一系统映像  一个客户端连接到哪一台服务器看到的都是同样的系统视图。

4.持久性  更新一旦成功,其结果就会持久存在不会撤销

5.及时性  在客户端读取znode的值时,执行sync操作,会得到最新的值

每一个对znode树的更新都被赋予一个全局唯一的ID,称为zxid。ZooKeeper要求对所有的更新进行编号并排序,它决定了分布式系统的执行顺序。

 

每个ZooKeeper客户端的配置中都包含集合体中服务器的列表.

客户端与ZooKeeper服务器连接后,每个会话都会有一个超时的时间设置.

客户端通过ping请求(心跳)保持会话不过期.

客户端可以自动的进行故障切换.

 

较短的会话超时会较快的检测到机器的故障,但是可能出现振动现象(服务器在很短的时间内反复出现离开后又重新加入的情况).

对于创建较复杂暂时状态的应用程序,应该设置较长的会话超时.

ZooKeeper集合体中服务器越多,会话超时的设置就应该越大.

 

ZooKeeper可以实现分布式锁服务,首先指定一个作为锁的znode,希望获取锁的客户端创建一些短暂顺序的znode,顺序号最小的获取到锁。

分享到:
评论

相关推荐

    zookeeper介绍

    zookeeper概述 zookeeper安装 zookeeper结构与原理 zookeeper应用

    zookeeper介绍-ppt

    介绍了关于zookeeper的使用、原理及经典案例,可供学习参考

    Hadoop深入浅出之Zookeeper介绍.pptx

    Zookeeper 是一个分布式协调服务,源自 Google 的 Chubby 实现,是 Hadoop 生态系统中的重要组成部分。它的设计目标是解决分布式环境中的协调问题,如同步服务、配置维护和命名服务。Zookeeper 提供了一组简单的原语...

    java中的zookeeper

    `01_zookeeper介绍和应用场景.docx`、`02_使用java操作zookeeper创建节点.docx`、`03_使用java操作zk创建节点02.docx`这些文档可能涵盖了如何连接ZooKeeper服务器,创建持久节点和临时节点,以及如何监听节点变化等...

    使用ansible安装zookeeper

    **二、Zookeeper介绍** Zookeeper是由Apache基金会开发的一个开源项目,它提供了一个高可用、高性能的分布式协调服务。Zookeeper的主要功能包括命名服务、配置管理、集群同步、分布式锁等,是构建分布式系统的重要...

    ZooKeeper技术原理与应用.pptx

    ZooKeeper技术原理与应用 ZooKeeper是一种分布式协调服务,用于维护和监控存储数据状态的变化,解决分布式集群中应用程序的一致性问题。 ZooKeeper的核心是原子广播机制,保障了各个Server之间的同步。 ZooKeeper...

    Zookeeper 简介 搭建

    **Zookeeper 简介与搭建** Zookeeper 是一个分布式协调服务,由雅虎和 Apache 软件基金会共同开发,是 Hadoop 生态系统中的重要组成部分。它提供了一种集中式的服务,用于命名、配置管理、分布式同步、组服务等,常...

    zookeeper使用总结

    - **Zookeeper 介绍** Zookeeper 是一个分布式协调服务框架,旨在简化分布式应用程序的开发。它提供了一个高性能的协同工作系统,使得开发者能够专注于应用程序的核心逻辑,而无需过多关注分布式系统的复杂性。 -...

    4.zookeeper运维实战视频教程资料-详细课件笔记总结

    1.zookeeper介绍、安装方式和应用场景 2.zookeeper的单机安装和配置文件介绍 3.zookeeper的集群安装 4.zookeeper的数据结构、节点类型、数据持久化 5.zookeeper命令行相关操作 6.zookeeper的基本特性、watch监听和...

    从Paxos到Zookeeper分布式一致性原理与实践(完整版)

    4. **Zookeeper介绍**:Zookeeper是Apache的一个开源项目,它为分布式应用提供了高可用的数据存储和协调服务。书中会详细解释Zookeeper的设计目标、架构以及核心功能,如命名服务、配置管理、分布式锁等。 5. **...

    zookeeper介绍.

    zookeeper简介,方便了解zookeeper的前世今生,方便大家。

    zookeeper安装文档1

    Zookeeper 介绍 - **定义**: ZooKeeper 是一款分布式的、开源的应用程序协调服务。它最初由雅虎实验室开发,并于2008年成为Apache顶级项目。ZooKeeper 的设计目的是解决分布式环境中常见的协调问题。 - **功能**: ...

    Linux下的 Dubbo zookeeper

    1. **Zookeeper介绍** Zookeeper是由Apache基金会开发的开源项目,它提供了一种简单易用的API,用于实现分布式系统的协调。Zookeeper的主要功能包括节点创建与删除、数据发布与订阅、选举机制、分布式锁等,是构建...

    zookeeper-register-center.rar

    二、Spring Cloud Zookeeper介绍 Spring Cloud Zookeeper是Spring Cloud生态中的一个组件,它为Spring Boot应用提供了与Zookeeper集成的能力,实现了服务注册与发现。通过使用Spring Cloud Zookeeper,我们可以轻松...

    springboot_dubbo.zip

    三、Zookeeper介绍 Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终将简单易用的接口和性能高效、设计稳定...

    Zookeeper初识

    #### 三、Zookeeper介绍 ZooKeeper 是一个分布式协调服务框架,主要用于解决分布式系统中常见的协调问题。它由雅虎开发,并作为 Google 的 Chubby 的开源实现。ZooKeeper 的设计目标是简化那些容易出错的分布式一致...

Global site tag (gtag.js) - Google Analytics