转 http://ifeve.com/zookeeper-consistency-guarantees/

本文翻译自《ZooKeeper官方指南》,译者:追云,校对:追云

一致性保障

ZooKeeper是一个高性能,可扩展的服务。虽然读比写更快,但在设计上,它的读操作和写操作都很快。(读比写更快)之所以会这样,是因为在某些“读”的情况下,ZooKeeper对更古老的数据会起作用,这反过来也是得益于ZooKeeper的一致性保障:

连续一致性

来自客户端的更新将会被应用到那些它们被发送的命令中。

原子性

更新既不会成功也不会失败——不存在部分结果。

单系统图像

一个客户端将会看到那些被它连接到的服务忽略的相同的服务视图。

可靠性

一旦一个更新被应用了,它(更新)将会从此一直存在直到一个客户端重写了更新。从这个保障可以得出两个推论:

1.如果一个客户端获得一个成功的返回码,更新将会一直被应用。在一些失败的情况下(比如连接错误,超时等)客户端将不会知道更新被应用了与否。我们对使失败(错误)降到最低采取了行动,但这个保障仅仅当返回码是正确的时侯才会出现。(这是一种在Paxos算法中被称为单调性的情况)。
2、任何通过读请求或成功更新的已被客户端看到的更新,当它处于从服务器错误中恢复的状态时(操作)将不能被回滚。

及时性

系统的客户端视图被强制性定为在一个合适的时间范围内(在命令的数十秒内)是最新的。系统的改变在这个范围内既不会被客户端看见,客户端也不会知道服务的运行中断。

使用这些一致性保障来建造一些更高级的功能,如leader选举、障碍、队列以及在ZooKeeper客户端(附件不被ZooKeeper需要)进行唯一的可撤销的锁的读/写是简单的。更多详情请见”Recipes and Solutions”。

Note
有时开发者会误以为有那么一些ZooKeeper实际上并不会保证做到的保障存在,它们是:同一时间一致的跨客户端视图

ZooKeeper并不保证在某一时刻,两个不同的客户端会接受到完全一致的ZooKeeper视图的数据。这是由一些因素导致的,如网络延迟,或客户端可能会在另一个客户端获取到改变通知之前执行一个更新。考虑一下存在两个客户端的情况,如客户端A和客户端B。如果客户端A将一个znode /a的值从0设为1,然后告诉客户端B去读/a,那么客户端B可能会因为它连接到的服务器的不同而读取到那个旧的值0.如果客户端A和B读取到相同的值是重要的,那么客户端B应该在它执行读操作之前就从ZooKeeper的API方法里调用sync()方法。

所以,ZooKeeper它本身并不保证改变是在所有服务器间同步发生的,但ZooKeeper基元(注:primitives)可以被用来建造那些提供有效客户端同步的更高级的功能。(更多详情请见“ZooKeeper Recipes”.[tbd:..])

zooKeeper_《ZooKeeper官方指南》一致性保障的更多相关文章

  1. ZooKeeper服务-一致性、实现

    实现 ZooKeeper服务有两种不同的运行模式.一种是“独立模式”(standalone mode),即只有一个ZooKeeper服务器.这种模式比较简单,适合于测试环境,但是不能保证高可用性和可恢 ...

  2. Flink 应用的一致性保障

    应用一致性保障 在Flink中,会自动做检查点,用于故障时恢复一个应用.在恢复时,application的state信息可以根据最近完成的检查点进行重建,并继续运行.不过,仅将一个applicatio ...

  3. Zookeeper——分布式一致性协议及Zookeeper Leader选举原理

    文章目录 一.引言 二.从ACID到CAP/BASE 三.分布式一致性协议 1. 2PC和3PC 2PC 发起事务请求 事务提交/回滚 3PC canCommit preCommit doCommit ...

  4. 从Paxos到Zookeeper 分布式一致性原理与实践读书心得

    一 本书作者介绍 此书名为从Paxos到ZooKeeper分布式一致性原理与实践,作者倪超,阿里巴巴集团高级研发工程师,国家认证系统分析师,毕业于杭州电子科技大学计算机系.2010年加入阿里巴巴中间件 ...

  5. 《从Paxos到ZooKeeper 分布式一致性原理与实践》读书笔记

    一.分布式架构 1.分布式特点 分布性 对等性.分布式系统中的所有计算机节点都是对等的 并发性.多个节点并发的操作一些共享的资源 缺乏全局时钟.节点之间通过消息传递进行通信和协调,因为缺乏全局时钟,很 ...

  6. 我读《从Paxos到zookeeper分布式一致性原理与实践》

    从年后拿到这本书开始阅读,到准备系统分析师考试之前,终于读完了一遍,对Zookeeper有了一个全面的认识,整本书从理论到应用再到细节的阐述,内容安排从逻辑性和实用性上都是很优秀的,对全面认识Zook ...

  7. Zookeeper的一致性协议:Zab(转)

    Zookeeper使用了一种称为Zab(Zookeeper Atomic Broadcast)的协议作为其一致性复制的核心,据其作者说这是一种新发算法,其特点是充分考虑了Yahoo的具体情况:高吞吐量 ...

  8. 《从Paxos到ZooKeeper分布式一致性原理与实践》学习笔记

    第一章 分布式架构 1.1 从集中式到分布式 集中式的特点: 部署结构简单(因为基于底层性能卓越的大型主机,不需考虑对服务多个节点的部署,也就不用考虑多个节点之间分布式协调问题) 分布式系统是一个硬件 ...

  9. Zookeeper的一致性

    转载:http://flyfoxs.iteye.com/blog/2121560 下面内容主要摘抄于<<Hadoop实战>>,红色高亮部分是本人添加的白话注释. Zookeep ...

随机推荐

  1. 通过dbf文件恢复oracle

    可能有些人会由于各种原因经常重装系统,但是系统里面总是有一些比较重要的软件在重装后就不能用了.比如oracle数据库,众所周知数据库如果通过dmp导入导出麻烦不说,还很耗时,特别是像笔者一个数据库就有 ...

  2. 【spring boot】使用注解@ConfigurationProperties读取配置文件时候 报错 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'rocketmqAutoConfiguration': Unsatisfied dependenc

    如题,配置文件如下: #注册中心配置 eureka: instance: instanceId: ${spring.application.name}:${random.int} hostname: ...

  3. 二十四种设计模式:工厂方法模式(Factory Method Pattern)

    工厂方法模式(Factory Method Pattern) 介绍定义一个用于创建对象的接口,让子类决定将哪一个类实例化.Factory Method使一个类的实例化延迟到其子类. 示例有SqlMes ...

  4. CentOS7 下安装 Lnmp 架设 Laravel

    最近在hostos上买了个香港的 vps, 装的 centos7, 在架设了 pptp vpn, 效果还行,就想顺便架设个 laravel 看看.下面是架设的过程.准备工作 更新 yum 源,自带的源 ...

  5. Spark SQL 代码简要阅读(基于Spark 1.1.0)

    Spark SQL允许相关的查询如SQL,HiveQL或Scala运行在spark上.其核心组件是一个新的RDD:SchemaRDD,SchemaRDDs由行对象组成,并包含一个描述此行对象的每一列的 ...

  6. 对Class.getResourceAsStream和ClassLoader.getResourceAsStream方法所使用的资源路径的解释

    这是个非常基础的问题了,这里提供一些演示样例,帮助高速理解和记忆这个问题. 在该方法的文档:http://docs.oracle.com/javase/7/docs/api/java/lang/Cla ...

  7. WORD中无损复制图片

    问题 默认 Ctrl+C复制出来图片图片的严重模糊,复制出来的不是原图片!因为图片尺寸被修改后复制出来的则是模糊的 解决办法 解决办法把WORD中的图片恢复成默认的,如果对图片进行了缩放请把缩放比恢复 ...

  8. 为LoadRunner写一个lr_save_float函数

    LoadRunner中有lr_save_int() 和lr_save_string() 函数,但是没有保存浮点数到变量的lr_save_float函数.<lr_save_float() func ...

  9. STL 组件

  10. git笔记之安装使用

    git是什么? 简介一下,Git是一个开源的分布式版本号控制系统,用以有效.快速的处理从非常小到非常大的项目版本号管理.Git是眼下世界上最先进的分布式版本号控制系统,没有传说中的之中的一个. Git ...