转 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. EASYUI DATAGRID加合计

    想达到的效果(计算当前展示的20条的合计数量(一言难尽)): 参考http://www.jb51.net/article/85645.htm(万分感谢该文的作者) 相关代码: function onL ...

  2. Jenkins和Docker以及Kubernetes结合考虑

    今天搞了一下Jenkins和Docker的结合,我在想几个问题: 构建是经常的,构建最大的目标还是生成一个包或者应用 发布应用也是频繁的,发布本质上是把这个包放到可运行的环境中便于测试 如果每次构建我 ...

  3. SQLAlchemy中filter()和filter_by()的区别

    1.filter引用列名时,使用“类名.属性名”的方式,比较使用两个等号“==” 2.filter_by引用列名时,使用“属性名”,比较使用一个等号“=” 3.在使用多条件匹配的时候,filter需要 ...

  4. jquery ajax 不执行赋值,return没有返回值的解决方法

    大家先看一段简单的jquery ajax 返回值的js 复制代码 代码如下: function getReturnAjax{ $.ajax({ type:"POST", url:& ...

  5. C/C++中的格式化字符

    格式化输出函数包括printf, fprintf, sprintf等等. 格式化输入函数包括scanf, fscanf, sscanf等等. 这类函数在输入输出的时候都有一个参数为格式化字符串(for ...

  6. nginx最大并发连接数的思考:worker_processes、worker_connections、worker_rlimit_nofile

    参考nginx官网:http://nginx.org/en/docs/ngx_core_module.html#worker_connections 从用户的角度,http 1.1协议下,由于浏览器默 ...

  7. Linux下inotify的基本使用及注意事项

    最近在写一个云备份的项目,其中有一个模块是要监控计算机本地的文件,于是我翻了翻linux/unix系统编程手册发现了inotify这个用于文件监控的框架 1.概述 1)inotify机制可用于监控文件 ...

  8. 预防U盘被病毒侵害的方法

    写在前面:此方法只能杜绝自己的u盘免收侵害,而不能杜绝自己的电脑免收其他u盘病毒的侵害,如果想知道如何让自己的电脑防止被u盘病毒侵害,可以阅读此文章:https://www.cnblogs.com/t ...

  9. 提升JavaScript递归效率:Memoization技术详解[转载]

    递归是拖慢脚本运行速度的大敌之一,太多的递归会让浏览器变得越来越慢直到死掉或者莫名其妙的突然自动退出.这里我们可以通过memoization技术来替代函数中太多的递归调用,提升JavaScript效率 ...

  10. ms sql 在任何位置 添加列

    摘自: http://bbs.csdn.net/topics/40236129 在任何位置插入列:create proc addcolumn@tablename varchar(30),  --表名@ ...