我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:2019年全年资料内部公开36码 > 强一致性 >

ZooKeeper和CAP理论及一致性原则

归档日期:07-24       文本归类:强一致性      文章编辑:爱尚语录

  在分布式环境中,一致性是指数据在多个副本之间是否能够保持数据一致的特性。在一致性的需求下,当一个系统在数据一致的状态下执行更新操作后,应该保证系统的数据仍然处于一致的状态。例如一个将数据副本分布在不同分布式节点上的系统来说,如果对第一个节点的数据进行了更新操作并且更新成功后,其他节点上的数据也应该得到更新,并且所有用户都可以读取到其最新的值,那么这样的系统就被认为具有强一致性(或严格的一致性,最终一致性)。

  可用性是指系统提供的服务必须一直处于可用的状态,对于用户的每一个操作请求总是能够在有限的时间内返回结果。“有效的时间内”是指,对于用户的一个操作请求,系统必须能够在指定的时间(即响应时间)内返回对应的处理结果,如果超过了这个时间范围,那么系统就被认为是不可用的。

  “返回结果”是可用性的另一个非常重要的指标,它要求系统在完成对用户请求的处理后,返回一个正常的响应结果。正常的响应结果通常能够明确的反映出对请求的处理结果,即成功或失败,而不是一个让用户感到困惑的返回结果。

  分区容错性约束了一个分布式系统需要具有如下特性:分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供满足一致性和可用性的服务,除非是整个网络环境都发生了故障。

  网络分区是指在分布式系统中,不同的节点分布在不同的子网络(机房或异地网络等)中,由于一些特殊的原因导致这些子网络之间出现网络不连通的状况,但各个子网络的内部网络是正常的,从而导致整个系统的网络环境被切分成了若干个孤立的区域。需要注意的是,组成一个分布式系统的每个节点的加入与退出都可以看作是一个特殊的网络分区。

  由于一个分布式系统无法同时满足上面的三个需求,而只能满足其中的两项,因此在进行对CAP定理的应用的时候,需要根据业务的要求抛弃其中的一项,下表所示是抛弃CAP定理中任意一项特性的场景说明。

  因此,将精力浪费在思考如何设计能满足三者的完美系统上是愚钝的,应该根据应用场景进行适当取舍。

  一致性是指从系统外部读取系统内部的数据时,在一定约束条件下相同,即数据变动在系统内部各节点应该是同步的。根据一致性的强弱程度不同,可以将一致性的分类为如下几种:

  强一致性:(strong consistency)。任何时刻,任何用户都能读取到最近一次成功更新的数据。

  单调一致性:(monotonic consistency)。任何时刻,任何用户一旦读到某个数据在某次更新后的值,那么就不会再读到比这个值更旧的值。也就是说,可获取的数据顺序必是单调递增的。

  会话一致性:(session consistency)。任何用户在某次会话中,一旦读到某个数据在某次更新后的值,那么在本次会话中就不会再读到比这值更旧的值,会话一致性是在单调一致性的基础上进一步放松约束,只保证单个用户单个会话内的单调性,在不同用户或同一用户不同会话间则没有保障。

  最终一致性:(eventual consistency)。用户只能读到某次更新后的值,但系统保证数据将最终达到完全一致的状态,只是所需时间不能保障。

  弱一致性:(weak consistency)。用户无法在确定时间内读到最新更新的值。

  顺序一致性:来自任意特定客户端的更新都会按其发送顺序被提交保持一致。也就是说,如果一个客户端将Znode z的值更新为a,在之后的操作中,它又将z的值更新为b,则没有客户端能够在看到z的值是b之后再看到值a(如果没有其他对z的更新)。

  原子性:每个更新要么成功,要么失败。这意味着如果一个更新失败,则不会有客户端会看到这个更新的结果。

  单一系统映像:一个客户端无论连接到哪一台服务器,它看到的都是同样的系统视图。这意味着,如果一个客户端在同一个会话中连接到一台新的服务器,它所看到的系统状态不会比 在之前服务器上所看到的更老。当一台服务器出现故障,导致它的一个客户端需要尝试连接集合体中其他的服务器时,所有滞后于故障服务器的服务器都不会接受该 连接请求,除非这些服务器赶上故障服务器。

  持久性:一个更新一旦成功,其结果就会持久存在并且不会被撤销。这表明更新不会受到服务器故障的影响。

  实时性:在特定的一段时间内,客户端看到的系统需要被保证是实时的(在十几秒的时间里)。在此时间段内,任何系统的改变将被客户端看到,或者被客户端侦测到。

  这三个基本需求,最多只能同时满足其中的两项,因为P是必须的,因此往往选择就在CP或者AP中。

  不能保证每次服务请求的可用性。任何时刻对ZooKeeper的访问请求能得到一致的数据结果,同时系统对网络分割具备容错性;但是它不能保证每次服务请求的可用性(注:也就是在极端环境下,ZooKeeper可能会丢弃一些请求,消费者程序需要重新请求才能获得结果)。所以说,ZooKeeper不能保证服务可用性。

  进行leader选举时集群都是不可用。在使用ZooKeeper获取服务列表时,当master节点因为网络故障与其他节点失去联系时,剩余节点会重新进行leader选举。问题在于,选举leader的时间太长,30 ~ 120s, 且选举期间整个zk集群都是不可用的,这就导致在选举期间注册服务瘫痪,虽然服务能够最终恢复,但是漫长的选举时间导致的注册长期不可用是不能容忍的。所以说,ZooKeeper不能保证服务可用性。

  CAP定理指出,在一个分布式系统中,对于一致性、可用性、分区容错这三个特性,不可能同时满足,而是必须有所舍弃。我们设计分布式系统时,必须在三者之间(尤其是一致性和可用性之间)有所取舍和平衡。作者:王克...博文来自:

  分布式事务跟集中式事务相比,分布式事务存在着更大的挑战。博文来自:技术小站

  CAP理论:一个分布式系统不可能满足一致性(consistency)、可用性(Availability)、分区容错性(Partitiontolerance)这三个基本需求。1、一致性可分为:(参考Zo...博文来自:BiggerLee的博客

  一、cap分布式领域中存在CAP理论,且该理论已被证明:任何分布式系统只可同时满足两点,无法三者兼顾。①C:Consistency,一致性,数据一致更新,所有数据变动都是同步的。②A:Avai...博文来自:arthur.dy.lee的专栏

  著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。在此Zookeeper保证...博文来自:weixin_33929309的博客

  分布式环境中大多数服务是允许部分失败,也允许数据不一致,但有些最基础的服务是需要高可靠性,高一致性的,这些服务是其他分布式服务运转的基础,比如namingservice、分布式lock等,这些分布式的...博文来自:走向架构师之路

  zookeeper与eureka对比著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间...博文来自:工学院的博客

  本文作者通过ZooKeeper与Eureka作为Service发现服务的优劣对比,分享了Knewton在云计算平台部署服务的经验。本文虽然略显偏激,但是看得出Knewton在云平台方面是非常有经验的,...博文来自:whereismatrix的专栏

  zookeeper作为构建复杂系统的基础,本身要求具备高效、可靠。具备以下特性:1、高效适用于大型的分布式系统.如果写多的话性能不高,因为它要做所有节点之间的数据同步。2、可靠支持集群,大部分可用即服...博文

  前言ZooKeeper是一个开源的分布式协调服务,由雅虎创建,是GoogleChubby的开源实现。分布式应用程序可以基于ZooKeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知...博文来自:qiangcuo6087的博客

  众所周知,zookeeper是一个开源的分布式协调服务,很多分布式的应用都是基于zookeeper来实现分布式锁,服务管理,服务发现,通知订阅等功能。那么。zookeeper自身是如何在分布式环境下实...博文来自:q的博客

  说明:以下内容总结自网络1.CAP原理要想数据高可用,就得写多份数据写多分数据就会导致数据一致性问题数据一致性问题会引起性能问题2.一致性模型弱一致性最终一致性(一段时间达到一致性)强一致1、2异步冗...博文来自:followMyInclinations的专栏

  一、CAP理论概述分布式领域中存在CAP理论,且该理论已被证明:任何分布式系统只可同时满足两点,无法三者兼顾。①C:Consistency,一致性,数据一致更新,所有数据变动都是同步的。②A:...博文来自:I want to know a little more.

  场景一有这样一个场景:系统中有大约100w的用户,每个用户平均有3个邮箱账号,每隔5分钟,每个邮箱账需要收取100封邮件,最多3亿份邮件需要下载到服务器中(不含附件和正文)。用20台机器划分计算的压力...博文来自:gs80140的专栏

  那年的笔试面试题,面试经验总结和干货发放博文来自:Mingrenjiuwei的博客

  转自:分布式系统的基本问题:可用性与一致性 背景可用性(Availability)和一致...博文来自:AAA821的专栏

  一、CAP原理一个分布式系统最多只能同时满足一致性(Consistency),可用性(Availability)和分区容错性(Partitiontolerance)这三项中的两项。(1)一致性(Con...博文来自:ZCC的专栏

  CAP原理(CAPTheorem)在足球比赛里,一个球员在一场比赛中进三个球,称之为帽子戏法(Hat-trick)。在分布式数据系统中,也有一个帽子原理(CAPTheorem),不过此帽子非彼帽子。C...博文来自:半道出家的和尚

  zookeeper本身支持单机部署和集群部署,生产环境建议使用集群部署,因为集群部署不存在单点故障问题,并且zookeeper建议部署的节点个数为奇数个,只有超过一半的机器不可用整个zk集群才不可用。...博文来自:zhaoyangjian724的专栏

  在足球比赛里,一个球员在一场比赛中进三个球,称之为帽子戏法(Hat-trick)。在分布式数据系统中,也有一个帽子原理(CAPTheorem),不过此帽子非彼帽子。CAP原理中,有三个要素:一致性(C...博文来自:raiet

  前段时间,学习分布式网络架构时,总是会看到一个CAP原则,设计分布式架构时,这个原则只能满足其中两个条。但对这个东西没有理解,今天试着理下。     CAP原则是指的是在一个分布式系统中,Consis...博文来自:kyo_san的博客

  【编者的话】本文作者通过ZooKeeper与Eureka作为Service发现服务(注:WebServices体系中的UDDI就是个发现服务)的优劣对比,分享了Knewton在云计算平台部署服务的经验...博文来自:专注

  ZooKeeper是个集群,内部有多个server,每个server都可以连接多个client,每个client都可以修改server中的数据ZooKeeper可以保证每个server内的数据完全一致...博文来自:格色情调的博客

  Zookeeper系列,会从分布式一致性理论开始介绍,设计诸如:CAP,BASE理论,分布式一致性算法:2PC,3PC,Paxos,ZAB以及Zookeeper的节点特性,Zookeeper如何保证一...博文来自:怕什么真理无穷, 进一寸有一寸的欢喜

  1.Zookeeper的核心是原子广播,这个机制保证了各个Server之间的同步(数据最新,一致性)。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复(选主)模式和广播(同步)模...博文来自:weixin_41436619的博客

  本文转载自:Sunddenly(⊙_⊙)一、CAP理论概述分布式领域中存在CAP理论,且该理论已被证明:任何分布式系统只可同时满足两点,无法三者兼顾。①C:Consistency,一致性,数据一致...博文来自:IT云清

  印象中CAP理论开始流行是从AmazonDynamo的论文开始的,Amazon的CTO还在他的博客中介绍了最终一致性的概念,从此以后,各种会议和交流中都少不了CAP的影子。然而,对于分布式系统工程设计...博文来自:yiihsia的博客

  CAP,BASE和最终一致性是NoSQL数据库存在的三大基石。而五分钟法则是内存数据存储的理论依据。这个是一切的源头。CAP  C: Consistency一致性A: Availability可用性(...博文来自:点火三周的专栏

  网上的介绍纷繁凌乱,这里我写下自己对于cap的理解首先,CAP理论描述的对象是一个分布式系统,其中C:从客户端来的读请求访问任何一个分布式系统节点,一定能读到最近的一次写请求的结果A:访问任何一个还存...博文来自:DivineDm的博客

  Eureka在之前已经操作配置过了,现在告一段落,现在来说说Eureka和Zookeeper的区别SpringCloud在现在的版本其实也可以使用Zookeeper来进行服务注册的。那他们的区别在哪里...博文来自:程序员

  Zookeeper使用了一种称为Zab(ZookeeperAtomicBroadcast)的协议作为其一致性复制的核心,据其作者说这是一种新发算法,其特点是充分考虑了Yahoo的具体情况:高吞吐量、低...博文来自:老码农的专栏

  CAP,BASE和最终一致性是NoSQL数据库存在的三大基石。而五分钟法则是内存数据存储了理论依据。这个是一切的源头。CAPC: Consistency一致性A: Availability可用性(指的...博文来自:hanhuili的专栏

  Eureka介绍:Eureka是一个服务注册中心,它将所有可以提供的服务都注册到它这里进行一个管理,其他调用者需要调用的时候,就从这个服务中心去获取,然后进行调用,这样就可以很好的避免了服务之间的一个...博文来自:weixin_33883178的博客

  2P/3P提交(为了保证事务的ACID) 2P就是二段提交(RDBMS经常就这种机制,保证强一致性),3P就是三段提交;2P提交--1阶段:提交事务请求(投票阶段)       2P提交--2阶段:...博文来自:cxw0的博客

  著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)、和P...博文来自:xxxcyzyy的博客

  最近一年来一直在关注微服务系列,而它必不可缺少的组件就是注册中心。目前市面上辣么可以作为注册中心组件,那该如何选型? 特性 Consul zooKeeper ...博文来自:布道

  本文作者通过ZooKeeper与Eureka作为Service发现服务(注:WebServices体系中的UDDI就是个发现服务)的优劣对比,分享了Knewton在云计算平台部署服务的经验。本文虽然略...博文来自:码农的世界你不懂

本文链接:http://ravynhart.com/qiangyizhixing/387.html