一、简介

zookeeper是hadoop的一个子项目,A distribute coordination service for distributed applications 为了分布式应用而开发的分布式管理服务。多个server,少数server down不会影响整个分布式服务。

zookeeper简单而又高效的保证是:

1.顺序一致性---从client的更新会按顺序应用

2.原子性---更新要么成功要么失败。没有更新了一半这个说法。

3.可靠性---一旦更新被应用,它就会一直保持着直到下一次被更改

二、特点

zookeeper的数据模型像操作系统的文件结构,每个znode可以有子znode,并且znode可以存数据。不像文件系统是为了数据存储的,zookeeper的数据在内存中,也就是zookeeper能够获得高吞吐量和低延迟。

但ephemeral类型的znode不能有子节点。ephemeral的znode一旦和服务器失去联系,这个znode将自动删除。zookeeper的客户端和服务器采用长连接,通过心跳来保持连接。这个链接称为session,seesion失效会导致ephemeral的znode删除。

znode可以被监控,包括这个目录节点存储的数据的 修改,子节点目录的变化等,一旦变化可以通知监控的客户端,这个功能是zookeeper对于应用最重要的特性,通过这个特性可以实现配置集中管理,集群管理,分布式锁等。

三、zookeeper watches


所有的zookeeper读动作都有一个选项选择是否设置watch。getData(),getChildren(),exists()。watch的定义是:一次性触发,发送给set这个watch的client端,当这个watch的数据发生改变的时候。

One-time trigger

设置znode的watch,当znode发生改变会收到事件。除非重新设置一个watch,否则不会再收到znode改变的事件。

Sent to client

这意味着有可能因为网络的问题,发送改变已经完成,但watch event事件还没到。watch是异步到达的。

The data for which the watch was set。

这指的是一个node可以发生不同的改变方式。data watches and child watches。getData()和exists()设置data watches。getChildren()设置子节点监视。getData和exist()返回node数据,getchildren返回a list of children。

这样setData()会触发设置的znode的data watch,create()会触发创建的znode的data watch和parent node的child watch。delete() 会触发这个node的data watch和child watch,以及 parent node的child watch。

关于watch需要注意的

one-time trigger,so must set again。

因为watch是one有latency的,所以有可能在设置新的watch和得到事件之间znode发生了改变。

一个watch函数只会因为一个通知调用一次。比如:exists和getData注册了同样的watch函数,当这个node被删除的时候,只会触发一次函数。

当和server断掉时,你不会收到任何watch。所以,你要使用session events。

zookeeper 简介的更多相关文章

  1. ZooKeeper简介

    本文中,我们将对ZooKeeper进行介绍.简单地说,ZooKeeper是一个用来在构成应用的各个子服务之间进行协调的一个服务. 由于其本身并没有特别复杂的机制,因此我们将会把更多的笔墨集中在如何对Z ...

  2. Zookeeper简介与安装

    Zookeeper:A Distributed Coordination Service for Distributed Applications. 一.Zookeeper简介 众所周知,协同服务是分 ...

  3. Zookeeper简介与集群搭建

    Zookeeper简介 Zookeeper是一个高效的分布式协调服务,可以提供配置信息管理.命名.分布式同步.集群管理.数据库切换等服务.它不适合用来存储大量信息,可以用来存储一些配置.发布与订阅等少 ...

  4. Zookeeper简介与集群搭建【转】

    Zookeeper简介 Zookeeper是一个高效的分布式协调服务,可以提供配置信息管理.命名.分布式同步.集群管理.数据库切换等服务.它不适合用来存储大量信息,可以用来存储一些配置.发布与订阅等少 ...

  5. Zookeeper简介及单机、集群模式搭建

    1.zookeeper简介 一个开源的分布式的,为分布式应用提供协调服务的apache项目. 提供一个简单的原语集合,以便于分布式应用可以在它之上构建更高层次的同步服务. 设计非常易于编程,它使用的是 ...

  6. Zookeeper简介及使用

    一.Zookeeper简介 1.zookeeper简介 动物管理员 Apache ZooKeeper致力于开发和维护开源服务器,实现高度可靠的分布式协调. 2.什么是ZooKeeper? ZooKee ...

  7. ZooKeeper学习之路(一)—— ZooKeeper简介及核心概念

    一.Zookeeper简介 Zookeeper是一个开源的分布式协调服务,目前由Apache进行维护.Zookeeper可以用于实现分布式系统中常见的发布/订阅.负载均衡.命令服务.分布式协调/通知. ...

  8. ZooKeeper系列(一)—— ZooKeeper 简介及核心概念

    一.Zookeeper简介 Zookeeper 是一个开源的分布式协调服务,目前由 Apache 进行维护.Zookeeper 可以用于实现分布式系统中常见的发布/订阅.负载均衡.命令服务.分布式协调 ...

  9. Zookeeper简介及安装(一)

    1 Zookeeper入门1.1 概述Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目. 1.2 特点 1.3 数据结构 1.4 应用场景提供的服务包括:统一命名服务 ...

  10. 第1章 分布式系统概念与ZooKeeper简介

    ZooKeeper分布式专题与Dubbo微服务入门 第1章 分布式系统概念与ZooKeeper简介 1-1 zookeeper简介 1-2 什么是分布式系统 略 1-3 分布式系统的瓶颈以及zk的相关 ...

随机推荐

  1. sql.date and util.Date

    注意: 1.用 bean 接受 数据库查询的结果 sql.date 会自动转换为 util.date 2.想数据库插入date 类型,必须是要 sql.date 一.字符串 转 util.date S ...

  2. jQuery Mobile 工具栏

    jQuery Mobile 工具栏 工具栏元素常被放置于页眉和页脚中 - 以实现"已访问"的导航: 标题栏 页眉通常会包含页眉标题/LOGO 或一到两个按钮(通常是首页.选项或搜索 ...

  3. L440 无线网卡:由于该设备有问题,Windows 已将其停止(代码 43)

    最近重装了系统,本来用的好好的,结果重启之后突然无线网卡不能用了,设备管理器老是黄色叹号!无线网卡设备状态:由于该设备有问题,Windows 已将其停止. (代码 43).      无线网卡型号:2 ...

  4. H5学习系列之文件读取API--本文转自http://blog.csdn.net/jackfrued/article/details/8967667

    HTML5定义了FileReader作为文件API的重要成员用于读取文件,根据W3C的定义,FileReader接口提供了读取文件的方法和包含读取结果的事件模型. FileReader的使用方式非常简 ...

  5. 123. Best Time to Buy and Sell Stock (三) leetcode解题笔记

    123. Best Time to Buy and Sell Stock III Say you have an array for which the ith element is the pric ...

  6. cxf+spring+数字签名开发webservice(二)

    场景         上一章中的webservice接口,因为现场正式环境的项目与外部单位网络不通,是通过前置机与外部进行数据交换,所以我们将webservice部署在前置机,在使用HttpURLCo ...

  7. Q_OBJECT

    所有QObject的派生类在官方文档中都推荐在头文件中放置宏Q_OBJECT,那么该宏到底为我们做了哪些工作?在qobjectdef.h中有下面的代码: #define Q_OBJECT \ publ ...

  8. android sdk镜像站点

    http://android-mirror.bugly.qq.com:8080/include/usage.html Windows A. 打开Android SDK Manager  B. 设置代理 ...

  9. orale 函数大全[转]

    oracle函数大全 http://wenku.baidu.com/link?url=bXaGsnn8iN264GB8ec48IUPg5eRGDKAyAiSw0OBKL1I0mBVG549-2u9HT ...

  10. 使用nginx为ArcGIS Server做反向代理

    1.下载nginx软件:官网地址http://nginx.org/ 2.修改conf文件夹下nginx.conf配置信息, 配置文件中以下内容: server { listen       80; s ...