《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:..])

转载自 并发编程网 - ifeve.com

时间: 2024-10-06 17:34:55

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

ZooKeeper的一致性算法赏析

1 ZAB介绍 ZAB协议全称就是ZooKeeper Atomic Broadcast protocol,是ZooKeeper用来实现一致性的算法,分成如下4个阶段. 先来解释下部分名词 electionEpoch:每执行一次leader选举,electionEpoch就会自增,用来标记leader选举的轮次 peerEpoch:每次leader选举完成之后,都会选举出一个新的peerEpoch,用来标记事务请求所属的轮次 zxid:事务请求的唯一标记,由leader服务器负责进行分配.由2部分

《ZooKeeper官方指南》ZooKeeper 使用 ACL 进行访问控制

原文链接 译者:Thor_liu ZooKeeper 使用 ACL 进行访问控制 ZooKeeper使用ACL来控制访问其znode(ZooKeeper的数据树的数据节点).ACL的实现方式非常类似于UNIX文件的访问权限:它采用访问权限位 允许/禁止 对节点的各种操作以及能进行操作的范围.不同于UNIX权限的是,ZooKeeper的节点不局限于 用户(文件的拥有者),组和其他人(其它)这三个标准范围.ZooKeeper不具有znode的拥有者的概念.相反,ACL指定id集以及与之对应的权限.

浅谈分布式系统的基本问题:可用性与一致性

该文章来自于阿里巴巴技术协会(ATA)精选文章. 背景         可用性(Availability)和一致性(Consistency)是分布式系统的基本问题,先有著名的CAP理论定义过分布式环境下二者不可兼得的关系,又有神秘的Paxos协议号称是史上最简单的分布式系统一致性算法并获得图灵奖,再有开源产品ZooKeeper实现的ZAB协议号称超越Paxos,它们之间究竟有什么联系?在网络上没有文章将其清楚地阐述过,于是想到把自己对CAP理论.Paxos协议以及ZAB协议的理解整理成短文,但我

ZooKeeper编程指导

原文链接  译者:zivyu 简介 对于想要利用ZooKeeper的协调服务来创建一个分布式应用的开发人员来说,这篇文章提供了指导.包含了一些概念和实际性操作的信息. 这篇文章的前四个章节介绍了各种ZooKeeper的概念,这对理解ZooKeeper是怎么工作的是必须的.没有包含源代码,但是它假设你对分布式处理有关的问题比较熟悉.这四个章节是: ZooKeeper数据模型 ZooKeeper 会话 ZooKeeper Watches 一致性保证 随后的四个章节提供了实际的编程信息,他们是: 构建

跟着实例学习ZooKeeper的用法: 计数器

这一篇文章我们将学习使用Curator来实现计数器. 顾名思义,计数器是用来计数的, 利用ZooKeeper可以实现一个集群共享的计数器. 只要使用相同的path就可以得到最新的计数器值, 这是由ZooKeeper的一致性保证的.Curator有两个计数器, 一个是用int来计数,一个用long来计数. SharedCount 这个类使用int类型来计数. 主要涉及三个类. SharedCount SharedCountReader SharedCountListener SharedCount

Zookeeper笔记(一)初识Zookeeper

为什么需要Zookeeper Zookeeper是一个典型的分布式数据一致性的解决方案, 分布式应用程序可以基于它实现诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知.集群管理.Master选举.分布式锁和分布式队列等功能. 在解决分布式数据一致性上,Zookeeper已经成为了目前唯一一个比较成熟的方案. Zookeeper致力于提供一个高性能.高可用,且具有严格的顺序访问控制能力的分布式协调服务. 设计目标 简单的数据结构 冗余,可以构建集群 有序访问 高性能 系统角色 Zookee

云存储的黑暗面:元数据保障

本文主旨并非阐述一个可用的架构设计,而是展示出对象存储的元数据保障中将会遇到的问题.问题往往比答案更重要.多数问题只要认识清楚,解决并非难事.但需要注意的是,没有哪个问题存在十全十美的彻底解决方案.我们所采取的策略更多的是将一个关键性问题转化成另一个次要和易于处理的问题,或者将一个问题发生的可能性尽可能降低.很多问题是无法彻底解决的,我们的现实目标是将其发生的概率下降到业务可接受的范围.因此,希望大家能够更多地关注和发掘所存在的问题,而不是紧盯方案和设计.我们相信,认清了问题之后,找到解决办法并

仿药巨头TEVA的药品一致性秘诀 数据分析方法构建溶出度数据模型

ZD至顶网CIO与应用频道 06月30日 北京消息:自2015年下半年以来,关于仿制药一致性评价相关政策密集出台,关于仿制药的质量问题已经成为当前需要立即解决的问题.在TEVA,工程师通过使用JMP在QbD(质量源于设计)和产品质量保证上使用了大量的统计分析.DOE和数据建模等统计分析方法,加速产品研发和品质保证 一. 溶出度是固体制剂的关键性评价指标和基础 自从2015年下半年以来,关于仿制药一致性评价相关政策密集出台,关于仿制药的质量问题已经成为我们当前需要立即解决的问题.所谓仿制药一致性评

Zookeeper的功能以及工作原理 (转自:http://www.cnblogs.com/felixzh/p/5869212.html)

1.ZooKeeper是什么?ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作.最终,将简单易用的接口和性能高效.功能稳定的系统提供给用户 2.ZooKeeper提供了什么? 1)文件系统 2)通知机制 3.Zookeeper文件系统 每个子目录项如 NameService 都被称作为znode,和文件系统一样,我们能够自由的增加.删除znode,在一个